一、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

这个命令会自动:

  1. 启动MCP Inspector(官方提供的图形化调试工具)
  2. 建立与你的MCP Server的STDIO连接
  3. 在浏览器中打开调试界面
  4. 生成认证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模拟真实调用场景

五、下一步

  1. 发布你的MCP Server:将其注册到MCP Registry,供其他人使用
  2. 集成到大模型应用:在Claude Desktop、Cursor等支持MCP的工具中使用
  3. 构建复杂工具链:组合多个MCP Server,构建强大的AI Agent

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐