
使用 awesome-copilot 的 python-mcp-development 插件构建生产级 Python MCP 服务器【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot在 GitHub Copilot 生态中通过python-mcp-development插件你可以在 Copilot CLI 中一站式完成 Model Context ProtocolMCP服务器的设计、生成、调试与部署。本文以 plugins/python-mcp-development/README.md 为核心结合仓库中真实存在的 技能定义、开发指令 与 专家代理 源码完整讲解如何使用 FastMCP 快速搭建类型安全、可远程部署、经得起生产考验的 Python MCP 服务器。插件定位一个围绕 FastMCP 的完整开发工具包python-mcp-development是 awesome-copilot 社区仓库中的官方插件之一其核心目标非常聚焦帮助开发者使用官方 Python SDKmcp包与 FastMCP 框架构建 MCP 服务器。插件本身不是一个代码库而是一套“组装好的开发环境”由三部分构成指令Instructions注入到 Copilot 会话中的开发规范涵盖从项目初始化到高级能力的全部要点技能Skill一个可直接调用的python-mcp-server-generator提示词用于一键生成完整 MCP 服务器项目专家代理Agent名为python-mcp-expert的聊天模式提供专家级的开发指导。插件元数据定义在 plugins/python-mcp-development/plugin.json 中可以看到它声明了fastmcp、model-context-protocol、server-development等关键字并将agents/python-mcp-expert.md与skills/python-mcp-server-generator/两个资源挂载到com.github.awesome-copilot扩展命名空间下{ $schema: https://agent-plugins.org/schemas/1.0.0/plugin.schema.json, name: python-mcp-development, version: 1.0.0, license: MIT, keywords: [python, mcp, model-context-protocol, fastmcp, server-development], extensions: { com.github.awesome-copilot: { agents: [./agents/python-mcp-expert.md], skills: [./skills/python-mcp-server-generator/] } } }awesome-copilot 本身是一个默认插件市场详见 docs/README.plugins.md因此安装该插件不需要额外的市场配置。安装插件在 Copilot CLI 中通过一条命令即可安装copilot plugin install python-mcp-developmentawesome-copilot如果你习惯在交互式会话中浏览也可以先执行/plugin marketplace browse awesome-copilot找到python-mcp-development后安装。安装完成后插件提供的斜杠命令、技能和python-mcp-expert代理即可在当前 Copilot 会话中使用。插件的两个核心入口原文档明确列出了插件提供的两个入口它们是使用插件的核心类型名称说明斜杠命令 / 技能/python-mcp-development:python-mcp-server-generator生成一个包含工具tools、资源resources与正确配置的完整 Python MCP 服务器项目代理python-mcp-expert专门用于 Python MCP 服务器开发的专家助手技能的实际提示词保存在 skills/python-mcp-server-generator/SKILL.md其中包含非常具体的要求清单用uv搭建项目结构、引入mcp[cli]依赖、在 stdio 与 streamable-http 之间选择传输方式、至少实现一个有完整类型标注的工具、并包含全面的错误处理。这意味着你只需输入“帮我生成一个 Python MCP 服务器”Copilot 就会按照这套规格产出项目骨架。第一步项目脚手架与依赖根据 skills/python-mcp-server-generator/SKILL.md 的设定项目初始化推荐使用uv而非裸pip# 初始化项目 uv init project-name # 添加 MCP SDK含 CLI 工具 uv add mcp[cli] # 创建主服务器文件例如 server.py脚手架阶段还需要完成几件配套工作创建主服务器文件如server.py添加 Python 项目的.gitignore通过if __name__ __main__支持直接执行。引入mcp[cli]而不是裸mcp是为了获得mcp dev启动 MCP Inspector与mcp install安装到 Claude Desktop两个命令行工具它们在后面的调试章节会用到。第二步服务器配置FastMCP 与传输方式服务器实例化统一使用FastMCP类导入路径为mcp.server.fastmcpfrom mcp.server.fastmcp import FastMCP mcp FastMCP(My Server)初始化时可以设置服务器名称与可选指令instructions。关键配置点是传输方式FastMCP 支持两种主流传输stdio默认适合本地进程内使用直接mcp.run()即可streamable-http适合远程部署使用mcp.run(transportstreamable-http)。一个典型的 HTTP 服务器示例取自 instructions/python-mcp-server.instructions.mdfrom mcp.server.fastmcp import FastMCP mcp FastMCP(My HTTP Server) mcp.tool() def hello(name: str World) - str: Greet someone return fHello, {name}! if __name__ __main__: mcp.run(transportstreamable-http)对于 HTTP 场景FastMCP 还提供几个值得关注的高级配置项配置项作用stateless_httpTrue无状态模式提升水平扩展能力适合部署在 Serverless 场景json_responseTrue为现代客户端启用 JSON 响应模式host/port通过环境变量或参数配置监听地址与端口CORS 配置供浏览器客户端访问时需要需暴露Mcp-Session-Id响应头如果项目本身已基于 Starlette/FastAPI不需要单独起进程可以将其挂载进现有 ASGI 应用# 挂载到现有 ASGI 服务器 app.mount(/mcp, mcp.streamable_http_app())甚至可以在一套 ASGI 应用中按不同路径挂载多个服务器Mount(/path, mcp.streamable_http_app())。第三步实现工具Tools工具是 MCP 服务器的核心能力单元。技能要求“至少实现一个带完整类型标注的有用工具”并明确给出实现范式使用mcp.tool()装饰器注册函数类型标注是强制要求——它们会自动生成 JSON Schema 并参与校验清晰的 docstring 会成为协议中的工具描述结构化输出优先使用 Pydantic 模型或 TypedDictI/O 密集任务使用 async 函数包含完整的错误处理。一个带结构化输出的工具示例from pydantic import BaseModel, Field class WeatherData(BaseModel): temperature: float Field(descriptionTemperature in Celsius) condition: str humidity: float mcp.tool() def get_weather(city: str) - WeatherData: Get weather for a city return WeatherData( temperature22.5, conditionsunny, humidity65.0 )当返回类型兼容如 Pydantic 模型时工具会自动产出结构化输出——这一行为在 instructions/python-mcp-server.instructions.md 中被明确记录“Tools automatically return structured output when return types are compatible”。最基本的计算工具也是技能文档与指令中的共同示例from mcp.server.fastmcp import FastMCP mcp FastMCP(My Server) mcp.tool() def calculate(a: int, b: int, op: str) - int: Perform calculation if op add: return a b return a - b if __name__ __main__: mcp.run() # stdio by default错误处理技能与指令都强调全面的 try-except 与清晰错误信息mcp.tool() async def risky_operation(input: str) - str: Operation that might fail try: result await perform_operation(input) return fSuccess: {result} except Exception as e: return fError: {str(e)}第四步资源Resources与提示Prompts资源用于向模型暴露数据或上下文提示用于预置可复用的对话模板。二者均为可选但技能文档建议“加上它们让服务器更完整”。动态资源使用mcp.resource()装饰器 URI 模板可以定义动态资源mcp.resource(users://{user_id}) def get_user(user_id: str) - str: Get user profile data return fUser {user_id} profile dataURI 模板中的{param}会被自动提取为函数参数这是实现“按 ID 查询资源”类能力的最便捷方式。提示Prompts使用mcp.prompt()装饰器可以返回纯字符串或Message列表。返回结构化消息的示例from mcp.server.fastmcp.prompts import base mcp.prompt(titleCode Review) def review_code(code: str) - list[base.Message]: Create code review prompt return [ base.UserMessage(Review this code:), base.UserMessage(code), base.AssistantMessage(Ill review the code for you.) ]第五步高级能力——让服务器真正“生产就绪”技能文档的 “Additional Features to Consider” 一节列出了大量进阶能力指令文件则给出了具体 API。这些能力是让 MCP 服务器从“能用”到“好用”的关键。Context日志、进度、采样与交互在工具或资源函数中声明ctx: Context参数即可访问 MCP 的全部上下文能力from mcp.server.fastmcp import Context from mcp.server.session import ServerSession mcp.tool() async def process_data( data: str, ctx: Context[ServerSession, None] ) - str: Process data with logging await ctx.info(fProcessing: {data}) await ctx.report_progress(0.5, 1.0, Halfway done) return fProcessed: {data}Context 提供的能力汇总能力API用途日志await ctx.debug()/ctx.info()/ctx.warning()/ctx.error()分级输出诊断信息进度await ctx.report_progress(progress, total, message)向客户端报告任务进度采样await ctx.session.create_message(messages, max_tokens)调用 LLM 完成文本生成类工具用户输入await ctx.elicit(message, schema)在交互式工作流中向用户征求输入LLM 采样AI 驱动的工具借助create_message可以在工具内部完成“总结、改写、分类”等 AI 任务from mcp.server.fastmcp import Context from mcp.server.session import ServerSession from mcp.types import SamplingMessage, TextContent mcp.tool() async def summarize( text: str, ctx: Context[ServerSession, None] ) - str: Summarize text using LLM result await ctx.session.create_message( messages[SamplingMessage( roleuser, contentTextContent(typetext, textfSummarize: {text}) )], max_tokens100 ) return result.content.text if result.content.type text else Lifespan共享资源生命周期管理数据库连接、外部客户端等资源通过 lifespan 上下文管理器在服务器启动时创建、关闭时清理from contextlib import asynccontextmanager from dataclasses import dataclass from mcp.server.fastmcp import FastMCP, Context dataclass class AppContext: db: Database asynccontextmanager async def app_lifespan(server: FastMCP): db await Database.connect() try: yield AppContext(dbdb) finally: await db.disconnect() mcp FastMCP(My App, lifespanapp_lifespan) mcp.tool() def query(sql: str, ctx: Context) - str: Query database db ctx.request_context.lifespan_context.db return db.execute(sql)工具内通过ctx.request_context.lifespan_context访问共享资源。图标、图片与补全图标用Icon(srcpath, mimeTypeimage/png)为服务器、工具、资源、提示配置 UI 图标图片返回Image(databytes, formatpng)让服务器自动处理图片数据补全为参数实现自动补全接受部分值并返回建议列表提升交互体验OAuth通过TokenVerifier为 HTTP 服务器接入认证分页处理大数据集时可在低层 API 使用基于游标的分页。低层 API当 FastMCP 的便捷抽象不足以覆盖需求时指令文档明确指出可以“Use low-level Server class for maximum control”——直接使用mcp.server.Server类获得最大控制力这在需要精细管理会话状态或实现自定义协议逻辑时尤其有用。第六步测试、调试与安装技能文档给出了完整的测试链路这也是为什么项目要引入mcp[cli]# 本地启动stdio 服务器 python server.py # 或 uv run server.py # 使用 MCP Inspector 交互式调试推荐 uv run mcp dev server.py # 安装到 Claude Desktop uv run mcp install server.py # HTTP 服务器启动后客户端连接地址 # http://localhost:PORT/mcp建议的开发顺序是先用mcp dev打开 MCP Inspector逐一验证每个工具确认无误后再安装到 Claude Desktop 或接入生产客户端。专家代理同样遵循这一路径在其“Approach”中强调“Test Early: Encourage testing withuv run mcp devbefore integration”。第七步常见工具类型与最佳实践技能文档列举了值得实现的工具类型可作为灵感清单数据处理与转换文件系统操作读取、分析、搜索外部 API 集成数据库查询文本分析或生成借助采样系统信息检索数学或科学计算。最后技能与指令共同强调的一组最佳实践可作为自检清单类型标注无处不在不是可选项——它驱动 Schema 生成与校验尽量返回结构化数据Pydantic 模型 / TypedDict同时提供文本内容以兼容旧客户端日志写到 stderr或使用 Context 日志避免污染 stdio 传输通道资源正确清理lifespan 或 finally 块尽早校验输入参数使用带描述的 PydanticField提供清晰、可操作的错误信息在与 LLM 集成前独立测试每个工具敏感操作注意安全暴露文件系统或网络访问前考虑权限边界配置使用环境变量。专家代理python-mcp-expert如果你需要的不是“一键生成”而是持续答疑与重构指导可以切换到python-mcp-expert代理。其定义位于 agents/python-mcp-expert.agent.md自称对mcp包、FastMCP、低层Server、全部传输方式、Pydantic 校验、异步编程都有深入掌握擅长以下场景从零创建服务器uv 项目结构 完整配置实现类型安全的工具数据处理、API、文件、数据库静态与动态资源实现可复用提示词开发stdio / HTTP 传输配置类型标注问题、Schema 校验错误与传输故障排查性能优化与结构化输出改造从旧 MCP 模式迁移到当前最佳实践与数据库、API 及其他服务集成测试策略制定。代理的输出风格要求“提供完整可运行代码、包含全部必要 import、附上完整文件结构、解释设计背后的 why”并且遵循“类型安全优先、FastMCP 默认、结构化输出、Context 按需使用”的原则。这对希望边学边做的开发者非常友好——你可以直接要求它“帮我把现有服务改造成 MCP 服务器”或“解释 stateless HTTP 与 stateful 的区别”它会给出带完整上下文的答案。总结python-mcp-development插件把 Python MCP 开发的完整闭环浓缩进了 Copilot CLI斜杠命令负责生成项目指令约束编码规范专家代理兜底疑难问题。无论是开发一个本地 stdio 小工具还是部署一个支持 OAuth、无状态、可水平扩展的 streamable-http 生产服务器这套工具链都能覆盖。建议你从uv init加uv add mcp[cli]开始实现第一个带类型标注的工具再用uv run mcp dev server.py验证它即可完成从零到一的 MCP 开发体验。如需进一步了解插件的市场机制与周边生态可参阅 docs/README.plugins.md插件的许可为 MIT元数据见 plugins/python-mcp-development/plugin.json。【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考