MCP使用介绍 MCP消息详解 MCP编程详解
- 2025-12-19 20:22:00
- admin
- 原创 411
一、MCP使用介绍
1、Dify帮助文档:https://docs.dify.ai/zh-hans/introduction
2、mcp生命周期:https://modelcontextprotocol.io/specification/2025-11-25/basic/lifecycle
3、mcp传输协议:https://modelcontextprotocol.io/specification/2025-11-25/basic/transports
4、mcp鉴权规范:https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization
5、mcp调试工具:https://www.npmjs.com/package/@modelcontextprotocol/inspector
6、mcp调试工具运行:npx @modelcontextprotocol/inspector
sse传输协议:
1、sse传输协议使用两个端点endpoint,/sse是get请求,/messages是post请求;
2、/sse接收服务端消息,使用eventstream,收到的第一个消息是客户端发送消息的端点;
3、/messages发送消息给服务端,通常是提交请求给服务端,接受请求则返回状态码202;
4、发送消息端点:/messages/?session_id=506a1b89ac6547a582b2027d08fcc392;
streamable-http传输协议:
1、streamable-http传输协议优势:使用一个端点,支持客户端同步请求,保持sse特性;
2、streamable-http传输协议总结:客户端同步请求,服务端异步请求,支持相互通知;
3、streamable-http传输协议使用一个端点endpoint,/mcp同时支持post和get请求;
4、客户端发送数据使用post,同时接受accept: application/json, text/event-stream
5、客户端发送请求,接受时返回状态码200,可以返回json,可以返回eventstream;
6、客户端发送响应和通知,接受时返回状态码202,必须返回空数据;
7、客户端监听数据使用get,只能接受accept: text/event-stream
8、客户端监听数据,服务端只能发送请求和通知,会话恢复时才能发送上一次客户端请求的响应;
09、会话使用两个请求头:mcp-session-id,mcp-protocol-version,客户端发送报文使用;
10、会话使用两个请求头:"method":"initialize"请求返回,一个位于头部,一个位于内容;
11、会话恢复:必须使用get,需要发送Last-Event-ID,ID在会话内唯一;
12、接口鉴权:Authorization: Bearer <access-token>
二、MCP消息详解
1、消息分类:https://modelcontextprotocol.io/specification/2024-11-05/basic/messages
2、消息分类:请求、响应、通知,请求响应必须使用唯一ID,通知不能使用ID;
mcp消息序列:
1、client -> "method":"initialize"
2、client -> "method":"notifications/initialized"
3、client -> "method":"tools/list"
4、client -> "method":"tools/call"
mcp实用工具:
1、ether -> "method": "ping",检活请求,检测对端是否存活;
2、ether -> "method": "some_method",进度请求,progressToken参数表示一个唯一的活跃操作;
3、ether -> "method": "notifications/cancelled",取消请求,参数包含唯一ID,可以包含取消原因;
4、ether -> "method": "tasks/*",任务相关操作,用于耗时计算任务,用于批量处理任务;
mcp客户端特性:针对本客户端
1、roots,服务端获取可操作的文件系统范围;
2、sampling,服务端通过客户端访问大语言模型;
3、elicitation,服务端通过客户端要求用户输入数据;
mcp服务端特性:
1、tools,model-controlled,执行指定工具,模型驱动选择使用;
2、prompts,user-controlled,获取指定提示词,用户主动选择使用;
3、resources,application-driven,获取指定资源内容,应用驱动选择使用;
mcp服务端小工具:
1、completion/complete,prompts和resources参数自动完成;
2、notifications/message,服务端发送日志到客户端,需要设置日志级别;
3、pagination/cursor,支持分页查询各种资源列表,服务端决定pagesize;
三、MCP编程详解
mcp官方sdk:https://github.com/modelcontextprotocol/python-sdk
mcp服务列表:https://github.com/modelcontextprotocol/servers
mcp服务仓库:https://registry.modelcontextprotocol.io
fastmcp代码仓库:https://github.com/jlowin/fastmcp
fastmcp帮助文档:https://gofastmcp.com/getting-started/welcome
mcp-sse代码示例:mcpdemo-sse.py
mcp-stream代码示例:mcpdemo-stream.py