自定义 MCP 本地服务搭建:stdio 与 SSE 模式及 AI 工具调用
本文介绍如何使用 Python 搭建自定义 MCP(Model Context Protocol)本地服务。步骤包括安装 uv 包管理工具、配置 Python 3.13 环境、初始化项目并安装 MCP SDK。通过编写 FastMCP 代码定义工具、资源和提示词,支持 stdio 和 SSE 两种传输模式。最后通过 Cherry Studio 客户端进行联调测试,验证 AI 对自定义功能的调用能力。

本文介绍如何使用 Python 搭建自定义 MCP(Model Context Protocol)本地服务。步骤包括安装 uv 包管理工具、配置 Python 3.13 环境、初始化项目并安装 MCP SDK。通过编写 FastMCP 代码定义工具、资源和提示词,支持 stdio 和 SSE 两种传输模式。最后通过 Cherry Studio 客户端进行联调测试,验证 AI 对自定义功能的调用能力。

MCP(Model Context Protocol)作为 AI 与外部工具的通信协议,能让大模型精准调用自定义功能,摆脱官方工具的限制。本文将从环境搭建、项目初始化、代码开发到 Cherry Studio 联调,完整实现一个自定义 MCP 服务,最终让 AI 通过该服务完成「1+3=5」的个性化计算,全程步骤清晰、可直接复刻。
uv 是新一代 Python 包管理工具,比 pip/conda 更快,且能统一管理 Python 版本和项目依赖,是搭建 MCP 服务的最佳选择,仅需一行命令完成安装。
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/uv/releases/download/0.9.27/uv-installer.ps1 | iex"
安装完成后无需额外配置,自动添加系统环境变量 验证安装:在终端输入 uv --version,输出版本号即表示安装成功
MCP 对 Python 3.13 兼容性更佳,通过 uv 可一键安装并管理该版本,无需担心多版本冲突。
uv python list
uv python install 3.13
D:\AiMcpProject>cd D:\AiMcpProject
D:\AiMcpProject>cd mcp_server
D:\AiMcpProject\mcp_server> uv init . -p 3.13
Initialized project `mcp-server` at `D:\AiMcpProject\mcp_server`
MCP SDK 是开发自定义 MCP 服务的基础,提供了 FastMCP 核心类和各类装饰器,支持 uv/pip 两种安装方式,优先推荐 uv(更快、无依赖冲突)。
uv add "mcp[cli]"
pip install "mcp[cli]"
项目初始化后,打开 main.py(PyCharm/VS Code 均可),编写核心业务代码。本次实现 3 个核心功能:个性化加法工具、动态问候资源、多风格问候提示词,且特意将加法结果「多加 1」,用于后续验证服务是否被成功调用。
main.py 内容
from mcp.server import FastMCP
# 初始化 MCP 服务,命名为 Demo(服务标识,可自定义)
mcp = FastMCP("Demo")
# 1. 自定义加法工具:核心测试功能(a+b 后多加 1,用于联调验证)
@mcp.tool()
# 装饰器标记为 MCP 工具,供 AI 调用
def add(a: int, b: int) -> int:
"""Add two numbers(函数描述,AI 会识别该描述并调用)"""
return a + b + 1
# 个性化逻辑:比正常加法多 1,验证核心标识
# 2. 动态问候资源:通过自定义协议返回个性化内容
@mcp.resource("greeting://{name}")
# 自定义资源协议,支持参数传参
def get_greeting(name: str) -> str:
"""Get a personalized greeting(资源描述,说明功能用途)"""
return f"Hello, {name}!"
# 3. 多风格问候提示词:为 AI 生成指定风格的问候语提供模板
@mcp.prompt()
# 装饰器标记为 MCP 提示词工具
def greet_user(name: str, style: str = "friendly") -> str:
"""Generate a greeting prompt(生成不同风格的问候提示词)"""
# 定义三种问候风格,默认友好风格
styles = {
"friendly": "Please write a warm, friendly greeting",
"formal": "Please write a formal, professional greeting",
"casual": "Please write a casual, relaxed greeting",
}
# 返回匹配的风格提示词,无匹配则使用友好风格
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
# 启动 MCP 服务:使用标准输入输出传输协议(stdio)本地服务,兼容 Cherry Studio
if __name__ == "__main__":
mcp.run(transport="stdio")
Cherry Studio 是一款专为 MCP 协议设计的 AI 客户端,能无缝对接自定义 MCP 服务,无需复杂的接口配置,是测试自定义 MCP 服务的最佳工具。
官网下载地址:请前往 Cherry Studio 官网下载安装
支持 Windows/macOS 系统,一键安装无附加组件 安装完成后打开,完成基础注册 / 登录(免费可用)
添加 MCP 服务器
输入完后,点保存并打开。
回到首页,输入使用 MCP 1+3 等于多少?发送输出 5 证明已调用到我们自己写的 MCP 服务中。
{
"mcpServers": {
"mcp-stdio-add": {
"command": "python",
"args": ["D:\\AiMcpProject\\mcp_server\\main.py"],
"env": {}
}
}
}
main.py 配置 SSE 和端口 8001
if __name__ == "__main__":
mcp.settings.port = 8001
mcp.run(transport="sse")
from mcp.server import FastMCP
# Create an MCP server
mcp = FastMCP("Demo")
# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b + 1
# 多加 1 测试是走了我们自己的 mcp
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
"""Generate a greeting prompt"""
styles = {
"friendly": "Please write a warm, friendly greeting",
"formal": "Please write a formal, professional greeting",
"casual": "Please write a casual, relaxed greeting",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
# sse stdio Streamable Http
__name__ == :
mcp.settings.port =
mcp.run(transport=)

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online