使用说明
🧠 FastMCP通用服务器模板
构建、运行和检查您自己的MCP服务器
此存储库提供 通用、生产就绪的FastMCP服务器 您可以连接到 MCPJam检查员 --用于测试和检查模型上下文协议(MCP)服务器的开发工具。
目录
概述
此项目演示如何创建 FastMCP兼容的HTTP服务器 使用 快速API 和 FastMCP. 它定义了:
- 工具:可调用功能(例如,汇总器、翻译器)
- 资源:结构化数据源(例如服务器信息)
- 提示词:LLM的指令模板
您可以使用以下工具轻松测试和检查此服务器 MCPJam检查员.
项目结构
fastmcp-server/
├── main.py # MCP Server entry point
├── pyproject.toml # uv project file
├── docker-compose.yml # Docker Compose for local container setup
├── Dockerfile # Lightweight image definition
├── .env # Environment configuration
└── README.md # Technical documentation
安装
1.初始化项目
pip install uv
uv init .
2.添加所需的依赖项
uv add "fastapi>=0.121.0" "fastmcp>=2.13.0.2" "uvicorn>=0.29.0"
3.同步项目
uv sync
服务器安装程序
下面是 通用FastMCP服务器 模板:
"""
FastMCP Generic Server Template
===============================
A reusable template for creating FastMCP-compatible servers.
Author: Your Name
Version: 1.0.0
"""
from fastmcp import FastMCP
from fastmcp.prompts import Prompt
import uvicorn
import os
from datetime import datetime
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
# ============================================================
# MCP SERVER CONFIGURATION
# ============================================================
mcp = FastMCP(
name="Example MCP Server",
instructions="""
Welcome to the Example MCP Server!
This server exposes generic tools, resources, and prompts
to demonstrate the MCP protocol.
"""
)
# ============================================================
# TOOLS
# ============================================================
@mcp.tool()
def echo(input_text: str) -> dict:
"""Echoes the input text."""
return {"result": f"You said: {input_text}"}
@mcp.tool()
def summarize(text: str) -> dict:
"""Returns a short summary of input text."""
summary = text[:50] + "..." if len(text) > 50 else text
return {"summary": summary, "original_length": len(text)}
# ============================================================
# RESOURCES
# ============================================================
@mcp.resource("server://info")
def get_server_info() -> dict:
"""Returns information about this MCP server."""
return {
"server_name": "Example MCP Server",
"version": "1.0.0",
"protocol": "MCP 2025-03-26",
"transport": "Streamable HTTP",
"available_tools": ["echo", "summarize"],
"endpoint": f"http://{os.getenv('MCP_HOST', '127.0.0.1')}:{os.getenv('MCP_PORT', '7007')}/mcp"
}
@mcp.resource("server://status")
def get_status() -> dict:
"""Provides runtime status."""
return {
"status": "active",
"timestamp": datetime.now().isoformat()
}
# ============================================================
# PROMPTS
# ============================================================
@mcp.prompt(name="default_prompt")
def default_prompt() -> str:
"""Provides guidance for AI models."""
return (
"You are connected to Example MCP Server. Use the tools "
"'echo' and 'summarize' to process user text efficiently."
)
# ============================================================
# SERVER STARTUP
# ============================================================
if __name__ == "__main__":
host = os.getenv("MCP_HOST", "127.0.0.1")
port = int(os.getenv("MCP_PORT", "7007"))
path = os.getenv("MCP_PATH", "/mcp")
print("=" * 60)
print("🚀 FastMCP Server")
print("=" * 60)
print(f"Server Name: {mcp.name}")
print(f"Transport: Streamable HTTP")
print(f"Endpoint: http://{host}:{port}{path}")
print(f"Inspector: MCPJam Inspector (see below)")
print("=" * 60)
mcp_app = mcp.http_app(path=path)
app = FastAPI(lifespan=mcp_app.lifespan)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["GET", "POST", "OPTIONS"],
allow_headers=["*"],
expose_headers=["mcp-session-id", "mcp-protocol-version"],
)
app.mount("", mcp_app)
uvicorn.run(app, host=host, port=port, log_level="info")
使用MCPJam检查员进行测试
1.安装MCPJam检查器
npm install -g @mcpjam/inspector
# or
npx @mcpjam/inspector
2.启动服务器
uv run main.py
3.运行检查器
npx @mcpjam/inspector
然后输入:
http://127.0.0.1:7007/mcp
您将看到:
- 工具:
echo,summarize - 资源:
server://info,server://status - 提示:
default_prompt
Docker设置
Dockerfile
使用轻量级映像可加快构建速度并降低内存使用率。
# Dockerfile
FROM python:3.11-slim-bookworm
WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV UV_PROJECT_ENVIRONMENT=/app/.venv
COPY . /app
RUN pip install uv && uv sync
EXPOSE 7007
CMD ["uv", "run", "python", "main.py"]
docker-compose.yml
通过Docker Compose轻松运行MCP服务器。
version: "3.9"
name: Greet-MCP-Server
services:
mcp-server:
container_name: FastMCP-Server
image: python:3.11-slim-bookworm
working_dir: /app
environment:
- UV_PROJECT_ENVIRONMENT=/app/.venv
- UV_LINK_MODE=copy
env_file:
- .env
ports:
- "${MCP_PORT}:${MCP_PORT}"
volumes:
- ./:/app
- venv-data:/app/.venv
command: >
sh -c "pip install uv && uv run python main.py"
volumes:
venv-data:
.env示例
MCP_HOST=0.0.0.0
MCP_PORT=7007
MCP_PATH=/mcp
使用Docker Compose运行
docker compose up --build
输出:
FastMCP-Server | FastMCP Server
FastMCP-Server | Endpoint: http://0.0.0.0:7007/mcp
FastMCP-Server | Inspector: MCPJam Inspector
然后通过以下方式连接:
npx @mcpjam/inspector
# Endpoint: http://127.0.0.1:7007/mcp
输出示例
============================================================
FastMCP Server
============================================================
Server Name: Example MCP Server
Transport: Streamable HTTP
Endpoint: http://127.0.0.1:7007/mcp
Inspector: MCPJam Inspector
============================================================
定制
| 特性 | 描述 | 示例 |
|---|---|---|
| 添加新工具 | 定义新 @mcp.tool() 功能 |
文本分析、翻译 |
| 添加资源 | 提供结构化数据源 | 系统信息、日志 |
| 添加提示 | 创建AI指令模板 | 对话角色 |
| 修改传输 | 如果需要,切换到WebSocket | mcp.ws_app() |
环境变量
创建一个 .env 文件(可选):
MCP_HOST=0.0.0.0
MCP_PORT=7007
MCP_PATH=/mcp
后续步骤
您可以通过以下方式扩展此项目:
- 数据库或矢量搜索工具
- Ollama/LangChain集成
- 代理编排(n8n/FastMCP框架)
- 通过MCPJam检查器进行监控
