掌握MCP Python SDK构建下一代AI应用的终极指南【免费下载链接】python-sdkThe official Python SDK for Model Context Protocol servers and clients项目地址: https://gitcode.com/gh_mirrors/pythonsd/python-sdkMCP Python SDK是Model Context Protocol模型上下文协议的官方Python实现它让开发者能够轻松构建与大型语言模型LLM交互的标准化应用。通过MCP Python SDK你可以快速创建MCP服务器和客户端实现资源共享、工具调用和提示管理等核心功能为AI应用开发提供强大支持。为什么选择MCP Python SDKMCP Python SDK为AI应用开发带来了革命性的改变主要体现在以下几个方面标准化协议遵循Model Context Protocol规范确保不同AI应用之间的互操作性多传输支持支持stdio、SSE和Streamable HTTP等多种传输方式丰富功能集提供资源管理、工具调用、提示模板、身份验证等完整功能灵活易用简洁的API设计和丰富的示例代码降低开发门槛MCP Python SDK的官方标志象征着连接AI模型与应用的桥梁快速入门从零开始构建MCP服务器一键安装步骤使用uv推荐或pip安装MCP Python SDK# 使用uv安装 uv init mcp-server-demo cd mcp-server-demo uv add mcp[cli] # 或使用pip安装 pip install mcp[cli]最简单的MCP服务器示例创建一个基本的MCP服务器只需几行代码from mcp.server.fastmcp import FastMCP # 创建MCP服务器实例 mcp FastMCP(My First MCP Server) # 添加一个简单的工具 mcp.tool() def add(a: int, b: int) - int: Add two numbers together return a b # 运行服务器使用Streamable HTTP传输 if __name__ __main__: mcp.run(transportstreamable-http)运行服务器uv run your_server_file.pyMCP核心概念解析服务器Server服务器是MCP应用的核心负责管理连接、处理请求和路由消息。FastMCP类提供了便捷的服务器实现from mcp.server.fastmcp import FastMCP # 创建服务器实例 mcp FastMCP( nameMy App, descriptionA demonstration MCP server, version1.0.0 ) # 启动服务器 mcp.run(transportstreamable-http, host0.0.0.0, port8000)完整示例examples/snippets/servers/lifespan_example.py资源Resources资源用于向LLM提供数据类似于REST API中的GET端点mcp.resource(file://documents/{name}) def read_document(name: str) - str: Read a document by name # 实际应用中这里会从文件系统或数据库读取内容 return fContent of document: {name} mcp.resource(config://settings) def get_settings() - str: Get application settings return { theme: dark, language: en, debug: false }完整示例examples/snippets/servers/basic_resource.py工具Tools工具允许LLM通过服务器执行操作类似于REST API中的POST端点mcp.tool() def sum(a: int, b: int) - int: Add two numbers together return a b mcp.tool() def get_weather(city: str, unit: str celsius) - str: Get weather for a city # 实际应用中这里会调用天气API return fWeather in {city}: 22°{unit[0].upper()}工具还支持进度报告功能mcp.tool() async def long_running_task(task_name: str, ctx: Context, steps: int 5) - str: Execute a task with progress updates await ctx.info(fStarting: {task_name}) for i in range(steps): progress (i 1) / steps await ctx.report_progress( progressprogress, total1.0, messagefStep {i 1}/{steps} ) return fTask {task_name} completed完整示例examples/snippets/servers/basic_tool.py结构化输出Structured OutputMCP工具支持多种结构化输出类型包括Pydantic模型、TypedDict、数据类等from pydantic import BaseModel, Field class WeatherData(BaseModel): Weather information structure temperature: float Field(descriptionTemperature in Celsius) humidity: float Field(descriptionHumidity percentage) condition: str wind_speed: float mcp.tool() def get_weather(city: str) - WeatherData: Get weather for a city - returns structured data return WeatherData( temperature22.5, humidity45.0, conditionsunny, wind_speed5.2 )完整示例examples/snippets/servers/structured_output.py提示Prompts提示是可重用的模板帮助LLM更有效地与服务器交互mcp.prompt(titleCode Review) def review_code(code: str) - str: return fPlease review this code:\n\n{code} mcp.prompt(titleDebug Assistant) def debug_error(error: str) - list[base.Message]: return [ base.UserMessage(Im seeing this error:), base.UserMessage(error), base.AssistantMessage(Ill help debug that. What have you tried so far?) ]完整示例examples/snippets/servers/basic_prompt.py运行和部署MCP服务器开发模式在开发过程中可以使用内置的开发模式快速测试服务器uv run your_server_file.py与Claude Desktop集成MCP服务器可以轻松集成到Claude Desktopclaude mcp add --transport http my-server http://localhost:8000/mcpStreamable HTTP传输Streamable HTTP是推荐的生产环境传输方式if __name__ __main__: mcp.run( transportstreamable-http, host0.0.0.0, port8000, cors_origins[https://your-frontend.example.com] )挂载到现有ASGI服务器MCP服务器可以挂载到FastAPI、Starlette等ASGI应用from fastapi import FastAPI from mcp.server.streamable_http import StreamableHTTPServer app FastAPI() mcp_server StreamableHTTPServer(mcp) # 挂载MCP服务器到/mcp路径 app.mount(/mcp, mcp_server.asgi_app) # 你的其他FastAPI路由 app.get(/) async def root(): return {message: Welcome to my MCP-enabled app}高级功能探索上下文Context上下文对象提供了丰富的功能包括日志记录、进度报告和资源访问mcp.tool() async def process_data(data: str, ctx: Context) - str: # 日志记录 await ctx.debug(fProcessing data: {data}) await ctx.info(Data processing started) # 进度报告 await ctx.report_progress(progress0.5, messageHalfway done) # 读取资源 config await ctx.read_resource(config://settings) return fProcessed data: {data[:10]}...用户交互Elicitation工具可以通过Elicitation功能请求用户提供额外信息class BookingPreferences(BaseModel): checkAlternative: bool Field(descriptionWould you like to check another date?) alternativeDate: str Field(descriptionAlternative date (YYYY-MM-DD)) mcp.tool() async def book_table(date: str, ctx: Context) - str: if date 2024-12-25: # 圣诞节无可用桌位 # 请求用户提供替代日期 result await ctx.elicit( messageNo tables available on Christmas. Would you like to try another date?, schemaBookingPreferences ) if result.action accept and result.data.checkAlternative: return fBooked for {result.data.alternativeDate} return Booking cancelled return fBooked for {date}完整示例examples/snippets/servers/elicitation.py身份验证MCP支持多种身份验证机制保护敏感资源和工具from mcp.server.auth.provider import AuthProvider class MyAuthProvider(AuthProvider): async def verify_token(self, token: str) - dict: # 验证token并返回用户信息 if token valid_token: return {sub: user123, role: admin} raise UnauthorizedError(Invalid token) # 应用身份验证 mcp FastMCP( nameSecure Server, auth_providerMyAuthProvider() ) # 保护工具 mcp.tool(requires_authTrue) def sensitive_operation(ctx: Context) - str: user ctx.request_context.auth return fOperation performed by {user[sub]}客户端开发MCP Python SDK不仅支持服务器开发还提供了客户端功能from mcp import ClientSession from mcp.client.stdio import stdio_client async def run_client(): async with stdio_client() as (read, write): async with ClientSession(read, write) as session: # 初始化连接 await session.initialize() # 调用工具 result await session.call_tool( tool_nameadd, parameters{a: 2, b: 3} ) print(f2 3 {result}) # 读取资源 config await session.read_resource(config://settings) print(Server config:, config) asyncio.run(run_client())完整示例examples/snippets/clients/completion_client.py学习资源与文档官方文档项目提供了全面的文档涵盖从基础到高级的所有功能示例代码examples/目录包含多种场景的完整示例测试用例tests/目录包含详细的测试代码展示了各种功能的使用方法开始你的MCP之旅准备好开始使用MCP Python SDK构建下一代AI应用了吗按照以下步骤开始克隆仓库git clone https://gitcode.com/gh_mirrors/pythonsd/python-sdk cd python-sdk探索示例查看examples/目录中的各种示例项目阅读文档查阅docs/目录中的详细文档加入社区参与项目贡献与其他开发者交流经验MCP Python SDK为AI应用开发提供了强大而灵活的工具集无论你是构建简单的工具还是复杂的AI助手它都能帮助你快速实现目标。立即开始探索构建属于你的下一代AI应用【免费下载链接】python-sdkThe official Python SDK for Model Context Protocol servers and clients项目地址: https://gitcode.com/gh_mirrors/pythonsd/python-sdk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
掌握MCP Python SDK:构建下一代AI应用的终极指南
发布时间:2026/6/4 4:49:33
掌握MCP Python SDK构建下一代AI应用的终极指南【免费下载链接】python-sdkThe official Python SDK for Model Context Protocol servers and clients项目地址: https://gitcode.com/gh_mirrors/pythonsd/python-sdkMCP Python SDK是Model Context Protocol模型上下文协议的官方Python实现它让开发者能够轻松构建与大型语言模型LLM交互的标准化应用。通过MCP Python SDK你可以快速创建MCP服务器和客户端实现资源共享、工具调用和提示管理等核心功能为AI应用开发提供强大支持。为什么选择MCP Python SDKMCP Python SDK为AI应用开发带来了革命性的改变主要体现在以下几个方面标准化协议遵循Model Context Protocol规范确保不同AI应用之间的互操作性多传输支持支持stdio、SSE和Streamable HTTP等多种传输方式丰富功能集提供资源管理、工具调用、提示模板、身份验证等完整功能灵活易用简洁的API设计和丰富的示例代码降低开发门槛MCP Python SDK的官方标志象征着连接AI模型与应用的桥梁快速入门从零开始构建MCP服务器一键安装步骤使用uv推荐或pip安装MCP Python SDK# 使用uv安装 uv init mcp-server-demo cd mcp-server-demo uv add mcp[cli] # 或使用pip安装 pip install mcp[cli]最简单的MCP服务器示例创建一个基本的MCP服务器只需几行代码from mcp.server.fastmcp import FastMCP # 创建MCP服务器实例 mcp FastMCP(My First MCP Server) # 添加一个简单的工具 mcp.tool() def add(a: int, b: int) - int: Add two numbers together return a b # 运行服务器使用Streamable HTTP传输 if __name__ __main__: mcp.run(transportstreamable-http)运行服务器uv run your_server_file.pyMCP核心概念解析服务器Server服务器是MCP应用的核心负责管理连接、处理请求和路由消息。FastMCP类提供了便捷的服务器实现from mcp.server.fastmcp import FastMCP # 创建服务器实例 mcp FastMCP( nameMy App, descriptionA demonstration MCP server, version1.0.0 ) # 启动服务器 mcp.run(transportstreamable-http, host0.0.0.0, port8000)完整示例examples/snippets/servers/lifespan_example.py资源Resources资源用于向LLM提供数据类似于REST API中的GET端点mcp.resource(file://documents/{name}) def read_document(name: str) - str: Read a document by name # 实际应用中这里会从文件系统或数据库读取内容 return fContent of document: {name} mcp.resource(config://settings) def get_settings() - str: Get application settings return { theme: dark, language: en, debug: false }完整示例examples/snippets/servers/basic_resource.py工具Tools工具允许LLM通过服务器执行操作类似于REST API中的POST端点mcp.tool() def sum(a: int, b: int) - int: Add two numbers together return a b mcp.tool() def get_weather(city: str, unit: str celsius) - str: Get weather for a city # 实际应用中这里会调用天气API return fWeather in {city}: 22°{unit[0].upper()}工具还支持进度报告功能mcp.tool() async def long_running_task(task_name: str, ctx: Context, steps: int 5) - str: Execute a task with progress updates await ctx.info(fStarting: {task_name}) for i in range(steps): progress (i 1) / steps await ctx.report_progress( progressprogress, total1.0, messagefStep {i 1}/{steps} ) return fTask {task_name} completed完整示例examples/snippets/servers/basic_tool.py结构化输出Structured OutputMCP工具支持多种结构化输出类型包括Pydantic模型、TypedDict、数据类等from pydantic import BaseModel, Field class WeatherData(BaseModel): Weather information structure temperature: float Field(descriptionTemperature in Celsius) humidity: float Field(descriptionHumidity percentage) condition: str wind_speed: float mcp.tool() def get_weather(city: str) - WeatherData: Get weather for a city - returns structured data return WeatherData( temperature22.5, humidity45.0, conditionsunny, wind_speed5.2 )完整示例examples/snippets/servers/structured_output.py提示Prompts提示是可重用的模板帮助LLM更有效地与服务器交互mcp.prompt(titleCode Review) def review_code(code: str) - str: return fPlease review this code:\n\n{code} mcp.prompt(titleDebug Assistant) def debug_error(error: str) - list[base.Message]: return [ base.UserMessage(Im seeing this error:), base.UserMessage(error), base.AssistantMessage(Ill help debug that. What have you tried so far?) ]完整示例examples/snippets/servers/basic_prompt.py运行和部署MCP服务器开发模式在开发过程中可以使用内置的开发模式快速测试服务器uv run your_server_file.py与Claude Desktop集成MCP服务器可以轻松集成到Claude Desktopclaude mcp add --transport http my-server http://localhost:8000/mcpStreamable HTTP传输Streamable HTTP是推荐的生产环境传输方式if __name__ __main__: mcp.run( transportstreamable-http, host0.0.0.0, port8000, cors_origins[https://your-frontend.example.com] )挂载到现有ASGI服务器MCP服务器可以挂载到FastAPI、Starlette等ASGI应用from fastapi import FastAPI from mcp.server.streamable_http import StreamableHTTPServer app FastAPI() mcp_server StreamableHTTPServer(mcp) # 挂载MCP服务器到/mcp路径 app.mount(/mcp, mcp_server.asgi_app) # 你的其他FastAPI路由 app.get(/) async def root(): return {message: Welcome to my MCP-enabled app}高级功能探索上下文Context上下文对象提供了丰富的功能包括日志记录、进度报告和资源访问mcp.tool() async def process_data(data: str, ctx: Context) - str: # 日志记录 await ctx.debug(fProcessing data: {data}) await ctx.info(Data processing started) # 进度报告 await ctx.report_progress(progress0.5, messageHalfway done) # 读取资源 config await ctx.read_resource(config://settings) return fProcessed data: {data[:10]}...用户交互Elicitation工具可以通过Elicitation功能请求用户提供额外信息class BookingPreferences(BaseModel): checkAlternative: bool Field(descriptionWould you like to check another date?) alternativeDate: str Field(descriptionAlternative date (YYYY-MM-DD)) mcp.tool() async def book_table(date: str, ctx: Context) - str: if date 2024-12-25: # 圣诞节无可用桌位 # 请求用户提供替代日期 result await ctx.elicit( messageNo tables available on Christmas. Would you like to try another date?, schemaBookingPreferences ) if result.action accept and result.data.checkAlternative: return fBooked for {result.data.alternativeDate} return Booking cancelled return fBooked for {date}完整示例examples/snippets/servers/elicitation.py身份验证MCP支持多种身份验证机制保护敏感资源和工具from mcp.server.auth.provider import AuthProvider class MyAuthProvider(AuthProvider): async def verify_token(self, token: str) - dict: # 验证token并返回用户信息 if token valid_token: return {sub: user123, role: admin} raise UnauthorizedError(Invalid token) # 应用身份验证 mcp FastMCP( nameSecure Server, auth_providerMyAuthProvider() ) # 保护工具 mcp.tool(requires_authTrue) def sensitive_operation(ctx: Context) - str: user ctx.request_context.auth return fOperation performed by {user[sub]}客户端开发MCP Python SDK不仅支持服务器开发还提供了客户端功能from mcp import ClientSession from mcp.client.stdio import stdio_client async def run_client(): async with stdio_client() as (read, write): async with ClientSession(read, write) as session: # 初始化连接 await session.initialize() # 调用工具 result await session.call_tool( tool_nameadd, parameters{a: 2, b: 3} ) print(f2 3 {result}) # 读取资源 config await session.read_resource(config://settings) print(Server config:, config) asyncio.run(run_client())完整示例examples/snippets/clients/completion_client.py学习资源与文档官方文档项目提供了全面的文档涵盖从基础到高级的所有功能示例代码examples/目录包含多种场景的完整示例测试用例tests/目录包含详细的测试代码展示了各种功能的使用方法开始你的MCP之旅准备好开始使用MCP Python SDK构建下一代AI应用了吗按照以下步骤开始克隆仓库git clone https://gitcode.com/gh_mirrors/pythonsd/python-sdk cd python-sdk探索示例查看examples/目录中的各种示例项目阅读文档查阅docs/目录中的详细文档加入社区参与项目贡献与其他开发者交流经验MCP Python SDK为AI应用开发提供了强大而灵活的工具集无论你是构建简单的工具还是复杂的AI助手它都能帮助你快速实现目标。立即开始探索构建属于你的下一代AI应用【免费下载链接】python-sdkThe official Python SDK for Model Context Protocol servers and clients项目地址: https://gitcode.com/gh_mirrors/pythonsd/python-sdk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考