🌈 我是“没事学AI”,meishixueai, 欢迎咨询、交流,共同学习:
👁️ 【关注】我们一起挖 AI 的各种门道,看看它还有多少新奇玩法等着咱们发现
👍 【点赞】为这些有用的 AI 知识鼓鼓掌,让更多人知道学 AI 也能这么轻松
🔖 【收藏】把这些 AI 小技巧存起来,啥时候想练手了,翻出来就能用
💬 【评论】说说你学 AI 时的想法和疑问,让大家的思路碰出更多火花
👉 关注获取更多AI技术干货,点赞/收藏备用,欢迎评论区交流学习心得! 🚀
一、核心技术概念界定与关联
1.1 AI Agent技术定位与核心能力
AI Agent(人工智能智能体)是具备自主感知、决策与执行能力的AI系统模块,在技术体系中承担“任务自动化执行者”角色,能够基于预设规则或自主学习,完成信息收集、逻辑判断、跨工具协作等复杂任务。其核心能力包括:
- 任务拆解:将用户复杂需求拆解为可执行的子步骤;
- 工具调用:自动调用外部API、软件工具完成特定操作;
- 结果反馈:将执行结果整理并以人类易懂的形式输出;
- 迭代优化:根据任务反馈调整执行策略,提升处理精度。
在AI技术落地场景中,AI Agent是连接“通用AI能力”与“垂直业务需求”的关键桥梁,例如企业智能客服、自动化工作流、智能开发辅助等场景均以其为核心载体。
1.2 MCP协议技术定义与核心价值
MCP(Module Communication Protocol,模块通信协议)是面向AI时代的模块间通信标准,核心定位是解决不同技术组件(如AI模型、开发工具、业务系统)之间的“通信兼容性”问题。其技术价值体现在三个维度:
- 解耦性:打破传统API调用中“调用方与被调用方强绑定”的限制,支持模块独立升级与替换;
- 通用性:统一不同技术栈(如Python、Java、C++)、不同工具(如VSCode、虚幻引擎)的通信格式;
- 高效性:支持实时数据传输(如SSE协议),适配AI场景下“低延迟交互”需求。
与传统TCP/IP协议对比,MCP更聚焦“应用层模块协作”,可视为AI时代“模块间协作的TCP/IP”,为复杂AI系统的模块化搭建提供通信基础。
1.3 AI Agent与MCP协议的协同关系
AI Agent的“多工具调用能力”需依赖MCP协议实现技术落地,二者协同逻辑如下:
- AI Agent作为“任务决策中枢”,根据需求确定需调用的工具/模块(如搜索工具、存储服务、模型接口);
- MCP协议作为“通信桥梁”,将AI Agent的调用指令转换为统一格式,发送至目标模块;
- 目标模块执行指令后,通过MCP协议将结果反馈至AI Agent;
- AI Agent基于反馈结果继续执行后续步骤,直至完成整体任务。
简言之,MCP协议解决了AI Agent“调用不同模块时的通信兼容问题”,是AI Agent实现“跨工具协作”的核心技术支撑。
二、MCP协议核心技术特性与实践
2.1 MCP协议关键技术特性
2.1.1 跨工具兼容性
MCP协议通过“标准化数据格式”(基于JSON-RPC 2.0扩展)实现跨工具适配,支持主流开发工具、引擎与框架,包括但不限于:
- 开发工具:VSCode(原生支持MCP插件生态)、PyCharm;
- 游戏引擎:虚幻5(Unreal Engine 5);
- 开发框架:FastAPI、SpringAlibaba、n8n(工作流引擎);
- AI模型:DeepSeek、魔搭社区模型。
2.1.2 支持多通信模式
MCP协议覆盖AI场景下常见的通信需求,核心支持两种模式:
- 同步调用:适用于“需即时获取结果”的场景(如AI模型推理结果查询);
- 异步推送:基于SSE(Server-Sent Events)协议,适用于“实时数据更新”场景(如AI Agent任务执行进度反馈)。
2.2 MCP协议基础实战:30行代码实现MCP SSE服务
2.2.1 应用场景
该案例适用于“AI Agent任务执行进度实时反馈”场景,例如AI Agent处理大文件解析时,通过SSE实时向前端推送“解析进度(如30%、70%、100%)”。
2.2.2 技术依赖
- 开发语言:Python 3.9+
- 核心库:FastAPI(Web框架)、sse-starlette(SSE支持)、pydantic(数据校验)
2.2.3 完整实现代码
from fastapi import FastAPI, Request
from sse_starlette.sse import EventSourceResponse
from pydantic import BaseModel
import asyncio
# 1. 初始化FastAPI应用(集成MCP协议适配)
app = FastAPI(title="MCP SSE Service", version="1.0")
# 2. 定义MCP协议标准请求体(基于JSON-RPC 2.0扩展)
class MCPRequest(BaseModel):
jsonrpc: str = "2.0" # MCP协议基础版本
method: str # 待执行方法(如"task_progress")
params: dict # 方法参数(如任务ID、初始进度)
id: str # 请求唯一标识
# 3. 模拟AI Agent任务执行(含进度更新)
async def task_progress_generator(task_id: str):
"""模拟任务执行,每2秒更新一次进度,通过SSE推送"""
for progress in range(0, 101, 10):
# 构造MCP标准响应格式
mcp_response = {
"jsonrpc": "2.0",
"result": {
"task_id": task_id,
"progress": progress,
"status": "running" if progress < 100 else "completed"
},
"id": task_id
}
yield {"data": mcp_response} # SSE数据推送
if progress == 100:
break
await asyncio.sleep(2) # 模拟任务执行耗时
# 4. 定义MCP SSE接口(符合MCP协议规范)
@app.post("/mcp/sse/task")
async def mcp_sse_task(request: Request, mcp_req: MCPRequest):
# 校验MCP请求合法性(方法必须为"task_progress")
if mcp_req.method != "task_progress":
return {
"jsonrpc": "2.0",
"error": {"code": -32601, "message": "Method not found"},
"id": mcp_req.id
}
# 提取任务ID(从params中获取)
task_id = mcp_req.params.get("task_id", "default_task_001")
# 返回SSE响应(符合MCP异步推送规范)
return EventSourceResponse(
task_progress_generator(task_id),
media_type="text/event-stream"
)
# 5. 运行服务(命令:uvicorn main:app --reload)
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
2.2.4 测试与验证
- 启动服务:执行
uvicorn main:app --reload
,服务运行于http://localhost:8000
; - 发送MCP请求:使用Postman或curl发送POST请求至
/mcp/sse/task
,请求体如下:
{
"jsonrpc": "2.0",
"method": "task_progress",
"params": {
"task_id": "ai_agent_file_parse_001"
},
"id": "req_001"
}
- 观察响应:前端将每2秒收到一次进度更新,最终收到
progress: 100%
的完成通知,符合MCP协议异步推送标准。
三、AI Agent基于MCP协议的实战应用
3.1 智能工作流搭建:MCP + n8n实现自动搜索-存储
3.1.1 应用场景
企业员工需定期获取“AI行业最新动态”,传统流程需手动搜索、整理、存储至知识库,效率低下。通过AI Agent+MCP+n8n可实现全自动化:AI Agent触发搜索任务→MCP调用n8n工作流→n8n完成“搜索→提取关键信息→存储至Notion”全流程。
3.1.2 技术架构
- 决策层:AI Agent(确定搜索关键词、触发周期);
- 通信层:MCP协议(传递AI Agent指令至n8n,反馈执行结果);
- 执行层:n8n工作流(集成搜索引擎API、文本提取工具、Notion API)。
3.1.3 核心配置与代码
(1)n8n MCP节点配置(可视化)
- 创建“MCP接收节点”:监听MCP协议请求,端口设为
8080
,请求路径/mcp/n8n/workflow
; - 添加“HTTP请求节点”:调用百度搜索API(关键词从MCP请求
params.keyword
获取); - 添加“文本提取节点”:从搜索结果中提取标题、链接、摘要;
- 添加“Notion节点”:将提取结果写入Notion数据库(Notion API密钥从环境变量读取);
- 添加“MCP响应节点”:通过MCP协议向AI Agent返回“执行成功/失败”状态。
(2)AI Agent调用MCP代码(Python)
import requests
import json
class AIAgentMCP:
def __init__(self, mcp_server_url: str):
self.mcp_server_url = mcp_server_url # n8n MCP节点地址
def trigger_search_workflow(self, keyword: str) -> dict:
"""
触发MCP+n8n自动搜索-存储工作流
:param keyword: 搜索关键词(如"2025 AI Agent最新技术")
:return: MCP协议响应结果
"""
# 构造MCP标准请求
mcp_request = {
"jsonrpc": "2.0",
"method": "n8n.search_store_workflow",
"params": {
"keyword": keyword,
"store_target": "Notion",
"notion_database_id": "your_notion_database_id"
},
"id": f"aiagent_req_{hash(keyword)}"
}
# 发送MCP请求
response = requests.post(
url=self.mcp_server_url,
headers={"Content-Type": "application/json"},
data=json.dumps(mcp_request)
)
# 返回MCP响应(符合协议格式)
return response.json()
# 实例化AI Agent并触发工作流
if __name__ == "__main__":
agent = AIAgentMCP(mcp_server_url="http://localhost:8080/mcp/n8n/workflow")
result = agent.trigger_search_workflow(keyword="2025 MCP协议行业应用")
print("MCP响应结果:", json.dumps(result, indent=2))
3.1.4 执行结果验证
- 运行AI Agent代码,触发工作流;
- 查看n8n控制台:工作流状态显示“成功”;
- 打开Notion数据库:新增一条含“标题、搜索链接、摘要”的记录,实现“搜索-存储”全自动化。
3.2 API与MCP协议转换:FastAPI转MCP服务器
3.2.1 应用场景
传统FastAPI接口仅支持HTTP调用,无法直接被AI Agent的MCP模块调用。通过“FastAPI转MCP服务器”,可将现有API快速接入MCP生态,实现“API=MCP”的兼容效果,例如将“用户信息查询API”转换为MCP协议接口,供AI Agent调用。
3.2.2 技术原理
通过中间层(MCP Adapter)实现协议转换:
- AI Agent发送MCP请求至MCP Adapter;
- MCP Adapter解析请求,提取“方法名、参数”,转换为FastAPI的HTTP请求;
- FastAPI执行请求并返回结果;
- MCP Adapter将FastAPI结果转换为MCP标准响应,反馈给AI Agent。
3.2.3 完整实现代码
from fastapi import FastAPI, Depends
from pydantic import BaseModel
import requests
import json
# 1. 原有FastAPI服务(模拟现有业务API)
class FastAPIService:
@staticmethod
def get_user_info(user_id: str) -> dict:
"""原有FastAPI用户信息查询接口"""
# 模拟数据库查询
user_data = {
"user_id": user_id,
"username": f"user_{user_id}",
"email": f"user_{user_id}@example.com",
"role": "normal"
}
return user_data
# 2. MCP Adapter(实现FastAPI到MCP的协议转换)
app = FastAPI(title="FastAPI to MCP Adapter", version="1.0")
FASTAPI_BASE_URL = "http://localhost:8001" # 原有FastAPI服务地址
# 定义MCP请求模型
class MCPRequest(BaseModel):
jsonrpc: str = "2.0"
method: str # 对应FastAPI方法(如"get_user_info")
params: dict # 对应FastAPI参数(如{"user_id": "123"})
id: str
# 定义MCP转换接口
@app.post("/mcp/adapter")
async def fastapi_to_mcp(mcp_req: MCPRequest):
try:
# 步骤1:解析MCP请求,映射到FastAPI接口
method_mapping = {
"get_user_info": f"{FASTAPI_BASE_URL}/user/info" # 方法名与FastAPI地址映射
}
if mcp_req.method not in method_mapping:
return {
"jsonrpc": "2.0",
"error": {"code": -32601, "message": f"Method {mcp_req.method} not mapped"},
"id": mcp_req.id
}
# 步骤2:调用原有FastAPI接口
fastapi_response = requests.get(
url=method_mapping[mcp_req.method],
params=mcp_req.params
)
fastapi_data = fastapi_response.json()
# 步骤3:转换为MCP标准响应
return {
"jsonrpc": "2.0",
"result": fastapi_data,
"id": mcp_req.id
}
except Exception as e:
# MCP协议错误处理
return {
"jsonrpc": "2.0",
"error": {"code": -32000, "message": f"Server error: {str(e)}"},
"id": mcp_req.id
}
# 3. 启动原有FastAPI服务(单独运行)
if __name__ == "__main__":
import uvicorn
# 先启动原有FastAPI服务(端口8001)
original_app = FastAPI()
@original_app.get("/user/info")
def user_info(user_id: str):
return FastAPIService.get_user_info(user_id)
# 运行MCP Adapter(端口8000)和原有FastAPI(端口8001)
# 注意:实际部署需分开运行,此处为演示合并代码
import threading
threading.Thread(target=lambda: uvicorn.run(original_app, host="0.0.0.0", port=8001)).start()
uvicorn.run(app, host="0.0.0.0", port=8000)
3.2.4 测试验证
- 运行代码,启动MCP Adapter(8000端口)和原有FastAPI(8001端口);
- 发送MCP请求至
http://localhost:8000/mcp/adapter
:
{
"jsonrpc": "2.0",
"method": "get_user_info",
"params": {"user_id": "u123456"},
"id": "mcp_test_001"
}
- 接收MCP响应,结果如下(符合MCP协议格式,包含FastAPI返回的用户信息):
{
"jsonrpc": "2.0",
"result": {
"user_id": "u123456",
"username": "user_u123456",
"email": "user_u123456@example.com",
"role": "normal"
},
"id": "mcp_test_001"
}
四、MCP协议与主流技术栈的整合实践
4.1 SpringAlibaba AI + DeepSeek + MCP整合
4.1.1 应用场景
企业级AI应用需整合“Spring生态”“开源大模型(DeepSeek)”与“MCP协议”,实现“本地部署+私有知识库”的智能服务,例如企业内部智能问答系统:员工通过MCP客户端提问→SpringAlibaba AI调用DeepSeek模型(结合私有知识库)→返回精准答案。
4.1.2 技术架构
-
底层:DeepSeek大模型(本地部署,支持私有知识库接入);
-
中间层:SpringAlibaba AI框架负责协调整体业务逻辑,包括用户请求接入、权限验证、任务调度等。同时,它利用MCP协议与DeepSeek大模型及其他外部工具进行交互,在模型调用时,通过MCP协议将用户问题、私有知识库索引等信息传递给DeepSeek模型。例如,在智能问答场景中,SpringAlibaba AI接收用户问题后,依据MCP协议规范,将问题转化为DeepSeek模型可理解的格式,并附上从私有知识库中提取的相关文档片段索引,以提升模型回答的准确性与专业性。
-
上层:提供面向用户的交互接口,如Web界面、移动端APP或企业内部系统接入点等。这些接口通过MCP客户端与SpringAlibaba AI进行通信,将用户输入发送至系统,并接收处理后的结果反馈给用户。例如企业员工在内部办公系统中使用智能问答功能时,前端界面借助MCP客户端将问题发送给后端的SpringAlibaba AI模块,后端处理完成后,再通过MCP客户端将答案返回至前端展示给员工。