FastMCP Server
A production-ready MCP server with demo tools (calculator, web search, web fetch) and a Playground UI for interactive testing.
README
FastMCP Server
Production-ready Model Context Protocol server built on top of FastMCP. It exposes a set of demo tools (calculator, web search, web fetch) and ships with a Playground UI for interactive testing.
Features
- ๐ Powered by FastMCP's high-level MCP abstractions
- ๐ง Decorator-based tool registration with automatic schema generation
- ๐งช Comprehensive pytest suite with in-memory FastMCP client tests
- ๐ฅ๏ธ Web playground for exercising tools without writing a client
- ๐งพ PDF generation from HTML/Markdown templates with pluggable rendering engines
- โ๏ธ Environment-driven configuration for tool toggles and timeouts
Quick Start
-
Install dependencies
pip install -r requirements.txt -
Configure environment
cp .env.example .env # Edit .env to suit your environment -
Run the MCP server (choose either command)
# Using Python directly python -m src.server # Or via the FastMCP CLI (adds uvicorn/stdio helpers) fastmcp run src/server.py -
Launch the Playground UI (optional)
python start_playground.py # Open http://localhost:8080
LangChain SSE Verification
export MCP_BEARER_TOKEN=jango
fastmcp run src/server.py --transport sse --host 0.0.0.0 --port 8080
In another terminal:
# Stream the MCP handshake and keep-alive frames
curl -N -H "Authorization: Bearer jango" http://localhost:8080/mcp/stream | head
# Invoke the calculator tool over HTTP
curl -X POST http://localhost:8080/tools/calculator/call \
-H "Authorization: Bearer jango" \
-H "Content-Type: application/json" \
-d '{"arguments":{"expression":"6*7"}}'
The SSE stream should emit data: {...} frames for the initialize result, the tools/list payload, and periodic ping messages. The calculator call should return JSON containing "result": "42".
Adding New Tools
Tools are plain Python functions decorated with @mcp.tool. Schemas are inferred from type hints and default values.
# src/server.py
from fastmcp import Context
from src.server import mcp
@mcp.tool(name="greet", description="Return a friendly greeting")
def greet(name: str, excited: bool = False) -> str:
message = f"Hello, {name}!"
return message.upper() if excited else message
Set MCP_ENABLED_TOOLS_CONFIG in .env to control which tools are registered at import time.
PDF Generation Tool
The pdf.generate tool renders PDF documents from HTML or Markdown templates:
- Provide a
templatestring and optionalvariables(dict or JSON string) for templating via Jinja2. - Pick
content_type="markdown"to auto-convert Markdown into HTML before rendering. - Choose a rendering engine with the
engineparameter:weasyprint(default) โ install withpip install weasyprintand ensure Cairo/Pango system libraries are available.wkhtmltopdfโ install withpip install pdfkitand thewkhtmltopdfbinary on your PATH.
- Set
output_format="base64"to receive the PDF bytes inline, or"path"withoutput_pathto write to disk (defaults toplayground/generated_pdfs/).
Markdown support relies on the markdown package (pip install markdown). If an engine dependency is missing, the tool returns a helpful error message instead of failing silently.
Testing
pytest tests/
Documentation
how-to-use.mdโ end-to-end usage guidedocs/โ extended documentation on configuration, deployment, testing, and the playground
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.