项目简介
该仓库是一个名为 "30 Agents in 30 Days" 的挑战项目集合,包含了多种AI Agent工作流。其中,'mcp-servers/mcp_server' 子目录提供了一个实现了MCP协议的后端服务示例。这个服务专门用于与在线白板工具(如Figma/FigJam插件)集成,通过JSON-RPC协议暴露工具,使连接的LLM客户端能够远程操作白板。
主要功能点
- 工具暴露: 作为MCP服务器,它通过JSON-RPC协议暴露了一个名为 'create_sticky' 的工具。
- 创建便利贴: 核心功能是接收来自LLM客户端的请求,调用 'create_sticky' 工具,在连接的白板应用中创建带有指定文本和位置的便利贴。
- Stdio协议支持: 支持通过标准输入/输出(Stdio)进行JSON-RPC通信,这是LLM客户端连接MCP服务器的一种常见方式。
- HTTP轮询支持: 同时也提供HTTP接口('/pull')供白板插件轮询待执行的命令,这是该服务器与前端白板应用交互的一种方式。
安装步骤
-
克隆仓库(包含子模块): 这个MCP服务器是作为主仓库的子模块存在的。因此,克隆时需要包含子模块: 'git clone --recursive https://github.com/ltejedor/agents.git' 如果你已经克隆了仓库但没有子模块,进入仓库目录后运行: 'git submodule update --init --recursive'
-
进入MCP服务器目录: 'cd agents/mcp-servers/mcp_server'
-
安装依赖: 根据代码,该服务器需要Python环境和一些库,特别是用于Stdio MCP模式的库(很可能包含在 MCP 协议库中),以及用于HTTP模式的 'fastapi' 和 'uvicorn'。确保你的Python环境已安装这些库。如果使用 'pip',可能需要安装 'fastapi', 'uvicorn', 'requests' 以及 MCP 协议相关的库(具体名称可能需要查看子模块的依赖说明,但通常是 'mcp-server' 或类似的包)。简单的尝试安装可能有用的包: 'pip install fastapi uvicorn requests' MCP协议库可能需要单独安装或在子模块中有说明。
服务器配置
MCP客户端需要知道如何启动和连接到这个服务器。对于Stdio连接方式,客户端通常需要以下配置信息(以JSON格式为例,实际配置方式取决于你的MCP客户端框架):
- 'name': MCPJam (服务器名称,用于客户端识别)
- 'command': python (执行服务器脚本的命令)
- 'args': ["main.py", "--stdio"] (传递给命令的参数,'--stdio' 参数指示服务器以Stdio JSON-RPC模式运行)
- 'capabilities': [] (这是一个示例,客户端连接后会通过MCP协议查询服务器实际提供的工具、资源和提示能力列表。在这个服务器中,主要的工具是 'create_sticky'。)
用户需要根据自己的MCP客户端框架,配置以上信息,以便客户端能够启动并连接到 'mcp-servers/mcp_server/main.py' 脚本,并与其通过标准输入输出进行JSON-RPC通信。
基本使用方法
-
启动MCP服务器: 打开终端,进入 'agents/mcp-servers/mcp_server' 目录,然后运行服务器脚本并指定 Stdio 模式: 'python main.py --stdio' 服务器将启动并监听标准输入,通过标准输出进行响应。
-
LLM客户端连接: 使用支持MCP协议并配置好上述信息的LLM客户端连接到正在运行的服务器进程。
-
发现并调用工具: LLM客户端连接成功后,可以向服务器发送DiscoverCapabilities请求,获取服务器提供的工具列表。客户端的LLM模型可以根据自身的工具使用能力,决定是否调用 'create_sticky' 工具。例如,LLM可能会生成一个调用 'create_sticky' 工具的请求,包含便利贴的文本和位置信息。
-
执行操作: 服务器接收到 'create_sticky' 的JSON-RPC调用请求后,会将创建便利贴的命令(包含文本和位置)加入内部队列。一个单独的前端应用(例如FigJam插件,通过HTTP /pull接口轮询这个队列)会读取队列中的命令,并在白板上实际执行创建便利贴的操作。
注意: 这个服务器实现了MCP的Stdio模式,但它需要一个单独的前端(例如对应的FigJam插件)来实际执行队列中的白板操作。LLM客户端通过MCP协议与服务器交互,服务器负责接收LLM的意图(工具调用),但实际的白板操作是由另一个组件完成的。
信息
分类
生产力应用