MCP服务器模板

一个用于快速构建基于FastMCP的MCP服务器的全面模板,包含示例工具、资源和提示模板。

  • by jratiwanich
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jratiwanich/mcp-boilerplate

使用说明

FastMCP 服务器模板

一个使用FastMCP构建MCP(模型上下文协议)服务器的全面模板。此模板包含示例工具、资源和提示,帮助您快速上手。

特点/特性

  • 🛠️(扳手) 示例工具即开即用的文本分析、计算等工具
  • 📚 书籍或学习的象征 资源数据访问的示例资源端点
  • 💬(这个表情符号在中文中通常被理解为“对话”或“留言”的意思,但直接翻译可能无法完全传达其在不同语境下的具体含义,因此这里保留了其原样以表示这是一个表情符号) 提示为常见任务预定义的提示模板
  • 🐳 这个表情符号通常代表一只哭泣的鲸鱼,所以可以翻译为“哭泣的鲸鱼”或者简单地用“鲸鱼哭”来表达。不过,在实际应用中,直接使用“🐳”这个符号已经足够传达其含义,无需特意翻译。 Docker 支持完全容器化,Dockerfile已优化
  • ⚡(闪电符号,常用于表示速度、能量、电力等概念,具体含义需根据上下文确定) UV包管理器使用 uv 进行快速依赖管理
  • 🔧 修理工具或螺丝刀的符号,常用于表示维修、修理或需要动手操作的场景。 类型提示全面支持类型注解,提升IDE使用体验

包含内容

工具

  • get_greeting生成个性化的问候语
  • calculate_sum进行数学计算
  • analyze_text分析文本并返回统计数据

资源

  • info://server/info服务器信息和元数据
  • data://example/stats示例统计数据

提示

  • code_review_prompt生成代码审查模板
  • data_analysis_prompt生成数据分析模板

先决条件

  • Python 3.12或更高版本
  • 紫外线 包管理器
  • Docker(可选,用于容器化部署)

安装

使用紫外线(推荐)

  1. 克隆或复制这个模板:
cd /path/to/mcp-boilerplate
  1. 安装依赖项:
uv sync
  1. 运行服务器:
uv run server.py

使用 pip

  1. 安装依赖项:
pip install "mcp[cli]>=1.6.0"
  1. 运行服务器:
python server.py

Docker 部署

构建Docker镜像:

docker build -t mcp-boilerplate .

运行容器:

docker run -i mcp-boilerplate

使用 docker-compose(创建 docker-compose.yml 文件):

version: '3.8'
services:
  mcp-server:
    build: .
    stdin_open: true
    tty: true

然后运行:

docker-compose up

项目结构

mcp-boilerplate/
├── server.py           # Main MCP server implementation
├── pyproject.toml      # Project dependencies and metadata
├── Dockerfile          # Docker configuration
├── README.md           # This file
└── .gitignore          # Git ignore patterns

使用示例

MCP服务器通过标准输入/输出(stdio)进行通信。以下是与其交互的方法:

测试工具

支持MCP的LLM客户端或测试框架可以调用工具:

# Example: Using the calculate_sum tool
{
    "method": "tools/call",
    "params": {
        "name": "calculate_sum",
        "arguments": {
            "numbers": [1, 2, 3, 4, 5]
        }
    }
}

访问资源

资源提供只读数据访问:

# Example: Accessing server info
{
    "method": "resources/read",
    "params": {
        "uri": "info://server/info"
    }
}

定制化

添加新工具

  1. 添加一个具有……的新功能 @mcp.tool() 装饰器:
@mcp.tool()
async def your_custom_tool(param: str) -> Dict[str, Any]:
    """
    Your tool description here.
    
    Args:
        param: Parameter description
        
    Returns:
        Result description
    """
    # Your implementation
    return {"result": "value"}

添加新资源

  1. 添加一个新功能,使用 @mcp.resource() 装饰器:
@mcp.resource("custom://your/resource")
async def your_custom_resource() -> str:
    """
    Your resource description here.
    
    Returns:
        Resource data as string
    """
    return "your data"

添加新提示

  1. 添加一个具有(某种特性/功能)的新函数 @mcp.prompt() 装饰器:
@mcp.prompt()
async def your_custom_prompt(param: str = "default") -> str:
    """
    Your prompt description here.
    
    Args:
        param: Parameter description
        
    Returns:
        Formatted prompt string
    """
    return f"Your prompt template with {param}"

发展

安装开发依赖项:

uv sync --extra dev

运行测试(如果您添加了测试的话):

uv run pytest

格式代码:

uv run black .

代码规范(或代码整洁度):

uv run ruff check .

配置

你可以通过修改来配置服务器 server.py:

  • 服务器名称更改名称为 FastMCP("Your Server Name")
  • 交通目前使用中 stdio可以改为 sse 用于HTTP传输
  • 环境变量在 Dockerfile 中添加自定义环境变量

故障排除

服务器无响应

  • 确保已安装 Python 3.12 或更高版本
  • 检查所有依赖项是否已正确安装
  • 验证stdin/stdout未被其他进程使用

Docker 构建失败

  • 确保Docker正在运行
  • 检查网络连接以下载uv及其依赖项
  • 验证 pyproject.toml 文件的语法是否正确

导入错误

  • 跑 uv sync 确保所有依赖项都已安装
  • 检查Python版本兼容性

资源

许可证

此代码模板仅提供作教育和开发用途,不做任何修改。

贡献;助力

请随意根据您的特定使用场景对这个模板进行定制。常见的修改包括:

  • 添加数据库连接
  • 集成外部API
  • 添加身份验证
  • 实现自定义业务逻辑

下一步

  1. 根据您的使用场景自定义示例工具
  2. 添加您自己的资源和提示
  3. 配置服务器名称和元数据
  4. 为您的自定义功能添加测试
  5. 使用 Docker 或您偏好的方法进行部署

祝你建造愉快! 🚀