Skip to main content
Glama

FastAPI MCP Server

by bankszach

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:

{ "type": "object", "properties": { "format": { "type": "string", "description": "strftime format, e.g. %Y-%m-%dT%H:%M:%SZ" } }, "required": [] }

Output structuredContent:

{ "iso": "2025-01-01T00:00:00Z", "formatted": "optional if format passed" }

Local Dev

python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt uvicorn app:app --reload --port 8000

Test:

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):

./deploy.sh # Set PROJECT_ID, REGION, SERVICE (or export them)

Option 2 — via Cloud Build pipeline:

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

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

A minimal MCP server that provides current time functionality with optional formatting. Designed for production deployment on Google Cloud Run with proper JSON-RPC 2.0 implementation.

  1. Features
    1. Endpoints
      1. Tool
        1. get_time
      2. Local Dev
        1. Deploy to Google Cloud Run
          1. Wire into OpenAI Agent Builder
            1. License

              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