项目简介

该仓库是一个名为 "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')供白板插件轮询待执行的命令,这是该服务器与前端白板应用交互的一种方式。

安装步骤

  1. 克隆仓库(包含子模块): 这个MCP服务器是作为主仓库的子模块存在的。因此,克隆时需要包含子模块: 'git clone --recursive https://github.com/ltejedor/agents.git' 如果你已经克隆了仓库但没有子模块,进入仓库目录后运行: 'git submodule update --init --recursive'

  2. 进入MCP服务器目录: 'cd agents/mcp-servers/mcp_server'

  3. 安装依赖: 根据代码,该服务器需要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通信。

基本使用方法

  1. 启动MCP服务器: 打开终端,进入 'agents/mcp-servers/mcp_server' 目录,然后运行服务器脚本并指定 Stdio 模式: 'python main.py --stdio' 服务器将启动并监听标准输入,通过标准输出进行响应。

  2. LLM客户端连接: 使用支持MCP协议并配置好上述信息的LLM客户端连接到正在运行的服务器进程。

  3. 发现并调用工具: LLM客户端连接成功后,可以向服务器发送DiscoverCapabilities请求,获取服务器提供的工具列表。客户端的LLM模型可以根据自身的工具使用能力,决定是否调用 'create_sticky' 工具。例如,LLM可能会生成一个调用 'create_sticky' 工具的请求,包含便利贴的文本和位置信息。

  4. 执行操作: 服务器接收到 'create_sticky' 的JSON-RPC调用请求后,会将创建便利贴的命令(包含文本和位置)加入内部队列。一个单独的前端应用(例如FigJam插件,通过HTTP /pull接口轮询这个队列)会读取队列中的命令,并在白板上实际执行创建便利贴的操作。

注意: 这个服务器实现了MCP的Stdio模式,但它需要一个单独的前端(例如对应的FigJam插件)来实际执行队列中的白板操作。LLM客户端通过MCP协议与服务器交互,服务器负责接收LLM的意图(工具调用),但实际的白板操作是由另一个组件完成的。

信息

分类

生产力应用