项目简介
ToolHive是一个强大的平台,旨在简化Model Context Protocol (MCP)服务器的发现、部署、运行和管理。它允许用户安全地在隔离的容器中启动任何MCP服务器,无需手动配置和处理运行时问题。此外,ToolHive自身还包含一个实验性的MCP管理服务器,允许外部MCP客户端通过标准协议控制ToolHive的内部功能,例如搜索注册表、启动和停止其他MCP服务器。
主要功能点
- MCP服务器部署与管理: 轻松启动、停止、重启和移除各类MCP服务器,无论是本地容器镜像还是通过协议方案(如'npx://'、'uvx://'、'go://')构建的服务器。
- 安全隔离: 所有MCP服务器都在隔离的容器中运行,支持精细的权限控制、网络隔离和凭证安全管理。
- 多传输协议支持: 支持SSE (Server-Sent Events) 和 Streamable HTTP (流式HTTP) 协议进行客户端通信。
- 远程MCP服务器代理: 能够将远程MCP服务器作为本地工作负载进行管理,支持OAuth/OIDC认证、工具过滤等。
- 内置MCP管理服务器 (实验性): ToolHive自身可作为一个MCP服务器启动,提供管理其他MCP工作负载(如列出、运行、停止MCP服务器)的工具。
- 配置导出与导入: 可以将MCP服务器的运行配置导出为文件,并从文件导入配置以复用。
- 日志管理: 查看MCP服务器和代理的日志,并清理废弃的日志文件。
- OIDC/OAuth认证与授权: 支持为MCP服务器配置OIDC/OAuth认证,并集成Cedar策略进行细粒度授权。
- 可观测性: 支持OpenTelemetry进行遥测,并可暴露Prometheus指标端点。
- 客户端集成: 自动配置GitHub Copilot、Cursor等流行客户端。
安装步骤
ToolHive主要作为命令行工具'thv'运行,通常需要Docker或Podman等容器运行时环境。
- 安装Docker或Podman: 确保您的系统已安装并运行Docker或Podman。
- 下载ToolHive二进制文件: 从ToolHive的GitHub发布页面下载适用于您操作系统的最新'thv'二进制文件,或者通过源代码构建。
- 将'thv'添加到PATH: 将'thv'二进制文件放置在系统的'PATH'环境变量中,以便可以直接从命令行调用。
验证安装: 运行 'thv --version' 命令,如果显示版本信息,则表示安装成功。
服务器配置 (MCP管理服务器)
ToolHive自身可以作为一个MCP管理服务器运行,允许外部MCP客户端通过标准协议与其交互,以管理ToolHive内部的工作负载。
启动ToolHive的MCP管理服务器:
thv mcp serve --port 8080 --host localhost
- '--port': 指定MCP管理服务器监听的端口,默认为'8080'。也可以通过环境变量'MCP_PORT'设置。
- '--host': 指定MCP管理服务器监听的IP地址或主机名,默认为'localhost'。
MCP客户端连接此服务器时,需要配置以下信息(请注意,这是MCP客户端需要配置的信息,不是要在ToolHive中执行的代码):
{ "mcpServers": { "toolhive-manager": { "url": "http://localhost:8080", // 根据实际启动时的端口和主机调整 "type": "streamable-http" // 或者 "sse",取决于 ToolHive MCP 管理服务器的配置 } } }
请注意:ToolHive的MCP管理服务器是实验性功能('EXPERIMENTAL'),可能在未来版本中有所变化。
基本使用方法 (MCP管理服务器作为MCP客户端)
一旦ToolHive的MCP管理服务器启动,其他MCP客户端(如ToolHive CLI的'mcp'子命令)就可以连接并使用其提供的工具:
-
连接到MCP管理服务器并列出可用工具: 在一个新的终端中,启动ToolHive CLI的'mcp list tools'命令,指定MCP管理服务器的URL。
thv mcp list tools --server http://localhost:8080 --transport streamable-http这应该会显示ToolHive管理服务器提供的工具列表,例如用于启动、停止或列出其他MCP服务器的工具。
-
通过MCP管理服务器启动一个新的MCP服务器 (例如OSV): 使用'thv mcp list tools'命令中获取到的工具,可以调用'run_mcp_server'工具来启动一个新的MCP服务器。假设'run_mcp_server'工具接受'name'和'image'参数。
# 这只是一个概念性示例,实际调用会更复杂,并使用JSON-RPC客户端进行。 # 实际MCP客户端会发送一个JSON-RPC请求,例如: # {"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "run_mcp_server", "arguments": {"name": "my-osv-server", "image": "osv", "transport": "sse"}}}客户端发送这样的请求后,ToolHive管理服务器将启动'osv' MCP服务器,并返回其状态。
启动其他类型的MCP服务器 (非MCP管理服务器)
ToolHive的主要用途是管理其他MCP服务器。例如,要启动一个OSV漏洞查询MCP服务器:
thv run osv --name my-osv-scanner --transport sse --proxy-port 8081
这将在'8081'端口启动一个名为'my-osv-scanner'的OSV MCP服务器。
然后可以使用'thv mcp list tools --server http://localhost:8081/sse#my-osv-scanner'来列出OSV服务器的工具,如'query_vulnerability'。
信息
分类
AI与计算