手把手调试MCP Server,RTFM!
MCP协议的Calling Convention
MCP协议的实现需要三个部分: Server和Client,以及Host
我们这里介绍MCP Server的原理, Host可以是任何支持MCP协议的应用程序(一般包含Client服务)。
例如:Cline、Cursor等 参考这篇文章MCP到底是什么,原理是啥?
MCP的三个基础能力
- Resources:提供资源访问,如文件读取或 API 响应内容
- Tools:提供工具函数功能,或者第三方服务的调用
- Prompts:提供预定义的提示词模板,用于完成特定任务
工作流程
Client[客户端应用] <--> Protocol{MCP 协议}
Protocol <--> Server[MCP 服务器]
Server --> Resources[资源访问]
Server --> Tools[工具功能]
Server --> Prompts[提示词模板]
Resources --> Files[(文件系统)]
Resources --> APIs[(外部 API)]
Tools --> Functions[函数执行]
Tools --> Services[第三方服务]
Prompts --> Templates[(任务模板)]
MCP Server 接收数据
- 开发参考:快速上手 | MCP SDK
- 请求格式:MCP Server 采用
JSON-RPC 2.0协议接收数据。 - 通信方式:支持通过
stdio(标准输入输出)和sse(Server-Sent Events)进行通信。
调试工具
官方提供了一个调试工具,方便开发者测试和调试 MCP Server:
npx @modelcontextprotocol/inspector node .\server.js
请求示例
客户端向 MCP Server 发送请求的格式如下:
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/list",
"params": {}
}
jsonrpc: 协议版本,固定为"2.0"id: 请求唯一标识符method: 调用的方法名params: 方法参数(对象或数组)
命令行调用示例
可以通过命令行直接向 MCP Server 发送请求:
$ echo '{"jsonrpc":"2.0","id":1,"method":"resources/list","params":{}}' | node path\to\mcp_server\index.js
> {"jsonrpc":"2.0","id":1,"result":{"resources":[{"uri":"useful://system-info","name":"系统信息","description":"提供系统相关的基本信息"},{"uri":"useful://date-time","name":"日期和时间","description":"提供当前的日期和时间信息"}]}}
响应示例
MCP Server 返回的响应格式如下:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"resources": [
{
"uri": "useful://system-info",
"name": "系统信息",
"description": "提供系统相关的基本信息"
},
{
"uri": "useful://date-time",
"name": "日期和时间",
"description": "提供当前的日期和时间信息"
}
]
}
}
result: 方法调用的返回结果resources: 资源列表,每个资源包含uri、name和description
错误响应示例
当请求出错时,MCP Server 会返回如下格式的错误信息:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32601,
"message": "Method not found"
}
}
error.code: 错误码,遵循 JSON-RPC 规范error.message: 错误描述
常见方法
| 方法名 | 说明 | 参数 | 返回值说明 |
|---|---|---|---|
resources/list |
获取资源列表 | - | 资源数组 |
resources/read |
获取指定资源详情 | uri |
资源对象 |
tools/list |
获取可用工具列表 | - | 工具数组 |
tools/call |
调用指定工具方法 | name, arguments |
方法调用结果 |
prompts/list |
获取可用提示词模板 | - | 提示词模板数组 |
prompts/get |
获取指定提示词模板 | name |
提示词模板对象 |
推荐阅读
手把手调试MCP Server,RTFM!的更多相关文章
- 使用WinDbg调试SQL Server查询
上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我们 ...
- 使用WinDbg调试SQL Server——入门
这篇文章我想探究下SQL Server里完全不同的领域:如果使用WinDbg(来自针对Windows的调试工具)调试SQL Server.在我们进入枯涩细节之前,我想详细解释下为什么选择这样晦涩的话题 ...
- Eclipse调试cas server 3.5.2.1
由于在配置CAS+LDAP总是报错,决定Eclipse调试cas server,跟踪问题出在哪里? ================================================== ...
- 如何设断点????-----使用WinDbg调试SQL Server查询
http://www.cnblogs.com/woodytu/p/4665427.html http://www.sqlservercentral.com/blogs/aschenbrenner/20 ...
- VS调试SQL Server存储过程
1.打开VS,视图-->SQL Server对象资源管理器.(我用的是VS2012) 2.添加链接,连接到数据库. 3.选择要调试的存储过程,右键,选择调试过程或者执行过程. 4.填写存储过程所 ...
- Visual Studio 2017 调试 windows server 2016 Docker Container
网上很多文章都是在win10下,用Docker for windows工具进行Docker的安装部署的.用知道windows server 2016已经原生支持Docker了,其windows Con ...
- 调试SQL Server的存储过程及用户定义函数
分类: 数据库管理 2005-06-03 13:57 9837人阅读 评论(5) 收藏 举报 sql server存储vb.net服务器sql语言 1.在查询分析器中调试 查询分析器中调试的步骤如下: ...
- IDEA远程调试Ambari Server
1.配置端口 Ambari Server默认配置了服务端的debug参数,端口为5005.如果要修改端口,可以在/usr/sbin/ambari_server_main.py文件中对应地方修改,直接改 ...
- 调试X Server
发现错误 运行X之后出现了错误: Program received signal SIGSEGV, Segmentation fault. 0x00007fbc3336fb63 in ?? () fr ...
- VS 调试Window Server方法
在需要调试的地方加 Debugger.Launch();然后在本机安装服务并启动即可进入
随机推荐
- 前端开发系列077-Node篇之package
本文输出Node中和包有关的基本内容. 一.Node中的模块和包 模块 在Node中,以模块为单位来划分所有的功能. 从某种角度来说,Node应用都由大量模块组成,每个模块都是一个JavaScript ...
- ABC396(VP)
本来明天有活动,晚上 VP 了一场 abc 找找手感,结果活动取消了(. 额,算了一下,大概是 rk.730 左右,打了就是上分局. A - Triple Four 按照题目模拟即可. 点击查看代码 ...
- ETL数据集成丨为什么没有做好ETL的BI工具最终都会失败?
随着数字化转型,企业越来越重视数据的价值和利用.商业智能(Business Intelligence,BI)作为一种数据分析和决策支持的重要工具,被广泛应用于各行各业.然而,对于BI项目的成功实施,E ...
- Docker部署RestCloud ETL社区
镜像说明 nriet/restcloud:latest version:1.3.0 os:slim-buster tomcat:基于官方镜像 tomcat:8.5.78-jdk8-openjdk-sl ...
- SciTech-Mathmatics-Analysis: Bouncing Function(震荡函数, 导数±震荡):L'Hospital + 点导数 + 导数 + 连续 + 极限 + 领域 +
SciTech-Mathmatics-Analysis: 考研易错概念: 一点的导数大于0, 能不能推出函数在某邻域单调递增? ✘ 无穷小的倒数,一定为无穷大? ✘ \(\large L'Hospit ...
- ICEE-Power-SCR-OptoisolaterDriver-MOC Series-MOC3081/2/3: 6-Pin DIP Zero-Cross TriacDriver Optocoupler (800 V Peak)
English Words: Thyristor: 可控硅 SCR: 单向可控硅 SCRs are unidirectional (one-way) current devices, making t ...
- js入门基础语法
js入门基础语法 什么是javaScript 概述 javaScript是世界上最流行的一门脚本语言 javaScript是一门很随意的语言 有句话叫做如果可以重新来过我就只愿意学javaScript ...
- 04hanzi.py(汉字搜索)
# name: 04hanzi.py # date: 20240609 # programmer: arithmus # memo: find hanzi string import re def i ...
- SQL Server 事件探查器安装
平时调试SQL,使用事件探查器习惯了,但是现在用了一台机器没有安装事件探查器,而且尝试过再次安装,添加新功能,但是没有事件探查器选项,最近调试实在受不了看代码逻辑调试了,所以上网搜了一下,发现有解决方 ...
- javascript 执行机制(同步、异步、微任务、宏任务)
一.关于javascriptJS是一门单线程语言,这意味着所有的任务都需要排队,前一个任务结束才会执行后一个任务如果前一个任务耗时很长,后一个任务就不得不一直等着.这样所导致的问题是: 如果 JS 执 ...