MCP 简介
MCP(Model Context Protocol,模型上下文协议)是专为大语言模型(LLM)应用设计的开放协议,旨在实现 LLM 与外部工具和数据源的无缝集成。它通过统一的接口规范,将原本分散的 API 工具集成简化为'即插即用'模式,解决传统 API 工具中存在的多协议适配、高开发成本等问题。
特别注意:等你跑通一遍 MCP 后,回过来再看一遍 MCP 的解释,你就会对 MCP 模型上下文协议这个概念有所了解,确实是上下文。

MCP(Model Context Protocol)可以理解为让 AI 模型(比如 ChatGPT)连接外部工具的'万能插座'。
简单来说:
- 以前 AI 只能靠自己的知识回答问题,现在通过 MCP,AI 可以安全地连接各种工具(比如读取文件、查询数据库、控制智能设备)。
- 就像给你的电脑插上 U 盘或打印机一样,MCP 让 AI 瞬间获得新能力,而且开发者可以轻松为 AI 创建新工具。
- 整个过程安全可控,AI 只能使用你明确允许的工具,不会越权访问。
举个例子:有了 MCP,你可以直接对 AI 说'帮我总结昨天写的文档',AI 就会通过 MCP 读取你的文档并生成摘要,而之前这是做不到的。
下面将通过通义灵码插件来体验下 MCP 简单的开发和使用过程。
安装插件
博主使用 VSCode 进行开发,其核心辅助工具是'通义灵码'插件。安装非常简单,只需在 VSCode 扩展商店中搜索'Lingma'并安装,登录后即可开始使用它辅助 MCP 开发。

MCP 开发
本次开发的 MCP 功能主要是查询数据库表,设置多个工具,可以通过用户昵称查询当前排名,也可以输出所有排名信息等工具。
创建表
CREATE TABLE ranking_list (
id INT NOT NULL AUTO_INCREMENT COMMENT '编号',
total_rank INT NOT NULL COMMENT '总排名',
nickname VARCHAR(100) NOT NULL COMMENT '用户昵称',
blog_homepage VARCHAR(255) NOT NULL COMMENT '博客主页',
original_score INT NOT NULL COMMENT '原创博文得分',
quality_score INT NOT NULL COMMENT '质量分得分',
identity_score INT NOT NULL COMMENT '身份得分',
interaction_score INT NOT NULL COMMENT '互动得分',
ranking_score INT NOT NULL COMMENT '上榜得分',
total_score INT NOT NULL COMMENT '排名总分',
add_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
data_memo VARCHAR(500) COMMENT '备注',
data_status TINYINT DEFAULT 1 COMMENT '数据状态(1-正常,0-删除,或其他状态码)',
PRIMARY KEY (id),
UNIQUE KEY uk_total_rank (total_rank),
INDEX idx_nickname (nickname),
INDEX idx_total_score (total_score DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='榜单排名';
提示词
既然是 AI,那就用自然语言来让 AI 帮我们写代码实现 MCP 服务功能。 核心提示词就是:编写一个 FastMCP 框架实现 MCP Server 的脚手架工程,生成 python 文件。 目的是使用 python 对应的 mcp 框架。
编写一个 FastMCP 框架实现 MCP Server 的脚手架工程,生成 python 文件。 这个 MCP 服务主要实现如下功能: 1、获取某个用户排名信息,并通过【博客主页网址】获取当前用户个人主页信息以及发表文章篇数信息 调用此工具功能,必须调用查询条件 select * from ranking_list where nickname='昵称值参数' 2、获取汇总信息 输出汇总信息 sql 语句,可以按总分等汇总信息输出 【下面是 mysql 表信息】 CREATE TABLE ranking_list ( id INT NOT NULL AUTO_INCREMENT COMMENT '编号', total_rank INT NOT NULL COMMENT '总排名', nickname VARCHAR(100) NOT NULL COMMENT '用户昵称', blog_homepage VARCHAR(255) NOT NULL COMMENT '博客主页', original_score INT NOT NULL COMMENT '原创博文得分', quality_score INT NOT NULL COMMENT '质量分得分', identity_score INT NOT NULL COMMENT '身份得分', interaction_score INT NOT NULL COMMENT '互动得分', ranking_score INT NOT NULL COMMENT '上榜得分', total_score INT NOT NULL COMMENT '排名总分', add_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间', data_memo VARCHAR(500) COMMENT '备注', data_status TINYINT DEFAULT 1 COMMENT '数据状态(1-正常,0-删除,或其他状态码)', PRIMARY KEY (id), UNIQUE KEY uk_total_rank (total_rank), INDEX idx_nickname (nickname), INDEX idx_total_score (total_score DESC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='榜单排名';
根据提示词,最终会生成的代码和结构如下:

安装依赖 觉得 AI 同时生成了 README.md 文件,帮我们把项目使用和启动等步骤都写得非常清楚,省了不少时间。

配置数据库连接 根据自己得 mysql 连接信息进行填写

启动服务
第一次启动的时候可能会提示一些报错,直接复制报错信息让 AI 进行修复即可,经过多轮修复后,启动的效果如下:

由于当前生成的代码是以 STDIO 方式启动的 MCP 服务,这里想使用的是 http 形式启动:
py app.py --transport http --host 127.0.0.1 --port 8080 --path /mcp
直接继续让 AI 进行修复兼容即可,基本不用写任何代码,全部由 AI 来完成。

下面就是以 http 方式启动效果图

复制网址在浏览器上是可以直接访问的,显示下面信息说明启动成功。

本地部署 MCP
点击右上角的用户信息,下拉点击个人设置

点击 MCP 服务


点击 MCP 右上角的加号,相关信息填写如下: 名称:mcp_demo(根据自己业务来) 类型:SSE 或 Streamable HTTP(STDIO 这个类型还没试过) 服务地址:http://127.0.0.1:8080/mcp(就是刚刚启动的地址) 高级设置:这里暂时没有用到这个就没有填写,可留空


MCP 服务这里就会自动获取对应工具信息

调用测试
询问: 示例用户目前排名第几
AI 会优先查找可用的 MCP 服务插件,然后智能调用对应的工具获取信息。


从上图可以看到,已经成功调用到 MCP,并且查询数据库返回了相关信息,最后大模型根据从 MCP 工具中数据库表获取到的数据进行优化输出,询问的是示例用户当前排名第几,不仅输出了用户是第几名,还有额外的具体各维度得分信息输出。 很显然,MCP 在整个大模型 AI 输出过程中起到了数据补充的作用,是不是有点像知识库一样,而且还是动态化的数据,相比起知识库会更加灵活。
再测试个例子: 询问: 总分都有那些档次,划分档次并统计都有多少名用户


从上图可以看到,根据用户的提问 AI 能够准确知道调用获取所有排名的 MCP 工具,然后再进行汇总输出输出,是不是非常有意思,有没有对 MCP 有一定了解了。
| 档次划分 | 分数范围 | 人数 |
|---|---|---|
| 顶级 | 500 分 | 1 |
| 超高级 | 470-489 分 | 4 |
| 高级 | 450-469 分 | 61 |
| 中级 | 440 分 | 97 |
| 良好 | 430 分 | 107 |
| 中等 | 420 分 | 84 |
| 合格 | 410 分 | 46 |
| 总计 | 410-500 分 | 300 |
到此,本地化部署 MCP 服务插件就算完成了,虽然过程中会出现一些问题,但是基本都是可以通过 AI 进行多轮询问得到解决,并且在过程中基本没有写过一行代码,全程由 AI 来完成,实现思路由我们自己通过自然语言来控制。
线上部署
由于对 Windows 服务器更为熟悉,本次部署环境选定为 Windows。 具体步骤为:首先在服务器上运行 MCP 服务的 Python 程序,随后配置 Nginx 反向代理,并绑定域名以实现外网访问。
上传源码
直接将本地 python 代码上传到外网服务里

安装 Python
在启动前确保已经安装了 python 相关软件。 安装 python 软件的 cmd 命令,直接通过链接下载安装
# 下载 Python 安装程序 curl -o python-installer.exe https://www.python.org/ftp/python/3.14.0/python-3.14.0-amd64.exe
或者直接下载进行安装(推荐用这个方式,下载速度比较快)

cmd 命令:python --version,能够显示版本号则标识已经安装成功

安装依赖
直接在当前 python 文件目录执行 cmd 命令,README.md 这个文件里也有具体步骤:
pip install-r requirements.txt

启动服务
在当前目录下,执行下面命令启动服务
py app.py --transport http --host 127.0.0.1 --port 8080 --path /mcp

nginx 反向代理
在上一步,MCP 服务已在服务器的本地环境成功启动。 接下来,需配置 Nginx 反向代理,将本地服务映射至公网域名,以实现通过域名访问。 nginx windows 版本下载地址:https://nginx.org/en/download.html

建议解压到 mcp 所在同级目录

修改 nginx.conf 文件内容,由于 80 端口已经被占用,这里使用其他端口号测试
worker_processes 1; # 必须要有 events 块
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 您的反向代理配置
server {
listen 8081;
server_name 自己域名;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
# 可选:默认的 localhost 服务器
server {
listen 8081;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
设置 bat 启动文件
@echo off
cd C:\web\mcp_demo\nginx
start nginx.exe
echo Nginx started.
pause

本地测试
直接在 VSCode 里通过域名方式来添加 MCP

上架 MCP
非常简单,和在 VSCode 里手动添加类似


工具调试



使用 MCP
创建一个智能体并使用 MCP,这里主要是用来测试,所以简单创建一个智能体引用 MCP 即可查看效果

到此,MCP 的开发、本地部署、线上部署、智能体使用 MCP 就搞定啦
MCP 和 API 区别
在开发 MCP 前有疑问,为啥不直接用 api 就得了,非得出来个 MCP,实际上他们也都是类似调用的一个地址,所以,这里还是要了解下他们之间的区别,也能知道 MCP 的核心价值。
| 特性维度 | API | MCP |
|---|---|---|
| 全称与定义 | 应用程序编程接口 一种通用技术标准与规范,定义了软件组件之间如何通信。 | 模型上下文协议 一个具体的协议和框架,专为让 AI 助手能安全、标准化地使用工具和数据源而设计。 |
| 本质与角色 | '通用语言'或'服务菜单' 任何软件(服务器、库、操作系统)都可以提供 API,任何客户端(其他软件或开发者)都可以调用。 | '专用工具箱连接协议' 它是API 的使用者,也是一个标准化的包装层。它定义 AI(客户端)如何发现、调用工具(服务器),以及工具如何被描述。 |
| 核心目的 | 实现系统间的集成与功能调用。 (例如:前端获取后端数据,App 集成支付功能) | 安全、可控地扩展 AI 助手的能力边界。 (例如:让 AI 能读取数据库、执行命令、操作日历,而无需微调模型本身) |
| 主要使用者 | 开发者 编写代码来调用。 其他软件程序也可以调用。 | AI 助手/智能体(如 Claude Desktop, Cursor 等)自动发现并调用。 (开发者负责为 AI创建MCP 工具) |
| 关系与比喻 | 基础技术设施。 好比电力系统(提供标准的电压和接口)。 | 建立在 API 之上的应用层协议。 好比一套标准插头和智能家电协议,让所有电器都能安全、即插即用地接入电力系统,并被智能管家统一控制。 |
| 关键特性 | - 风格多样(REST, GraphQL, gRPC 等) - 注重性能、数据格式 - 认证和授权机制各异 | - 标准化工具描述(名称、参数、schema) - 资源概念(可读取的静态数据流) - 强调安全与控制(主机严格控制可用工具) - 动态发现(AI 启动时自动获取可用工具列表) |
| 一个简单类比 | 餐厅的纸质菜单和点餐流程。 (顾客需要自己阅读菜单、呼叫服务员、说出菜品) | 餐厅的智能点餐平板。 (平板自动连接后,主动推送所有可点的菜,顾客(AI)只需描述需求,平板就能理解并格式化成标准订单发送后厨。) |
了解之后,只要是后端开发语言,大部分都会有 MCP 插件库,像 Python、Java、C#都有类似 MCP 插件库直接可使用和封装 MCP。
总结
至此,MCP 的开发、本地与线上的部署应用,以及智能体调用 MCP 的全流程已完成。 简而言之,它与常规 API 的作用类似,但封装了特定领域的业务逻辑,是大模型功能调用的标准化接口。 感兴趣的朋友可以动手实践体验 MCP 服务插件。


