furi 是一个易于使用的 CLI 和 API,用于管理 MCP。
要安装 Furi,请使用以下命令:
curl -fsSL https://furi.so/install | bash
通过运行以下命令验证安装:
furi
Furikake 在内部使用 Bun,安装脚本会安装 Bun(如果尚未安装)。
要升级 Furi 至最新版本,请运行:
furi upgrade
Furikake 可以与任何公共 GitHub 仓库配合使用,如下所示:
furi add <作者/仓库>
例如:furi add smithery-ai/mcp-fetch
您还可以使用 rename 命令重命名 MCP,请注意这将重新启动 MCP(如果正在运行)。
furi rename <旧名称> <新名称>
例如:furi rename smithery-ai/mcp-fetch mcp-fetch
furi remove <mcp名称>
例如:furi remove mcp-fetch
显示所有已安装的 MCP
furi list
furi start <mcp名称> -e '{"name1":"value1", "name2":"value2"}'
-e 环境变量是可选的,并取决于调用的 MCP 服务器
确保传递给 -e 标志的是有效的 JSON 对象。
一旦使用 -e 标志启动服务器,它将保存到配置文件中,并在再次使用该服务器时重复使用。
为了查看 MCP 所需的环境变量,请使用:
furi env <mcp名称>
您可以获取任何 MCP 的所有工具列表(带有详细信息),请使用:
furi tools <mcp名称>
然后可以调用工具:
furi call <mcp名称> <工具名称> '{"参数1":"值1", "参数2":"值2"}'
参数必须是用单引号括起来的有效 JSON 字符串
furi stop <mcp名称>
furi restart <mcp名称>
这将显示所有正在运行的 MCP 的状态。
furi status
如果您想获取特定 MCP 的日志,可以使用:
furi status <mcp名称>
要查看更多的输出行,请使用 -l <行数>
所有已安装的 MCP、您的配置和日志都存储在 .furikake 目录中,可以通过运行以下命令找到:
furi where
您可以使用 Furikake 与任何 MCP 客户端(如 Cursor)一起使用 MCP 聚合器。
Furi 收集所有正在运行的 MCP 工具并通过 SSE 端点公开它们,您的应用程序或 MCP 客户端可以订阅此端点。聚合器会自动构建所有正在运行的 MCP 工具列表,并监听 MCP 启动和停止时的新工具。
要启动聚合器服务器:
furi meta start
这还将显示您的 MCP 客户端需要订阅的端点
某些 MCP 客户端不支持 SSE 传输并需要 stdio 连接。对于这些客户端,请使用:
furi connect
这将以 stdio 模式直接启动聚合器服务器,允许 MCP 客户端通过 stdin/stdout 连接。服务器将聚合所有正在运行的 MCP 工具并通过 stdio 传输提供它们。
重要:此命令仅提供符合 MCP 协议要求的 JSON 输出。所有日志都被抑制,以确保与 MCP 客户端的干净通信。
注意:与 furi meta start 不同,此命令在前台运行并直接维护连接。
您可以指定自定义端口:
furi meta start -p 9338
如果没有传递端口,默认为 9338
要停止聚合器:
furi meta stop
要重启聚合器(保留端口设置):
furi meta restart
要检查聚合器服务器的状态:
furi meta status
要查看更多的输出行,请使用 -l <行数>
要通过 http 访问您的 MCP,可以开启代理:
furi http start
要传递端口,可以使用 http start -p <端口> 标志。
furi http start -p 9339
如果没有传递端口,默认为 9339
要关闭路由,可以使用:
furi http stop
Furikake HTTP API 分为 公共路由 和 sudo 路由。公共路由默认可访问,而 sudo 路由必须显式启用。通过 sudo 路由,您可以主动通过 HTTP API 管理包和实例。
如果您希望保护您的 API,可以设置 HTTP_AUTH_TOKEN 环境变量。
export HTTP_AUTH_TOKEN=您的秘密令牌
或者在您的 .env 文件中:
HTTP_AUTH_TOKEN=您的秘密令牌
为了避免在安装包时遇到 GitHub API 速率限制,您可以提供 GitHub 个人访问令牌:
export GITHUB_KEY=您的 GitHub 令牌
或者在您的 .env 文件中:
GITHUB_KEY=您的 GitHub 令牌
这将把您的速率限制从每小时 60 次请求增加到每小时 5,000 次请求。您可以在 GitHub 设置 > 开发者设置 > 个人访问令牌 创建个人访问令牌。
所有 API 端点遵循标准化的 JSON 响应格式:
成功响应:
{
"success": true,
"data": {"根据端点不同而变化的响应"}
}
错误响应:
{
"success": false,
"message": "描述性的错误消息"
}
/mcp名称/call/工具名称 和 /mcp名称/start 端点| 端点 | 方法 | 描述 | 参数 | 响应格式 |
|---|---|---|---|---|
/list | GET | 列出正在运行的 MCP | ?all=true(可选)显示所有已安装的 MCP | {"success": true, "data": ["mcp名称1", "mcp名称2"]} |
/tools | GET | 列出所有运行 MCP 的可用工具 | 无 | {"success": true, "data": [{"name": "工具名称", "description": "工具描述", "inputSchema": {...}, "mcp名称": "mcp名称"}]} |
/<mcp名称>/tools | GET | 列出特定 MCP 的工具 | 无 | {"success": true, "data": [{"name": "工具名称", "description": "工具描述", "inputSchema": {...}}]} |
/<mcp名称>/call/<工具名称> | POST | 调用 MCP 上的工具 | 工具参数作为请求正文中的 JSON | {"success": true, "data": {/* 工具特定响应 */}} |
列出正在运行的 MCP:
curl http://localhost:9339/list
要查看所有在线 MCP 的所有可用工具,可以使用:
curl "http://localhost:9339/list"
列出所有在线 MCP 的工具:
curl http://localhost:9339/tools
列出特定 MCP 的工具:
curl http://localhost:9339/<mcp名称>/tools
调用工具:
curl -X POST http://localhost:9339/<mcp名称>/call/<工具名称> -d '{"数据1":"值1", "数据2":"值2"}'
要启用允许通过 API 管理 MCP 的 sudo 路由:
furi http start --sudo
| 端点 | 方法 | 描述 | 参数 | 响应格式 |
|---|---|---|---|---|
/status | GET | 获取所有 MCP 的状态(运行和停止) | 无 | {"success": true, "data": [{"name": "mcp名称", "pid": "12345", "status": "在线", "cpu": "0%", "memory": "10MB", "uptime": "2h"}]} |
/add/<作者>/<仓库> | GET | 从 GitHub 安装 MCP | 无 | {"success": true, "data": {"installed": true, "message": "成功安装"}} |
/<mcp名称>/status | GET | 获取特定 MCP 的状态 | ?lines=10(可选)控制日志行数 | {"success": true, "data": {"name": "mcp名称", "pid": "12345", "status": "在线", "logs": ["日志行 1", "日志行 2"]}} |
/<mcp名称>/restart | GET | 重启特定 MCP | 无 | {"success": true, "data": {"restarted": true}} |
/<mcp名称>/start | POST | 启动特定 MCP | 环境变量作为请求正文中的 JSON | {"success": true, "data": {"started": true}} |
/<mcp名称>/stop | GET | 停止特定 MCP | 无 | {"success": true, "data": {"stopped": true}} |
/<mcp名称>/rename | GET | 重命名特定 MCP | ?newName=<新名称>(必需) | {"success": true, "message": "从旧名称重命名为新名称"} 或 {"success": false, "message": "错误消息"} |
/<mcp名称>/remove | GET | 删除特定 MCP | 无 | {"success": true, "data": {"removed": true}} |
/<mcp名称>/env | GET | 获取特定 MCP 的环境变量 | 无 | {"success": true, "data": {"variables": ["键1", "键2"]}} |
获取所有 MCP 的状态:
curl http://localhost:9339/status
安装 MCP:
curl http://localhost:9339/add/<作者>/<仓库>
获取特定 MCP 的状态和日志:
curl "http://localhost:9339/<mcp名称>/status?lines=20"
使用环境变量启动 MCP:
curl -X POST http://localhost:9339/<mcp名称>/start -d '{"API_KEY":"您的-api-key-here"}'
重启 MCP:
curl http://localhost:9339/<mcp名称>/restart
停止 MCP:
curl http://localhost:9339/<mcp名称>/stop
重命名 MCP:
curl "http://localhost:9339/<mcp名称>/rename?newName=<新名称>"
删除 MCP:
curl http://localhost:9339/<mcp名称>/remove
如果您遇到 HTTP API 服务器的问题,可以使用 furi http status 来调试。
如果您已经阅读到这里,我希望您发现 Furikake 有用且节省时间。我为了好玩而构建了这个,作为一种让我更直接地与 MCP 交互的方式。如果您愿意贡献,请随意打开问题或拉取请求。我会在检查您的更改后合并。
如果您认为这是一个好主意,请给仓库点赞。
感谢您查看 Furikake。