【MCP】从零开始了解模型上下文协议MCP

关于MCP

MCP简介

MCP的全称是 Model Context Protocol,是一个开放协议,它使 LLM 应用与外部数据源和工具之间的无缝集成成为可能。无论你是构建 AI 驱动的 IDE、改善 chat 交互,还是构建自定义的 AI 工作流,MCP 提供了一种标准化的方式,将 LLM 与它们所需的上下文连接起来。

用下面这个图来理解会更形象,将 MCP 想象成智能体应用程序的 USB-C 接口,它为连接 AI 模型与不同的数据源和工具提供了标准化的方法。

入门前文档

如果和我一样对MCP不太了解的小伙伴,可以通过如下文档对MCP进行初步了解,更多文档可以查看【友情链接】

习惯中文的小伙伴可以查看MCP中文文档,中文文档地址:mcp-docs.cn/introductio...

MCP官方简介:www.anthropic.com/news/model-...

MCP官网文档:modelcontextprotocol.io

MCP官方服务示例:github.com/modelcontex...

目前已有很多社区和三方服务了

MCP通用架构图

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

  • MCP Hosts:希望通过 MCP 访问数据的 Claude Desktop、IDE 或 AI 工具等程序
  • MCP Servers::轻量级程序,通过标准的 Model Context Protocol 提供特定能力
  • MCP Clients:与MCP服务器保持一对一连接的协议客户端
  • 本地数据源:MCP 服务器可以安全访问的计算机文件、数据库和服务
  • 远程服务:MCP 服务器可以连接到的 Internet 上可用的外部系统(例如,通过 APIs)

MCP主要组成部分

MCP针对开发者来说有三个主要的组成部分:

  • MCP协议规范:MCP协议开发规范
  • 本地MCP服务的支持:提供对本地MCP服务的支持(不单指Claude Desktop,通指支持MCP服务的客户端)
  • 开源MCP服务器库:帮助开发者构建MCP服务

MCP核心概念

MCP有以下几个核心功能:

  • Resources:可以被 clients 读取的类文件数据(如 API 响应或文件内容)
  • Prompts:预先编写的模板,帮助用户完成特定任务
  • Tools:可以被 LLM 调用的函数(需要用户批准)
  • Sampling:servers通过 client 请求 LLM 补全,从而实现复杂的 agentic 行为
  • Roots:告知servers关于resources相关的信息
  • Transports:传输层,包含 stdio(标准输入/输出,常用)、 SSE(服务器发送事件)和 Streamable HTTP(常用)

MCP服务开发方式

MCP Server目前有 Python、TypeScript、Java、Kotlin、Ruby、C#、Swift 等7 种环境开发方式,目前使用最多的开发语言为 Python 和 TypeScript :

  • 基于TypeScript语言开发:使用NPX运行
  • 基于Python语言开发:使用UVX或者PIP运行

安装环境依赖

依次执行上面命令行环境检查如有提示"command not foud"表示没有安装对应的UV命令行环境,需要进行安装。

官方推荐安装方式,文档地址:modelcontextprotocol.io/quickstart/...

php 复制代码
# macOS/Linux
$ curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" 

MCP客户端

MCP客户端一开始只有Claude Desktop app,随着MCP的爆火,陆续涌现了众多MCP客户端,如 Cline、Roo Code、Continue、Cursor、Cherry Studio、ChatWise等等,这些客户端大致可以分为 桌面端、编辑器、插件 3大类。

Claude Desktop app

Claude桌面端之前一直没有使用过,这里单独了解一下。

1、MacOS版本要求11.0及更高版本

2、选择合适的科学网络

3、没有订阅Claude的也可以不用安装,没有订阅Claude无法使用MCP

点击应用程序拖拽到【Applications】进行安装

打开Claude桌面端,输入邮箱进行登录

登录完成后即可进入Claude桌面端

Cherry Studio桌面端

关于Cherry Studio的安装和使用可以参考往期内容:
【Cherry Studio】Cherry Studio让人爱不释手的AI Chat

Cursor编辑器客户端

关于 Cursor 的安装和使用可以参考往期内容:
【Cursor】安装注册

插件类客户端

常见的几个插件类的客户端,在往期内容中多少都了解过,感兴趣的小伙伴可以看往期

Cline:【VS Code】Cline+DeepSeek平替Cursor?

Roo Code:【VS Code】Roo Cline正式更名为Roo Code

Continue:【VS Code】AI代码助手Continue体验如何?

SQLite MCP案例

我们跟着MCP中文文档中的入门案例进行操作,了解一下MCP的基本配置和使用过程,详细信息查看MCP中文文档地址:mcp-docs.cn/quickstart

SQLite MCP服务简介

该示例为Claude Desktop客户端通过SQLite MCP可以访问本地SQLite服务的配置过程

前提条件

  • 操作系统macOS 或 Windows
  • 安装最新版本的 Claude Desktop (下载地址可参考友情链接)
  • UV 0.4.18 或更高版本(uv --version 检查):一个Python的包及项目管理工具
  • SQLite(sqlite3 --version 检查):本地数据库

创建数据库文件

在命令行中执行如下指令,在本地创建一个sqlite3数据库文件,我这里将文件指定到桌面目录下

sql 复制代码
# 创建一个新的 SQLite 数据库
sqlite3 /Users/username/Desktop/test.db <<EOF
CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  name TEXT,
  price REAL
);
INSERT INTO products (name, price) VALUES
  ('Widget', 19.99),
  ('Gadget', 29.99),
  ('Gizmo', 39.99),
  ('Smart Watch', 199.99),
  ('Wireless Earbuds', 89.99),
  ('Portable Charger', 24.99),
  ('Bluetooth Speaker', 79.99),
  ('Phone Stand', 15.99),
  ('Laptop Sleeve', 34.99),
  ('Mini Drone', 299.99),
  ('LED Desk Lamp', 45.99),
  ('Keyboard', 129.99),
  ('Mouse Pad', 12.99),
  ('USB Hub', 49.99),
  ('Webcam', 69.99),
  ('Screen Protector', 9.99),
  ('Travel Adapter', 27.99),
  ('Gaming Headset', 159.99),
  ('Fitness Tracker', 119.99),
  ('Portable SSD', 179.99);
EOF

创建完成后可在桌面上看到该数据库文件

执行如下命令可以查到结果说明数据库创建成功

配置Claude Desktop

如果claude_desktop_config.json不存在,需要自己手动创建

在文本编辑器中打开 ~/Library/Application Support/Claude/claude_desktop_config.json 中的 Claude Desktop 应用配置

如果你安装了VS Code可以直接使用如下命令行

javascript 复制代码
$ code ~/Library/Application\ Support/Claude/claude_desktop_config.json

如果没有claude_desktop_config.json文件需要自己手动创建

shell 复制代码
$ touch ~/Library/Application\ Support/Claude/claude_desktop_config.json

打开claude_desktop_config.json文件后编辑文件如下:

json 复制代码
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/Users/YOUR_USERNAME/test.db"]
    }
  }
}

命令解析:

  • mcpServers:mcp服务配置对象
  • sqlite:当前mcp服务的名称
  • command:执行的命令是vux
  • args:执行命令的参数

上面配置相当于通过运行 vux mcp-server-sqlite --db-path /Users/YOUR_USERNAME/test.db 启动一个名为 sqlite 的mcp服务,更多Sqlite用法可以参考MCP Sqlite服务库:github.com/modelcontex...

在Claude Desktop使用

Claude订阅用户看这里,只有Claude订阅用户才可以正常使用MCP

重启Claude Desktop桌面应用(重启是为了Claude Desktop重新加载配置文件),重启后在Claude Desktop右下角看到一个🔨标志表示配置成功

输入提示词验证结果(我不是Claude订阅用户,这里就不演示了)

复制代码
你现在可以访问Sqlite数据库,请告诉我数据库中产品名称及价格

在Cline中使用

建议在Act模式下使用

点击右上角【MCP Servers】进入MCP Servers配置

点击【Configure MCP Servers】打开配置文件

在配置文件中,配置如下Sqlite信息

json 复制代码
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/Users/YOUR_USERNAME/test.db"]
    }
  }
}

配置完成后保存,在MCP Servers服务列表就可以看到刚刚配置的Sqlite MCP服务启用状态

点击【sqlite】展开可以对MCP服务进行数据库授权,我这里为其授权了 read_query(Select查询权限)、list_tables(列举所有表权限)、describe_table(获取表的详细信息权限)权限,这样Cline在访问Sqlite数据库时就不会一直请求授权了

输入提示词,Cline就会通过我们定义的sqlite服务读取数据库信息了

复制代码
你现在可以访问Sqlite数据库,请告诉我数据库中产品名称及价格

在Cursor中使用

当前Cursor版本0.45.11,使用Agent模式

进入Cursor配置页面,切换到【Features】,点击【Add new MCP server】添加一个MCP server

输入MCP Name为【sqlite】, Type类型选择【command】, Command输入如下执行指令,点击【Add】添加

bash 复制代码
uvx mcp-server-sqlite --db-path /Users/YOUR_USERNAME/test.db

等待sqlite前面的状态变为绿色即为添加成功(如果状态一致没有变化可以点击右侧的刷新按钮进行手动刷新),可以看到这里默认为sqlite服务添加了所有权限

输入提示词,Cursor就会通过我们定义的sqlite服务读取数据库信息了

复制代码
你现在可以访问Sqlite数据库,请告诉我数据库中产品名称及价格

使用快捷键【Cmd+I】唤起Composer,选择【agent】模式(Chat模式和Composer的normal模式下Cursor无法直接使用MCP服务)

可以看到Cursor调用了对应的MCP工具并为我们输出了数据内容

MCP交互流程

  • 服务器发现:Claude Desktop 在启动时连接到你配置的 MCP 服务器
  • 协议握手:当你询问数据时,Claude Desktop:
  • 确定哪个 MCP 服务器可以提供帮助(在本例中是 sqlite)
  • 通过协议协商能力
  • 从 MCP 服务器请求数据或操作
  • 模型对数据结果进行格式化处理
  • 安全性
  • MCP 服务器仅暴露特定、受控的功能
  • MCP 服务器在你的机器上本地运行,它们访问的资源不会暴露在互联网上
  • Claude Desktop 需要用户确认以进行敏感操作

友情链接

友情提示

见原文:【MCP】从零开始了解模型上下文协议MCP

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。

相关推荐
大模型真好玩17 小时前
LangGraph实战项目:从零手搓DeepResearch(三)——LangGraph多智能体搭建与部署
人工智能·langchain·mcp
骑猪兜风2331 天前
Claude 新功能 Skills 横空出世,比 MCP 更高效的 AI 增强方案!
ai编程·claude·mcp
AI大模型2 天前
Spring AI 番外篇01:MCP Streamable HTTP 模式
程序员·llm·mcp
带刺的坐椅2 天前
LangChain4j 比 SolonAI 强在哪?弱在哪?
java·ai·langchain·solon·mcp
MichaelIp3 天前
基于MCP协议的多AGENT文章自动编写系统
语言模型·langchain·prompt·ai写作·llamaindex·langgraph·mcp
后端小张3 天前
[AI 学习日记] 深入解析MCP —— 从基础配置到高级应用指南
人工智能·python·ai·开源协议·mcp·智能化转型·通用协议
let_code5 天前
初识模型上下文协议-MCP
mcp
秃头摸鱼侠5 天前
在 Claude Code 中设置 MCP 服务器(技术总结)
claude·mcp
关关长语6 天前
(一) Dotnet使用MCP的Csharp SDK
网络·.net·mcp