第一个本地stdio MCP看这篇就够了:从Python SDK创建到Cherry Studio调试再到Cursor集成
本文详细介绍了如何从零开始搭建一个MCP Server的全流程。首先通过uv工具初始化Python项目并安装MCP SDK,然后编写包含Tool、Resource和Prompt三大核心功能的示例代码。文章提供了完整的代码模板,演示了加法器、问候语生成器等实用功能。随后指导读者在Cherry Studio中配置MCP服务器并进行功能测试,最后简要说明如何将MCP迁移到Cursor中使用。通过这篇实操
前言
最近 MCP(Model Context Protocol)生态火热,各类教程层出不穷。但真正从零开始、完整跑通"创建 → 调试 → 集成"全流程的实操文章并不多,本篇文章在博主“技术爬爬虾”的肩膀上构建,感谢博主。
本文的目标很简单:手把手带你完成第一个 MCP Server,从 Python SDK 创建、理解三大核心概念,到在 Cherry Studio 和 Cursor 中实际使用。跟着做,你就能跑起来!
一、环境准备:安装 uv 并初始化项目
网站:https://docs.astral.sh/uv/getting-started/installation/
1.1 为什么用 uv?
官方 Python SDK 推荐使用 uv 作为包管理器,它比 pip 快很多,依赖管理也更优雅。
1.2 安装 uv
打开网站
打开任务管理器
Windows(PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
安装完成后,终端验证。
uv --version
成功下载后检查python版本。
uv python list

如果没安装可以使用命令进行下载
uv python install <版本>

1.3 初始化项目
在桌面新建一个文件夹
开始初始化后面带前面下载python的版本
uv init . -p <版本>
# 安装 MCP 开发包sdk
uv add "mcp[cli]"

这一步会生成 pyproject.toml 和基础项目结构。
二、编写第一个 MCP Server
标题打开项目中的 main.py,我们来编写一个完整的 MCP Server。(或者跳到2.5,一样的)
打开sdk将main.py换成以下代码:
MCP Python SKD网站:
https://github.com/modelcontextprotocol/python-sdk

把最后一行的streamable-http改成stdio
这样代码部分就完事了,以后根据这个模板来修改mcp的功能就可以,高级功能以后出一期。本期先用示例“加法器”,来讲解。
2.1 基础结构(关于这个介绍可以看我前几期的介绍)
from mcp.server.fastmcp import FastMCP
# 创建 MCP 服务器实例
mcp = FastMCP("Demo", json_response=True)
if __name__ == "__main__":
mcp.run(transport="stdio")
就这么简单!FastMCP 是官方提供的高层封装,让我们能用装饰器快速定义功能。
2.2 实现 Tool:让 AI 调用你的功能(介绍)
Tool 是 MCP 中最常用的概念,让 AI 能执行操作(可能产生副作用):
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
使用 @mcp.tool() 装饰器,函数名和参数会自动暴露给 AI。AI 看到的是:有一个叫 add 的工具,接收两个整数,返回它们的和。
2.3 实现 Resource:让 AI 读取你的数据(介绍)
Resource 用于暴露数据给 AI(类似只读的 GET 请求):
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
这里定义了一个动态资源 greeting://{name},AI 可以通过 greeting://World 来获取 "Hello, World!"。
2.4 实现 Prompt:提供预定义提示词模板(介绍)
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",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
用户选择这个 Prompt 后,AI 会收到预填充的提示词,省去每次手动输入的麻烦。
2.5 完整代码(直接粘,和完整代码一样,下面那个我改好了)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Demo", json_response=True)
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
@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",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
if __name__ == "__main__":
mcp.run(transport="stdio")
三、使用 Cherry Studio 调试 MCP
3.1 配置 MCP Server
这里初次需要配置。
配置好两个。
打开 Cherry Studio,进入「设置 → MCP 服务器」,添加快速创建:

如图配置。
参数是固定格式,第二行是项目地址
--directory
C:\Users\kingwu\Desktop\mcp-server
run
main.py
成功标志出现一串数字。
3.2 测试功能
点击模型,配置密钥,我用的是deepseek。
开始测试我们的mcp
然后选择加法器

和模型对话可以看见,模型使用加法器mcp计算。阶段性成功
四、迁移到 Cursor 使用 MCP
4.1 配置方式
Cursor 同样支持 MCP,配置位置略有不同。
打开 Cursor 设置,找到 MCP 配置文件(路径因版本而异,常见位置如 ~/.cursor/mcp.json 或项目根目录的 .cursor/mcp.json,以实际版本为准)或者

回到cherry负责配置文件。点击编辑。
复制JSON,回到cursor。
粘贴配置JSON。
绿灯代表成功。
4.2 实际使用
在 Cursor 中,你可以:
- 让 AI 调用你定义的 Tool 来辅助编码
- 通过 Resource 让 AI 读取项目配置
- 使用 Prompt 快速生成特定格式的代码注释
实践建议:先在 Cherry Studio 调试验证功能正确,再迁移到 Cursor 实际使用。
总结
本文从零开始带你完成了:
| 步骤 | 内容 |
|---|---|
| 环境准备 | 安装 uv,初始化项目,安装 mcp[cli] |
| 编写 Server | 理解并实现 Tool、Resource、Prompt |
| 调试验证 | Cherry Studio 可视化测试 |
| 实际集成 | 迁移到 Cursor 编码环境 |
三大核心概念速记:
- Tool = 执行操作(类似 POST)
- Resource = 暴露数据(类似 GET)
- Prompt = 提示词模板
进阶建议:尝试添加更复杂的 Tool(如调用外部 API),或实现动态 Resource 列表,让你的 MCP Server 更强大!
本文首发于 CSDN,作者:kingwu
更多推荐



所有评论(0)