MCP浅记
·
一、MCP在大模型应用中的角色
MCP在大模型应用中扮演的是 "能力扩展器" 和 "统一接口标准" 的角色
MCP在大模型架构中的位置

详细交互流程

MCP在其中的具体角色
1. 工具发现者
# MCP服务器告诉客户端:我能做什么
@mcp.tool()
def get_weather(city: str) -> str:
"""获取城市天气""" # 这就是工具描述
@mcp.tool()
def query_database(sql: str) -> list:
"""执行SQL查询""" # 大模型根据描述决定调用哪个
2. 协议翻译官
大模型的"语言" → MCP标准协议 → 你的业务代码 → 后端服务
↓ ↓
"我想知道北京天气" → {"tool":"get_weather","params":{"city":"北京"}}
→
实际API调用
3. 能力扩展器
# 没有MCP:大模型只能靠训练数据
LLM: "北京天气?我只能根据2023年的训练数据回答..."
# 有MCP:大模型可以获取实时信息
LLM: "让我查一下实时天气..."
→ MCP调用 → 实时API → "北京现在24℃,多云"
二、整体架构及角色定位

三、从零创建并验证MCP Server
3.1 环境准备
必需组件:
- Python 3.8+
- uv(Python包管理工具,比pip更快)
- MCP SDK:
pip install mcp
安装uv:
# Linux/Mac
curl -LsSf https://astral.sh/uv/install.sh | sh
3.2 创建一个简单的MCP Server示例
我们将创建一个"金十数据市场快讯"MCP Server,它能实时抓取并总结财经快讯。
项目结构:
jin10-news-summarizer/
├── main.py # MCP Server主文件
├── pyproject.toml # 项目配置
└── README.md
main.py 关键代码:
# 创建全局 FastMCP 服务器对象
mcp = FastMCP("jin10-news-summarizer")
summarizer = Jin10NewsSummarizer()
@mcp.tool()
def summarize_jin10_market_news(
limit: int = summarizer.config["output"]["default_limit"],
) -> str:
"""
抓取并总结金十数据网站的市场快讯。
功能:
- 从金十官网抓取最新市场快讯内容
- 过滤过短或噪声信息,按关键字大致区分“重要”与“普通”快讯
- 生成一段结构化的中文总结文本,包含重要事件列表、其他资讯及简单影响说明
参数:
- limit: int,可选,期望获取并用于总结的快讯条数。
实际会被限制在 [1, 配置中的 max_limit] 区间内。
返回:
- 若抓取和解析成功:返回一段 Markdown 风格的中文总结字符串,可直接展示给终端用户。
- 若网站不可达或页面结构变化导致解析失败:返回“市场快讯获取异常,请稍后重试。” 提示文本。
"""
# 约束 limit 范围,防止异常参数
min_limit = 1
max_limit = summarizer.config["output"]["max_limit"]
limit = max(min_limit, min(limit, max_limit))
try:
news_items = summarizer.fetch_market_news(limit)
return summarizer.generate_summary(news_items)
except Exception as e:
logger.error(f"处理请求时出错: {e}")
return "市场快讯获取异常,请稍后重试。"
if __name__ == "__main__":
mcp.run(transport="sse", host="0.0.0.0", port=80)
3.3 本地验证:使用 mcp dev 启动测试
mcp dev main.py
这个命令会自动:
- 启动MCP Inspector(官方提供的图形化调试工具)
- 建立与你的MCP Server的STDIO连接
- 在浏览器中打开调试界面
- 生成认证token并自动配置
3.4完整验证步骤
步骤1:在项目目录下启动MCP Inspector
mcp dev main.py
步骤2:观察启动日志
你会看到类似以下的终端输出

关键信息解读:
- 代理服务器端口:
6277- MCP Inspector的代理监听端口 - Session token:认证令牌,用于安全连接
- Web界面地址:
http://localhost:6274- 打开这个URL进入图形化界面 - 自动打开浏览器:Inspector会自动尝试打开默认浏览器
步骤3:在浏览器中使用MCP Inspector





四、总结与最佳实践
4.1开发MCP Server的要点
✅ 保持工具描述清晰 - 大模型依赖描述理解工具功能
✅ 设计合理的参数schema - 使用JSON Schema规范输入
✅ 处理错误和超时 - 提供优雅的错误信息
✅ 实现幂等性 - 相同参数调用多次应返回相同结果
4.2使用MCP Inspector的最佳实践
🔹 开发阶段:使用 mcp dev 快速迭代和调试
🔹 测试阶段:在Inspector中验证所有工具和参数组合
🔹 部署前:使用 mcp inspect 生成文档检查清单
🔹 集成测试:通过Inspector模拟真实调用场景
五、下一步
- 发布你的MCP Server:将其注册到MCP Registry,供其他人使用
- 集成到大模型应用:在Claude Desktop、Cursor等支持MCP的工具中使用
- 构建复杂工具链:组合多个MCP Server,构建强大的AI Agent
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)