Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions ptp-mcp-server/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
from mcp.server.fastmcp import FastMCP
from starlette.applications import Starlette
from mcp.server.sse import SseServerTransport
from starlette.requests import Request
from starlette.responses import HTMLResponse
from starlette.routing import Mount, Route
from mcp.server import Server
import uvicorn

mcp = FastMCP("ptp-health-agent")

@mcp.tool()
async def get_status(name: str) -> str:
return f"✅ Hi {name}, your PtP Health Agent is working!"

async def homepage(request: Request) -> HTMLResponse:
return HTMLResponse("<h1>PtP MCP Server is Running</h1>")

def create_starlette_app(mcp_server: Server, *, debug: bool = False) -> Starlette:
sse = SseServerTransport("/messages/")

async def handle_sse(request: Request) -> None:
async with sse.connect_sse(
request.scope,
request.receive,
request._send,
) as (read_stream, write_stream):
await mcp_server.run(
read_stream,
write_stream,
mcp_server.create_initialization_options(),
)

return Starlette(
debug=debug,
routes=[
Route("/", endpoint=homepage),
Route("/sse", endpoint=handle_sse),
Mount("/messages/", app=sse.handle_post_message),
],
)

if __name__ == "__main__":
mcp_server = mcp._mcp_server
starlette_app = create_starlette_app(mcp_server, debug=True)
uvicorn.run(starlette_app, host="0.0.0.0", port=8080)