这是一个简单的mcp服务器工具,用于探索mcp的工作原理及其架构
#要构建mcp,我们需要3个核心概念: -mcp客户端(例如:claude桌面等) -JSON-RPC(stdio/sockets)-->一个传输层,这样mcp客户端和服务器就可以相互通信 -mcp服务器(在我们的例子中是mcp程序),可以连接到其他数据源/工具等
┌───────────────────────────────┐
│ MCP Client │
│ (AI assistant, e.g. Claude) │
└───────────────┬──────────────┘
│
JSON-RPC 2.0 (stdio/sockets)
│
┌───────────────┴──────────────┐
│ MCP Server │
│ (your custom program) │
└───────────────┬──────────────┘
│
┌───────────────┬───────────────┬─────────────────┐
│ │ │ │┌──────────┐ ┌───────────┐ ┌──────────┐ ┌───────────────┐ │ 工具│ │ 资源│ │ 提示│ │ 订阅│ │ (函数)│ │ (数据)│ │ (模板)│ │ (事件提要)│ └──────────┘ └───────────┘ └──────────┘ └───────────────┘
示例:
- 工具:ping(主机)、run_sql(查询)、say_hello(名称)
- 资源:笔记/、日志/、数据库表
- 提示:“总结今天的日志”
- 事件:“发现新CVE”,“磁盘使用率>90%”
#这样,我们就可以构建更复杂的设置和特定于上下文的人工智能工具,而不仅仅是llms或聊天机器人 #在深入探讨之前,我们需要首先了解实现这一点的传输层是什么,即JSON-RPC层:
- JSON-RPC遵循一个简单的请求-响应模型,其中请求和响应都是单个JSON对象
- 请求对象指定要调用的方法以及要传递给它的参数
- JSON-RPC与REST:两者都使用请求-响应模型,但JSON-RPC是面向动作的,客户端需要提前知道函数名称及其参数,
其中restful方法是面向资源的,使用带有http动词的统一接口(PUT/GET/UPDATE..)
- 虽然两者都可以使用http作为传输,但JSON-RPC更灵活,因为它与传输无关(不关心数据是如何发送的),它可以通过任何协议、websockets、http、tcp或其他数据传输协议来实现,
这使得它成为微服务和区块链网络等需要远程执行单个特定操作的应用程序的热门选择。
-JSON-RPC在远程过程协议(RPC,一种调用不在您的计算机上的函数的方法,因为它在您的程序中位于您自己的计算机上)上运行,客户端的请求是在服务器上执行特定方法的命令,请求包括方法的名称及其参数 示例:要更新用户名,您需要使用{“method”:“updateUserName”,“params”:{“id”:123,“name”:“Jane”}}发送请求。服务器将此理解为“调用updateUserName函数”
