项目简介
'Swarm MCP 工具服务器' 是 'Swarm' 框架中的一个示例,它演示了如何构建一个符合 Model Context Protocol (MCP) 标准的应用后端。该服务器的核心功能是作为LLM客户端与各种外部工具之间的桥梁,提供标准化接口来访问和执行这些工具。它支持工具的注册、调用,并能够向LLM客户端声明自身所具备的能力。
主要功能点
- 工具托管与执行: 统一管理和提供多种外部工具,LLM客户端可以通过标准化的JSON-RPC请求调用这些工具。
- 天气查询: 获取指定地点的当前天气信息。
- 客户详情: 查询客户的详细信息。
- 网页抓取: 使用Jina AI服务抓取指定URL的网页内容。
- 维基百科搜索: 在维基百科上搜索实体信息。
- 能力声明: 服务器能够向连接的LLM客户端声明其所支持的工具列表及其功能描述,使LLM客户端能够动态发现并利用可用的功能。
- JSON-RPC通信: 采用JSON-RPC协议进行通信,确保LLM客户端与服务器之间的标准、高效交互。
- 多种工具组合: 可以选择启动包含单一工具的服务,也可以启动一个包含所有预定义工具的综合服务。
安装步骤
- 安装 Rust: 如果您尚未安装,请访问 rust-lang.org 安装 Rust 编程语言及其包管理器 Cargo。
- 克隆仓库: 打开终端,使用 Git 克隆 'swarm' 仓库:
git clone https://github.com/fcn06/swarm.git cd swarm - 构建项目: 切换到仓库根目录后,构建项目:
cargo build --release
服务器配置
MCP客户端需要配置MCP服务器的连接信息才能与其通信。以下是 'Swarm MCP 工具服务器' 的配置示例,以JSON格式提供,供MCP客户端使用。 MCP服务器默认监听 '127.0.0.1:8000'。
// MCP客户端的配置文件示例 { "server_name": "Swarm_MCP_Tool_Server_All", "command": "cargo", "args": [ "run", "--release", "--bin", "mcp-server", "--", "--port", "8000", "--host", "127.0.0.1", "All" ], "api_key": "YOUR_OPTIONAL_API_KEY_FOR_MCP_SERVER" }
参数注释:
- 'server_name': 您可以为您的MCP服务器实例指定一个描述性名称,例如根据您选择启动的服务类型(如 Weather, Customer, All)来命名。
- 'command': 用于启动MCP服务器的可执行文件或脚本,这里是 'cargo'。
- 'args': 传递给 'command' 的参数列表。
- 'run --release --bin mcp-server': 这组参数指示 Cargo 运行 'examples/mcp_server' 目录下的 'main-server.rs' 编译而成的发布版本二进制文件。
- '--': 这是 Cargo 命令与您程序参数之间的分隔符。
- '--port <端口号>': 指定服务器监听的TCP端口,默认为 '8000'。
- '--host <主机地址>': 指定服务器监听的网络接口地址,默认为 '127.0.0.1'。
- '<服务类型>': 必须指定一个服务类型来启动相应的工具集。
- 'Weather': 仅启动天气查询工具。
- 'Customer': 仅启动客户详情查询工具。
- 'Scrape': 仅启动网页抓取工具。
- 'Search': 仅启动维基百科搜索工具。
- 'All': 启动所有可用的工具。
- 'api_key': MCP服务器可能需要客户端提供API密钥进行认证。如果服务器配置了认证,请在此处提供您的密钥。
基本使用方法
-
启动MCP服务器: 在 'swarm' 仓库的根目录下,打开终端,运行以下命令启动一个包含所有工具的MCP服务器实例:
cargo run --release --bin mcp-server -- --port 8000 --host 127.0.0.1 All服务器启动后,您将在终端看到类似 "MCP Server listening on: 127.0.0.1:8000 with command: All" 的输出。
-
连接MCP客户端: 您的LLM客户端(例如,使用 'swarm' 框架中的 'mcp_runtime' 客户端或任何其他兼容MCP协议的客户端)可以使用上述配置信息连接到该MCP服务器。一旦连接成功,客户端将能够发现并调用服务器上托管的工具。 例如,LLM客户端可能会通过标准JSON-RPC请求,调用 'get_current_weather' 工具并传递参数 '{ "location": "Boston" }' 来获取波士顿的天气信息。
-
停止服务器: 在运行服务器的终端中,按下 'Ctrl+C' 即可停止服务器。
信息
分类
AI与计算