Published on

AI探秘-MCP我懂你!

Authors
  • avatar
    Name
    noodles
    每个人的花期不同,不必在乎别人比你提前拥有

目录

  1. MCP
  2. MCP 组件详解
  3. MCP 实现
  4. MCP 使用

本文由浅入深介绍MCP的基本概念和使用方式。

MCP

MCP(Model Context Protocol)是由Anthropic发布了一种大模型与外部数据源工具的集成标准。它定义了大模型如何安全、高效地访问和利用外部资源。

为什么需要MCP

  • 模型幻觉 大模型回答不了解的问题时可能产生虚假信息
  • 信息过时 训练数据可能过时,无法提供最新信息
  • 功能局限 大模型只能对话,无法执行实际任务

一句话:MCP 是“插座标准”,负责把外设接进来。

MCP Host(宿主应用)

通常是LLM的宿主应用。主要负责

  • 创建和管理MCP Client
  • 与大模型LLM交互
  • 实现安全策略和权限控制
  • 协调整个MCP系统

MCP Client(客户端)

MCP Client是与大模型直接交互的组件

  • 与MCP Server交互获取可用工具
  • 接收大模型的工具调用请求
  • 执行对MCP Server的工具调用
  • 将结果返回给大模型

MCP Server(服务器)

MCP Server提供具体工具和服务的组件

  • 提供各种工具和服务
  • 处理来自Client的工具调用
  • 执行具体的业务逻辑
  • 返回执行结果
MCP架构

MCP实现

使用已有的MCP Server

  • 在cursor中可以直接查找已有的MCP Server列表,然后直接使用.
  • MCP.so提供了丰富的MCP Server列表,可以参考使用.

实现一个MCP Server

实现MCP Server需要实现MCP的交互协议.在Model Context Protocol主页上提供了不同语言SDK实现MCP Server的SDK. 以下以javascript SDK为例实现一个MCP Server.

概念作用说明
传输方式Streamable HTTP:远程服务交互;stdio:本地进程交互
registerTool注册工具,定义 MCP Server 提供的可调用工具(带输入输出 schema 和逻辑)
registerResource注册资源,定义 MCP Server 暴露的只读数据或文档
registerPrompt在 MCP Server 上注册可复用的提示词模板,供客户端/人类选择和填写参数
createMessage在工具/服务内部发起一次对大模型的调用,使用宿主提供的 sampling 能力

MCP使用

在cursor中使用MCP

在上面的代码中实现了一个简单的echo server.在cursor中通过简单配置就可以使用了. 可以打开cursor的设置,配置mcp.json文件添加mcp server的配置.

{
  "mcpServers": {
    "echo-server": {
      "command": "npx",
      "transport": "stdio",
      "args": ["tsx", "/Users/noodles/learn/learnLLM/test.ts"]
    }
  }
}
本地使用stdio方式,command + args是执行的命令和参数.里面需要的指令需要本地安装好. 配置成功
使用MCP

在自建agent中使用MCP

这部分可以参考AI探秘-LangChain使用不完全指南