fastmcp
Build, test, inspect, install, and deploy MCP servers with FastMCP in Python. Use when creating a new MCP server, wrapping an API or database as MCP tools, exposing resources or prompts, or preparing
Build, test, inspect, install, and deploy MCP servers with FastMCP in Python. Use when creating a new MCP server, wrapping an API or database as MCP tools, exposing resources or prompts, or preparing
Real data. Real impact.
Emerging
Developers
Per week
Excellent
Skills give you superpowers. Install in 30 seconds.
Build MCP servers in Python with FastMCP, validate them locally, install them into MCP clients, and deploy them as HTTP endpoints.
Use this skill when the task is to:
Use
native-mcp when the server already exists and only needs to be connected to Hermes. Use mcporter when the goal is ad-hoc CLI access to an existing MCP server instead of building one.
Install FastMCP in the working environment first:
pip install fastmcp fastmcp version
For the API template, install
httpx if it is not already present:
pip install httpx
templates/api_wrapper.py - REST API wrapper with auth header supporttemplates/database_server.py - read-only SQLite query servertemplates/file_processor.py - text-file inspection and search serverscripts/scaffold_fastmcp.py - copy a starter template and replace the server name placeholderreferences/fastmcp-cli.md - FastMCP CLI workflow, installation targets, and deployment checksChoose the narrowest useful surface area first:
Prefer a thin server with good names, docstrings, and schemas over a large server with vague tools.
Copy a template directly or use the scaffold helper:
python ~/.hermes/skills/mcp/fastmcp/scripts/scaffold_fastmcp.py \ --template api_wrapper \ --name "Acme API" \ --output ./acme_server.py
Available templates:
python ~/.hermes/skills/mcp/fastmcp/scripts/scaffold_fastmcp.py --list
If copying manually, replace
__SERVER_NAME__ with a real server name.
Start with
@mcp.tool functions before adding resources or prompts.
Rules for tool design:
Good tool examples:
get_customersearch_ticketsdescribe_tablesummarize_text_fileWeak tool examples:
runprocessdo_thingAdd
@mcp.resource when the client benefits from fetching stable read-only content such as schemas, policy docs, or generated reports.
Add
@mcp.prompt when the server should provide a reusable prompt template for a known workflow.
Do not turn every document into a prompt. Prefer:
Use the FastMCP CLI for local validation:
fastmcp inspect acme_server.py:mcp fastmcp list acme_server.py --json fastmcp call acme_server.py search_resources query=router limit=5 --json
For fast iterative debugging, run the server locally:
fastmcp run acme_server.py:mcp
To test HTTP transport locally:
fastmcp run acme_server.py:mcp --transport http --host 127.0.0.1 --port 8000 fastmcp list http://127.0.0.1:8000/mcp --json fastmcp call http://127.0.0.1:8000/mcp search_resources query=router --json
Always run at least one real
fastmcp call against each new tool before claiming the server works.
FastMCP can register the server with supported MCP clients:
fastmcp install claude-code acme_server.py fastmcp install claude-desktop acme_server.py fastmcp install cursor acme_server.py -e .
Use
fastmcp discover to inspect named MCP servers already configured on the machine.
When the goal is Hermes integration, either:
~/.hermes/config.yaml using the native-mcp skill, orFor managed hosting, Prefect Horizon is the path FastMCP documents most directly. Before deployment:
fastmcp inspect acme_server.py:mcp
Make sure the repo contains:
requirements.txt or pyproject.tomlFor generic HTTP hosting, validate the HTTP transport locally first, then deploy on any Python-compatible platform that can expose the server port.
Use when exposing a REST or HTTP API as MCP tools.
Recommended first slice:
Implementation notes:
Start from
templates/api_wrapper.py.
Use when exposing safe query and inspection capabilities.
Recommended first slice:
list_tablesdescribe_tableImplementation notes:
SELECT SQL in early versionsStart from
templates/database_server.py.
Use when the server needs to inspect or transform files on demand.
Recommended first slice:
Implementation notes:
Start from
templates/file_processor.py.
Before handing off a FastMCP server, verify all of the following:
fastmcp inspect <file.py:mcp> succeedsfastmcp list <server spec> --json succeedsfastmcp callInstall the package in the active environment:
pip install fastmcp fastmcp version
fastmcp inspect failsCheck that:
<file.py:object>Run:
fastmcp list server.py --json fastmcp call server.py your_tool_name --json
This usually exposes naming mismatches, missing required arguments, or non-serializable return values.
The server-building part may be correct while the Hermes config is not. Load the
native-mcp skill and configure the server in ~/.hermes/config.yaml, then restart Hermes.
For CLI details, install targets, and deployment checks, read
references/fastmcp-cli.md.MIT
mkdir -p ~/.hermes/skills/mcp/fastmcp && curl -o ~/.hermes/skills/mcp/fastmcp/SKILL.md https://raw.githubusercontent.com/NousResearch/hermes-agent/main/optional-skills/mcp/fastmcp/SKILL.md1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.