Skip to main content
Glama

FastAPI MCP Server

by bankszach
README.md2.33 kB
# FastAPI MCP Server (Single Tool) A minimal, production-ready **MCP server** implemented with **FastAPI** and deployable to **Google Cloud Run**. It exposes a single tool `get_time` via the OpenAI **Model Context Protocol (MCP)** using JSON‑RPC 2.0 over HTTP. ## Features - `tools/list` and `tools/call` implemented exactly to spec - Returns **content** (text for humans) and **structuredContent** (JSON for machines) - Proper JSON‑RPC error codes and input validation with `jsonschema` - CORS enabled (dev) + optional API key auth via `x-api-key` - Health check (`/healthz`) and simple request logging - Dockerfile and one‑command Cloud Run deploy ## Endpoints - `POST /` — JSON‑RPC 2.0 endpoint for `tools/list` and `tools/call` - `GET /healthz` — returns `{ "ok": true }` ## Tool ### `get_time` **Description:** Returns the current UTC timestamp, optionally formatted. **Input schema:** ```json { "type": "object", "properties": { "format": { "type": "string", "description": "strftime format, e.g. %Y-%m-%dT%H:%M:%SZ" } }, "required": [] } ``` **Output structuredContent:** ```json { "iso": "2025-01-01T00:00:00Z", "formatted": "optional if format passed" } ``` ## Local Dev ```bash python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt uvicorn app:app --reload --port 8000 ``` Test: ```bash curl -s localhost:8000/ -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | jq curl -s localhost:8000/ -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_time","arguments":{"format":"%Y-%m-%dT%H:%M:%SZ"}}}' | jq ``` If you set `API_KEY=secret`, include a header: `-H 'x-api-key: secret'` ## Deploy to Google Cloud Run Option 1 — from source (simplest): ```bash ./deploy.sh # Set PROJECT_ID, REGION, SERVICE (or export them) ``` Option 2 — via Cloud Build pipeline: ```bash gcloud builds submit --project $PROJECT_ID --substitutions=_REGION=us-central1,_SERVICE=mcp-clock ``` ## Wire into OpenAI Agent Builder - Add a new **MCP Server** to your agent - **Server URL**: your Cloud Run URL (e.g. `https://mcp-clock-xxxx-uc.a.run.app`) - **Label**: `clock` - **Allowed tools**: `get_time` (or leave empty to allow all) ## License MIT

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/fastapi-mcp'

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