mcpField
P
Python MCP Server Template

Python MCP Server Template

本地服务
github.com/djaboxx开发工具079 周前更新

关于 Python MCP Server Template

用于构建 VS Code MCP 服务的 Python 模板,面向需要配置、生命周期、工具和错误处理范式的开发者。

主要功能

  1. 01基于 Pydantic 的配置验证
  2. 02异步服务生命周期与清理
  3. 03基于装饰器的工具注册
  4. 04结构化错误与日志记录

适用场景

  1. 01为服务搭建 Python MCP 服务骨架
  2. 02添加基于环境变量的密钥和设置
  3. 03实现带类型提示及统一错误响应的工具

MCP 相关

提供 Python MCP 服务的起始结构,可向 MCP 客户端(包括 VS Code)开放工具;不包含特定服务的工具实现。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Python MCP 服务模板

用于使用 Python 创建 VS Code Model Context Protocol(MCP)服务的模板仓库。此模板遵循生产级 MCP 服务所确立的模式和最佳实践。

用途

此模板为构建 MCP 服务提供基础:

  • 与 VS Code 的 AI 功能集成
  • 遵循生产级 MCP 服务中确立的模式
  • 以一致的方式处理配置、日志记录和错误情况
  • 遵循异步 Python 和 MCP 工具的最佳实践

架构

此模板遵循生产级 MCP 服务中常见的以下关键架构模式:

  1. 服务配置

    • 使用 Pydantic 模型验证配置
    • 基于环境变量进行配置
    • 在服务生命周期中初始化服务客户端
  2. 服务生命周期

    • 使用异步上下文管理器管理服务生命周期
    • 妥善处理启动和关闭
    • 在 finally 块中清理资源
  3. 工具实现

    • 基于装饰器注册工具
    • 以一致的方式处理错误和记录日志
    • 使用结构化响应格式
  4. 开发模式

    • 全面使用类型提示
    • 使用可配置的级别记录详细日志
    • 验证服务状态

项目结构

基于生产级模式的标准 MCP 服务结构:

.
├── src/                     # Python source code
│   ├── server.py           # Main MCP server implementation
│   ├── services/           # Service client implementations
│   │   └── client.py       # Your service client code
│   ├── models.py           # Data models and schemas
│   ├── config.py           # Configuration models
│   └── utils/              # Utility functions
├── docs/                   # Documentation
│   └── mcp-server-guide.md # Server implementation guide
├── tests/                  # Test files
├── requirements.txt        # Python dependencies
└── README.md              # Project documentation

代码组织

此模板遵循生产级 MCP 服务中的以下约定:

  1. 服务入口点(src/server.py):

    # Configuration models
    class ServiceConfig(BaseModel):
        api_key: str
        # ...
    
    # Server lifespan
    @asynccontextmanager
    async def server_lifespan(server: FastMCP):
        try:
            # Initialize services
            yield
        finally:
            # Cleanup
    
    # FastMCP instance
    mcp = FastMCP(
        name="Your Server",
        instructions="Your server description",
        lifespan=server_lifespan
    )
    
    # Tools
    @mcp.tool()
    async def your_tool(ctx: Context):
        # Tool implementation
    
  2. 服务客户端(src/services/):

    • 实现特定于服务的客户端
    • 处理身份验证和重试
    • 管理连接状态
  3. 模型(src/models.py):

    • 定义用于数据验证的 Pydantic 模型
    • 构建工具输入和输出
    • 定义特定于服务的类型

实现指南

  1. 配置:

    • 添加符合服务需求的配置模型
    • 使用环境变量存储机密
    • 为必填字段添加验证
  2. 服务客户端:

    • 在 services/ 中实现服务客户端
    • 添加连接和重试处理
    • 包含适当的清理逻辑
  3. 工具:

    • 使用 @mcp.tool() 装饰器
    • 添加类型提示和文档字符串
    • 遵循以下错误处理模式:
    @mcp.tool()
    async def your_tool(ctx: Context) -> Dict[str, Any]:
        try:
            # Implementation
            return {"status": "success", "result": result}
        except Exception as e:
            await ctx.error(f"Error: {e}")
            return {"status": "error", "message": str(e)}
    
  4. 错误处理:

    • 使用结构化错误响应
    • 记录错误及其上下文
    • 返回对用户友好的消息

开始使用

  1. 使用此模板创建新仓库:

    git clone https://github.com/username/template-mcp-server.git your-server
    cd your-server
    
  2. 设置开发环境:

    python -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
  3. 在 src/server.py 中更新服务名称和描述

  4. 添加服务配置和客户端

VS Code 配置

若要将此服务与 VS Code 的 MCP 功能配合使用,请将以下配置添加到 VS Code 的 settings.json 中:

"mcp": {
  "inputs": [
    {
      "type": "promptString",
      "id": "service-api-key",
      "description": "Service API Key",
      "password": true
    }
  ],
  "servers": {
    "template-mcp": {
      "type": "stdio",
      "command": "${userHome}/git/template-mcp-server/venv/bin/python",
      "args": [
        "${userHome}/git/template-mcp-server/src/server.py"
      ],
      "env": {
        "SERVICE_API_KEY": "${input:service-api-key}",
        "SERVICE_ENDPOINT": "https://api.example.com",
        "SERVICE_TIMEOUT": "30",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
配置选项
  • 环境变量:
    • SERVICE_API_KEY:服务 API 密钥(必填)
    • SERVICE_ENDPOINT:服务端点 URL(默认值:https://api.example.com)
    • SERVICE_TIMEOUT:请求超时时间,单位为秒(默认值:30)
    • LOG_LEVEL:日志级别(默认值:INFO)

测试

遵循生产级 MCP 服务中的模式:

  1. 手动测试:

    # Run the server directly
    python src/server.py
    
    # Test with different log levels
    LOG_LEVEL=DEBUG python src/server.py
    
  2. 集成测试:

    # Start server with test configuration
    SERVICE_API_KEY=test-key python src/server.py
    
  3. 开发提示:

    • 使用 VS Code 的 Python 调试器逐步调试工具执行过程
    • 在服务客户端中设置断点,以调试集成问题
    • 开发期间使用 DEBUG 日志级别,以获取详细输出

常见模式

通过分析生产环境中的 MCP 服务,总结出以下关键模式:

  1. 服务客户端状态:

    • 在服务生命周期中初始化
    • 存储在全局变量中
    • 使用前检查是否已初始化
    • 在 finally 块中清理
  2. 错误处理:

    • 记录错误及其上下文
    • 返回结构化的错误响应
    • 使用 ctx.error() 向用户反馈
    • 同时包含状态和消息
  3. 配置:

    • 使用 Pydantic 模型
    • 设置合理的默认值
    • 在启动时验证
    • 支持环境变量覆盖
  4. 工具实现:

    • 编写包含 Args 部分的清晰文档字符串
    • 为所有参数添加类型提示
    • 返回结构化响应
    • 使用一致的错误格式

资源

VS Code 配置

若要在 VS Code 中使用此服务的 MCP(模型上下文协议)功能,请将以下配置添加到 VS Code 的 settings.json 中:

"mcp": {
  "inputs": [
    {
      "type": "promptString",
      "id": "service-api-key",
      "description": "Service API Key",
      "password": true
    }
  ],
  "servers": {
    "template-mcp": {
      "type": "stdio",
      "command": "${userHome}/git/template-mcp-server/venv/bin/python",
      "args": [
        "${userHome}/git/template-mcp-server/src/server.py"
      ],
      "env": {
        "SERVICE_API_KEY": "${input:service-api-key}",
        "SERVICE_ENDPOINT": "https://api.example.com",
        "SERVICE_TIMEOUT": "30",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}
配置选项
  • 环境变量:
    • SERVICE_API_KEY:您的服务 API 密钥(必需)
    • SERVICE_ENDPOINT:服务端点 URL(默认值:https://api.example.com)
    • SERVICE_TIMEOUT:请求超时时间(秒,默认值:30)
    • LOG_LEVEL:日志级别(默认值:INFO)
前置条件

使用服务之前:

  1. 在项目目录中设置 Python 虚拟环境:

    python -m venv venv
    source venv/bin/activate  # or `venv\Scripts\activate` on Windows
    pip install -r requirements.txt
    
  2. 配置 VS Code:

    • 创建包含 stdio 配置的 .vscode/mcp.json
    • 在 VS Code 中设置 Python 解释器
    • 使用集成终端运行命令
    • 使用 VS Code 的 Python 调试器调试 MCP 服务
  3. 测试 MCP 服务:

    • 使用 VS Code 内置的 MCP 服务测试功能
    • 使用断点和 VS Code 的调试控制台进行调试
    • 在输出面板中监控 stdio 通信

参与贡献

  1. Fork 此仓库
  2. 创建功能分支
  3. 提交拉取请求

许可证

[您选择的许可证]

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。