1545 字
约 5 分钟
2
什么是 MCP?用一个“奶茶助手”做出你的第一个 MCP 服务

什么是 MCP?用一个“奶茶助手”做出你的第一个 MCP 服务

MCP 的全称是 Model Context Protocol,中文通常译为“模型上下文协议”。

它解决的问题很简单:大模型想查数据库、读文件、调用 API、运行工具时,过去每接一个系统都要单独开发;MCP 提供了一套统一的连接方式,让 AI 应用可以像插 USB-C 一样接入不同的工具和数据源。MCP 官方介绍

一句话理解:

Function Calling 是模型“提出调用工具的请求”,MCP 是让不同工具以统一方式被 AI 应用发现和调用的标准。

MCP 由谁组成?

一个典型 MCP 系统有三部分:

用户
→ AI 应用(Host)
→ MCP Client
→ MCP Server
→ 数据库、文件、业务 API
  • Host:用户实际使用的 AI 应用,例如聊天助手、IDE 或 Agent;
  • MCP Client:Host 内部负责和 MCP Server 通信的客户端;
  • MCP Server:你开发的服务,向 AI 暴露特定能力。

MCP 通常基于 JSON-RPC 通信。连接建立后,客户端与服务端会先协商能力,再进入正常调用阶段。MCP 生命周期规范

MCP 服务可以提供什么?

MCP 服务主要可以暴露三类能力:

能力 作用 例子
Resources 提供可读取的上下文数据 文件、数据库结构、系统状态
Prompts 提供可复用的提示词模板 “生成日报”“分析异常”
Tools 提供可执行的函数 查库存、调用 API、创建工单

官方规范将它们分别定义为:资源、提示词和工具;其中工具可用于查询数据库、调用 API 或进行计算。MCP 功能概览 MCP Tools 规范

做一个好玩的例子:奶茶助手 MCP

假设你有一家虚拟奶茶店,想让 AI 能回答:

现在珍珠奶茶还有吗? 我今天加班很累,推荐喝什么? 帮我查一下芋泥波波的价格。

可以做一个 MCP Server,提供两个工具:

check_stock(drink_name)     # 查询库存
recommend_drink(mood)       # 按心情推荐饮品

用 Python 伪代码表示,核心逻辑大致如下:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("奶茶助手")

MENU = {
    "珍珠奶茶": {"stock": 12, "price": 15},
    "芋泥波波": {"stock": 0, "price": 18},
    "柠檬茶": {"stock": 20, "price": 12}
}

@mcp.tool()
def check_stock(drink_name: str) -> dict:
    """查询某款饮品的库存和价格。"""
    drink = MENU.get(drink_name)
    if not drink:
        return {"found": False, "message": "菜单中没有这款饮品"}

    return {
        "found": True,
        "drink_name": drink_name,
        "stock": drink["stock"],
        "price": drink["price"]
    }

@mcp.tool()
def recommend_drink(mood: str) -> str:
    """根据用户状态推荐饮品。"""
    if mood in ["困", "加班", "疲惫"]:
        return "推荐柠檬茶:清爽一些,适合提神。"
    if mood in ["开心", "庆祝"]:
        return "推荐珍珠奶茶:来点甜的庆祝一下。"
    return "推荐少糖珍珠奶茶。"

if __name__ == "__main__":
    mcp.run()

当 AI 应用连接这个 MCP Server 后,它会发现这里有两个工具。用户问“芋泥波波还有吗”时,模型会提出调用:

{
  "name": "check_stock",
  "arguments": {
    "drink_name": "芋泥波波"
  }
}

服务端返回库存为 0,模型再自然地回答:

芋泥波波目前缺货,暂时无法购买;可以考虑珍珠奶茶或柠檬茶。

这就是 MCP 的基本工作方式。

一个 MCP Server 的实现步骤

实现时可以按下面思路推进:

1. 确定 AI 需要什么能力
2. 把能力设计成小而明确的工具
3. 定义每个工具的输入参数和返回结果
4. 在工具内部连接真实数据库或 API
5. 配置客户端连接 MCP Server
6. 测试正常、异常和越权场景

例如,真正的企业场景中,你可以做:

  • “查订单” MCP;
  • “公司制度问答” MCP;
  • “读取实验仪器状态” MCP;
  • “查询销售数据并生成图表” MCP;
  • “从 Git 仓库读取代码、创建 Issue” MCP。

MCP 和 RAG、Agent 有什么关系?

三者经常一起用,但职责不同:

RAG:从知识库中检索资料
MCP:标准化连接外部工具和数据
Agent:规划步骤、决定调用什么工具

例如用户说:

找出本月销售下降的原因,并生成报告。

Agent 会规划任务; 它可能通过 MCP 调用销售数据库、库存系统和报表服务; 也可能通过 RAG 检索促销方案、会议纪要和客户反馈; 最后由大模型生成报告。

所以,MCP 不是 RAG 的替代品,而是让 Agent 能更方便地连接 RAG、数据库、文件系统和业务 API 的“统一接口”。

做 MCP 时最重要的四个原则

工具要小,不要万能。 不要直接提供 run_any_sql(sql),而应提供 get_monthly_sales(month)get_product_inventory(product_id) 这类明确工具。

模型没有最终权限。 模型可以提出调用请求,但服务端必须校验参数、用户身份和权限。查询工具可自动执行;删除数据、退款、发邮件等操作应要求用户确认。

不要让模型猜关键参数。 订单号、收件人、金额、客户 ID 不明确时,应追问用户或给出候选项,而不是自行猜测。

所有调用都应可追溯。 记录谁调用了什么工具、使用了哪些参数、结果是什么、是否失败或被拒绝。

结语

MCP 的价值不在于让模型“获得更多权限”,而在于让 AI 与外部世界的连接变得标准、可复用、可控。

从一个“奶茶助手”开始,你就已经能理解它的核心:把真实能力封装为规范工具,让 AI 在授权范围内发现、调用并利用这些能力。

什么是 MCP?用一个“奶茶助手”做出你的第一个 MCP 服务
http://clxhxhhr.top/posts/589/
作者
clxstart
发布于
2026-09-12
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。