Level 435 分钟

MCP 协议与工具接入

理解 Model Context Protocol 及其在 AI Agent 中的应用

MCP 协议:标准化的工具接入

什么是 MCP?

MCP (Model Context Protocol) 是一个开放协议,让 AI 模型能够:

  • 统一方式连接各种数据源和工具
  • 跨平台使用相同的工具生态
  • 简化 AI Agent 的开发

MCP 的核心概念

1. Resources(资源)

AI 可以读取的数据源:

  • 文件内容
  • 数据库记录
  • API 响应

2. Tools(工具)

AI 可以调用的操作:

  • 搜索网络
  • 发送邮件
  • 执行代码

3. Prompts(提示模板)

预定义的提示词模板,可以被 AI 调用。

MCP 服务器结构

// 一个简单的 MCP 服务器示例
const server = new MCPServer({
  name: "my-tools",
  version: "1.0.0"
});

// 注册工具
server.registerTool({
  name: "calculate",
  description: "执行数学计算",
  inputSchema: {
    type: "object",
    properties: {
      expression: {
        type: "string",
        description: "数学表达式,如 2+2"
      }
    },
    required: ["expression"]
  },
  handler: async (input) => {
    const result = eval(input.expression);
    return { result };
  }
});

// 启动服务器
server.start();

MCP 工具定义最佳实践

1. 清晰的工具描述

{
  "name": "search_web",
  "description": "搜索互联网获取实时信息。适用于:查询最新新闻、搜索特定主题、验证事实。不适用于:需要账号登录的内容、付费内容。"
}

2. 详细的参数说明

为每个参数提供:

  • 清晰的 description
  • 合适的类型
  • 示例值

3. 合理的错误处理

handler: async (input) => {
  try {
    const result = await doSomething(input);
    return { success: true, data: result };
  } catch (error) {
    return { 
      success: false, 
      error: error.message,
      suggestion: "请检查输入参数是否正确"
    };
  }
}

常用 MCP 工具模式

信息检索类

{
  "name": "search_*",
  "description": "搜索/查询/获取信息"
}

内容生成类

{
  "name": "generate_*",
  "description": "生成图片/文档/代码"
}

操作执行类

{
  "name": "send_* / create_* / update_*",
  "description": "发送消息/创建资源/更新状态"
}

MCP 与 Function Calling 的关系

| 特性 | Function Calling | MCP | |------|------------------|-----| | 标准化 | 各厂商不同 | 统一标准 | | 生态 | 需要自己实现 | 可复用社区工具 | | 跨平台 | 绑定特定模型 | 模型无关 |

实战:创建一个 MCP 工具

// 天气查询工具
{
  name: "get_weather",
  description: "查询城市天气。返回温度、天气状况、湿度等信息。",
  inputSchema: {
    type: "object",
    properties: {
      city: {
        type: "string",
        description: "城市名称(中文),如:北京、上海"
      },
      days: {
        type: "number", 
        description: "预报天数,1-7",
        default: 1
      }
    },
    required: ["city"]
  }
}

练习

设计一个 MCP 工具,用于:

管理 Todo 列表(添加、完成、删除、查询)

思考:

  • 需要几个工具?还是一个工具多个操作?
  • 每个操作需要什么参数?
  • 如何处理不存在的任务?

小结

  • MCP 是 AI 工具生态的标准化协议
  • 统一了工具定义和调用方式
  • 好的工具设计 = description + parameters + error handling
  • 社区化的工具生态正在快速发展

恭喜完成 Skills 核心课程!

加载中...