MCP协议Python SDK 开发入门

liftword3周前 (05-26)技术文章7

大语言模型上下文协议(Model Context Protocol )允许应用程序以标准化的方式为大语言模型提供上下文,将提供上下文的职责与实际的大语言模型交互分离。这个 Python SDK 实现了完整的 MCP 规范,方便开发人员:

  • 构建可以连接到任何 MCP 服务器的 MCP 客户端
  • 创建暴露资源、提示和工具的 MCP 服务器
  • 使用标准传输方式,如标准输入输出(stdio)和SSE
  • 处理所有 MCP 协议消息和生命周期事件



一、将 MCP 添加到 Python 项目中

我们推荐使用 uv 来管理你的 Python 项目。

如果你还没有创建一个由 uv 管理的项目,请先创建一个:

uv init mcp-server-demo
cd mcp-server-demo


示例项目如下所示:


然后将 MCP 添加到你的项目依赖中:

uv add "mcp[cli]"


这个命令用于使用 uv 包管理工具安装 mcp 包及其 cli 可选依赖项。


uv 是一个快速的 Python 包管理工具,类似于 pip 但性能更好。命令 uv add "mcp[cli]" 的含义是:

  • uv add - 安装指定的 Python 包
  • "mcp[cli]" - 要安装的包名是 mcp,方括号中的 cli 表示安装这个包的 CLI(命令行界面)可选依赖


安装过程如下图所示:



安装完成后,你将能够使用 mcp 的命令行功能。这种语法类似于 pip 的 pip install mcp[cli],但使用 uv 工具来执行安装过程,通常会比 pip 更快。


或者,对于使用 pip 管理依赖的项目:

pip install "mcp[cli]"


运行独立的 MCP 开发工具

使用 uv 运行 mcp 命令:

uv run mcp



二、快速入门

让我们创建一个简单的 MCP 服务器,它暴露一个计算器工具和一些数据:


如下是创建的 server.py 代码:

# 导入FastMCP类,它是MCP服务器框架的一部分
from mcp.server.fastmcp import FastMCP

# 创建一个名为"Demo"的FastMCP实例
mcp = FastMCP("Demo")

# 使用@mcp.tool()装饰器注册一个工具函数
@mcp.tool()
def add(a: int, b: int) -> int:
 """加法函数:将两个数字相加。"""
 return a + b

# 使用@mcp.resource装饰器注册一个资源,通过URL模式匹配访问
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
 """获取个性化问候语,接收name参数。"""
 return f"Hello, {name}"


你可以通过运行以下命令立即将这个服务器安装到 Claude Desktop 并与之交互:

mcp install server.py


不过,需要先安装并启用 Claude Desktop,目前国内使用有点困难。



或者,你可以使用 MCP 检查器(inspector)进行测试。

https://www.npmjs.com/package/@modelcontextprotocol/inspector



@
modelcontextprotocol/inspector 是 MCP (Model Context Protocol) 的一个检查工具,它可以帮助开发者调试和检查 MCP 服务。


@
modelcontextprotocol/inspector 的功能

  • 这是一个 Node.js 工具,主要用于:
  • 检查和测试 MCP 服务器
  • 调试 tool 和 resource 的调用过程
  • 验证 MCP 接口实现是否符合规范
  • 提供可视化界面查看 MCP 服务的工具和资源


安装命令:npm i @
modelcontextprotocol/inspector


用于安装 MCP (Model Context Protocol) 的检查器工具。

  • npm i 是 npm install 的简写,用于安装 Node.js 包
  • @ 符号表示这是一个 作用域包,用于明确包的归属组织或用途
  • @modelcontextprotocol 是组织名,inspector 是包名


可以使用 MCP 检查器进行测试:

source .venv/bin/activate # 激活虚拟环境

mcp dev server.py # 启动 MCP 服务器


Starting MCP inspector...
 Proxy server listening on port 6277
 MCP Inspector is up and running at http://127.0.0.1:6274 


Inspector 运行起来后,会启动两个服务:

  • 带UI的客户端,默认端口 6274
  • MCP proxy server,默认端口 6277

在浏览器中打开 http://localhost:6274 即可访问使用。




三、什么是 MCP?

模型上下文协议(MCP)允许你以安全、标准化的方式构建服务器,这些服务器可以向大语言模型(LLM)应用程序暴露数据和功能。你可以将其视为一个专门为大语言模型交互设计的 Web API。




MCP 服务器可以:

  • 通过资源(类似于 REST API 中的 GET 端点;它们用于将信息加载到大语言模型的上下文中)暴露数据。
  • 通过工具(类似于 POST 端点;它们用于执行代码或产生副作用)提供功能。
  • 通过提示(可重复使用的模板,用于大语言模型交互)定义交互模式。


四、MCP核心概念

服务器(server)是与 MCP 协议交互的核心接口。它负责连接管理、协议合规和消息路由。

资源(resources)是向大语言模型暴露数据的方式。它们类似于 REST API 中的 GET 端点——提供数据,但不应执行大量计算或产生副作用。

工具(tools)允许大语言模型通过你的服务器执行操作。与资源不同,工具预计会执行计算并产生副作用。

提示(prompts)是可重复使用的模板,帮助大语言模型有效地与你的服务器交互。


可以在现有的 server.py 代码中添加如下提示(prompts)示例代码:

@mcp.prompt()
def review_code(code: str) -> str:
 """
 代码审查提示模板

 此函数创建一个代码审查的提示模板,将用户提供的代码作为输入,
 并生成一个要求审查该代码的格式化提示。

 参数:
 code (str): 需要审查的代码

 返回:
 str: 包含待审查代码的格式化提示字符串
 """
 return f"Please review this code:\n\n{code}"

@mcp.prompt()
def debug_error(error: str) -> list[base.Message]:
 """
 调试错误提示模板

 此函数创建一个用于调试错误的提示模板,将用户提供的错误信息作为输入,
 并生成一个预设对话格式的提示序列,模拟用户和助手之间的初始交互。

 参数:
 error (str): 用户遇到的错误信息

 返回:
 list[base.Message]: 包含预设对话的消息列表,模拟用户提问和助手初始回应
 """
 return [
 base.UserMessage("I'm seeing this error:"), # 用户消息:介绍错误
 base.UserMessage(error), # 用户消息:包含具体错误内容
 base.AssistantMessage("I'll help debug that. What have you tried so far?"), # 助手回应:提出后续问题
 ]


通过 MCP Inspector 工具,可以查看到新增的 prompts,如图所示:



测试和调试服务器的最快方式是使用 MCP 检查器(Inspector)。

相关文章

用 Python 库 PySimpleGUI 制作自动化办公小软件

Python 在运维和办公自动化中扮演着重要的角色,PySimpleGUI 是一款很棒的自动化辅助模块,让你更轻松的实现日常任务的自动化。1 PySimpleGUI安装在命令行/终端输入:pip in...

python 开发的3个小工具,玩转excel

1 工具1:对新文件去重1.1 定义此工具实现对新旧文件对比,即用#Excel表格#新文件中的数据 对比 原文件上的数据。假设:原文件中有10条,新文件中有15条 且有10条和原文件中的数据重复,使用...

Python智能文件备份工具开发指南

以下是一个基于Python的智能文件备份工具开发指南,包含完整实现思路和代码示例:一、项目需求分析核心功能:自动识别文件变更(增量备份)多备份策略选择(全量/增量)智能文件分类存储跨平台支持(Wind...

程序员常用开发工具合集(含Java、Python等十余种语言)

PyCharm安装指导(可用于开发Python) 鸿蒙开发工具DevEco Studio安装指导Python零基础入门-安装python开发工具 VisualStudio安装指导(可用于C、C++、C...

Python:11个比较好用的自带脚本工具

大家好,我是码上开心,一名程序员,每周会给大家分享一些日常好用的工具以及Java、Go、Python以及前端相关技术知识,欢迎大家关注、点赞、转发,祝大家天天开心。今天给大家分享11个python比较...

还在发愁不会用python?Python编程的终极十大工具

Jupyter Notebook:编程明星PyCharm:专业的集成开发环境Requests:轻松处理HTTP请求Pandas:数据处理的瑞士军刀Matplotlib:绘制精美的图表Numpy:数值计...