MCP

介绍

MCP(Model Context Protocol,模型上下文协议)

MCP 是一个开放协议,它规范了应用程序向 LLM 提供上下文的方式。MCP 就像 AI 应用程序的 USB-C 端口一样。正如 USB-C 提供了一种标准化的方式将您的设备连接到各种外围设备和配件一样,MCP 也提供了一种标准化的方式将 AI 模型连接到不同的数据源和工具。

总体架构(C/S架构)

MCP 的核心遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器:

2025-05-04T09:52:09.png

  • MCP Host(MPC主机): 运行MCP的主应用程序(Cursor,Cline等工具),一般集成MCP Client。

2025-05-04T09:52:20.png

  • MCP Client(MPC客户端): 与服务器保持 1:1 连接的协议客户端,充当LLM和MCP server的桥梁,负责请求转发对应请求和响应。

2025-05-04T09:52:31.png

  • MCP Server(MPC服务器): 轻量级程序,每个程序都通过MCP公开特定功能,负责本地和远程资源的检索。本质是运行在电脑的一个node.js或python程序(使用TS编写通过npx命令运行,使用python编写通过uvx命令运行)。

2025-05-04T09:52:39.png

  • Local Data Source(本地资源): MCP 服务器可以安全访问的计算机上的文件、数据库和服务。
  • Remote Services(远程资源): MCP 服务器可以通过互联网(例如通过 API)连接到的外部系统。

2025-05-04T09:52:47.png

通信机制

MCP 包括两种标准传输实现:

标准输入/输出(stdio)

stdio 传输通过标准输入和输出流实现通信。主要应用本地集成和命令行工具。

  • 构建命令行工具
  • 实现本地集成
  • 需要简单的进程通信
  • 处理 shell 脚本

    服务器发送事件(SSE)

SSE 传输支持服务器到客户端的流式传输,并使用 HTTP POST 请求进行客户端到服务器的通信。

在以下情况下使用 SSE:

  • 只需要服务器到客户端的流式传输
  • 在受限网络中工作
  • 实现简单更新

资源

Client:

Pulse:https://www.pulsemcp.com/clients

Awesome MCP Clients:https://github.com/punkpeye/awesome-mcp-clients

MCP Server:

官方:https://github.com/modelcontextprotocol/servers

Smithery :https://smithery.ai/

MCP so:https://mcp.so/

Awesome MCP Servers:https://github.com/punkpeye/awesome-mcp-servers

阿里百炼:https://bailian.console.aliyun.com/?tab=mcp#/mcp-market

实践

stdio本地环境

Python的uvx : pip install uv

TypeScript的npx: node

host: Cursor

需求

编写一个五一假期北京5日游出行攻略

1.从高德地图的MCP服务中获取从北京丰台站到天安门,颐和园,长城,南锣鼓巷,天坛,三里屯,清华大学,北京大学的路路线(包括:地铁,步行,共享单车),并保存数据库beijing_trips的表Transportation_trips中。

2.从高德地图的MCP服务中获取 上述景点的美食信息,每处获取三家美食店铺的信息,并将相应的信息存入location_foods中。

3.在工作目录创建一个新的文件夹名叫北京旅游攻略,在其中创建两个txt分别存储两个表的内容。

4.最后根据txt文件内容,生成精美的前端html展示页面,存放在当前目录。。

需求MCP服务:高德MCP,文件操作MCP,数据库操作MCP

Cursor设置

全局设置:Cursor settings-->MCP-->Add MCP server

2025-05-04T09:53:07.png

项目级别设置:

当前目录创建.cursor 目录下新建mcp.json 文件,仅对当前项目生效

结果

2025-05-04T09:53:17.png

参考资源

尚硅谷:https://www.bilibili.com/video/BV1eK5DzHEWu/?spm_id_from=333.337.search-card.all.click

MCP官网:https://modelcontextprotocol.io/