Skip to main content
Glama

Hello World MCP FastAPI Endpoint

by bankszach
README.md3.04 kB
# Hello World MCP FastAPI Endpoint This project exposes a minimal [Model Context Protocol](https://modelcontextprotocol.io/) server backed by FastAPI. It registers both a resource and a tool that respond with a “Hello World” message so you can validate your MCP client integration end-to-end. ## Setup ```bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Running the server ```bash uvicorn app:app --reload --port 8080 ``` The readiness probe is available at `http://127.0.0.1:8080/`, the health endpoint at `http://127.0.0.1:8080/healthz`, and the MCP streamable HTTP endpoint is mounted at `http://127.0.0.1:8080/mcp`. ### Trying it from an MCP client Point your MCP-compatible LLM or SDK at `http://127.0.0.1:8080/mcp`. You should see: - `resource://hello` returning `"Hello from the Model Context Protocol!"` - `say_hello` tool returning a greeting. These serve as a starting point for wiring up richer resources and tools. ## Run with Docker (single command) ```bash docker compose up --build ``` The server will be reachable on `http://127.0.0.1:8080/` (and `/healthz`) after the build completes. ## MCP (Streamable HTTP) - Endpoint: `https://<service>/mcp` - CORS: Exposes `Mcp-Session-Id` header for browser clients (Agent Builder). ### Tools - `ping() -> "pong"` - `server_time(fmt?: string) -> string` (UTC) - `echo(text: string) -> string` ### Quick checks ```bash # 1) Handshake (should return Mcp-Session-Id) curl -i https://<service>/mcp # 2) List tools (replace $SID with header from step 1) SID=<paste-session-id> curl -s -H "Content-Type: application/json" -H "Mcp-Session-Id: $SID" \ -X POST --data '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \ https://<service>/mcp ``` ### Agent Builder - MCP node URL: `https://<service>/mcp` - Auth: None - After connect, tools `ping`, `server_time`, `echo` should be selectable. ## MCP (Streamable HTTP) Endpoint: `https://<service>/mcp` (no trailing slash required) ### Tools - ping() -> "pong" - server_time(fmt?: string) -> string (UTC) - echo(text: string) -> string - date_math(expr: string) -> string (UTC). Examples: "+2h", "-15m", "+1d 30m" ### Verify via curl ```bash # 1) Handshake — should return Mcp-Session-Id header curl -i https://<service>/mcp # 2) Save session id and list tools SID=$(curl -sI https://<service>/mcp | awk -F': ' '/^Mcp-Session-Id:/ {print $2}' | tr -d '\r') curl -s -H "Content-Type: application/json" -H "Mcp-Session-Id: $SID" \ -X POST --data '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \ https://<service>/mcp | jq . # 3) Call a tool curl -s -H "Content-Type: application/json" -H "Mcp-Session-Id: $SID" \ -X POST --data '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"date_math","arguments":{"expr":"+2h"}}}' \ https://<service>/mcp | jq . ``` ### Agent Builder - Node type: MCP - URL: `https://<service>/mcp` - Transport: Streamable HTTP - Auth: None - Click Connect → tools should list: ping, server_time, echo, date_math

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bankszach/mcp-date-and-time'

If you have feedback or need assistance with the MCP directory API, please join our Discord server