MCP管理工具

furi是一个易于使用的CLI和API工具,用于管理和操作MCP服务器,支持多种编程语言和HTTP API路由。

  • by ashwwwin
  • TypeScript
  • 本地部署
  • 173 星标
  • 更新于
在 GitHub 查看 ashwwwin/furi

使用说明

愤怒

furi是一款易于使用的CLI和API,用于MCP管理。

  • 从GitHub下载MCP服务器
  • Smithery.yaml检测(或自动检测/处理执行)
  • 功能齐全的CLI[nanopinners,可读性]
  • 支持打字和Javascript MCP
  • 基于Python的MCP是一个关键的路线图项目(并将得到支持)
  • HTTP API路由(使用Bunhttp、stdio到HTTP、clear和标准路由)
  • 自定义端口和sudo路由的可见性
  • 查看每个进程的所有运行MCP+日志
  • 过程状态管理 PM2
  • 内置于 包子 和 TypeScript
  • 与米饭搭配很好

安装(macOS/Linux)

要安装Furi,可以使用以下命令:

curl -fsSL https://furi.so/install | bash

通过运行以下命令验证安装:

furi

Furikake在引擎盖下使用Bun,如果Bun尚未安装,安装脚本将安装Bun。

升级Furi

要将Furi升级到最新版本,请运行:

furi upgrade

如何使用

管理MCP

Furikake可以使用任何公共github仓库,如下所示:

furi add <author/repo>

例如,furi添加smithery ai/mcp获取

您还可以使用以下命令重命名MCP rename 命令,请注意,如果MCP正在运行,这将重新启动它。

furi rename <old-name> <new-name>

例如,furi将smithery ai/mcp fetch重命名为mcp fetch

删除MCP

furi remove <mcpName>

例如,furi删除mcp获取

列出已安装的MCP

显示所有已安装的MCP

furi list

启动MCP

furi start <mcpName> -e '{"name1":"value1", "name2":"value2"}'

-e env是可选的,取决于所调用的MCP服务器

确保将有效的JSON对象传递给 -e 旗帜。

一旦您使用启动服务器 -e 标志,它将被保存到配置文件中,并在再次使用服务器时重新使用。

要查看MCP所需的环境变量,请使用:

furi env <mcpName>

您可以使用以下命令获取任何MCP的所有可用工具列表(包括详细信息):

furi tools <mcpName>

然后,您可以使用以下命令调用该工具:

调用工具

furi call <mcpName> <toolName> '{"param1":"value1", "param2":"value2"}'

参数必须是单引号括起来的有效JSON字符串

停止MCP

furi stop <mcpName>

重新启动MCP

furi restart <mcpName>

获取所有正在运行的MCP的状态

这将显示所有正在运行的MCP的状态。

furi status

如果你想从特定的MCP获取日志,你可以使用:

furi status <mcpName>

要查看更多输出行,请使用 -l <lines>

配置存储

所有已安装的MCP、配置和日志都存储在 .furikake 可以通过运行以下命令定位的目录:

furi where

使用MCP聚合器

您可以通过MCP聚合器将Furikake与任何MCP客户端(如Cursor)一起使用。

Furi从所有正在运行的mcp收集工具,并通过您的应用程序或mcp客户端可以订阅的SSE端点公开它们。聚合器会自动构建所有正在运行mcp的工具列表,并在mcp启动和停止时监听新工具。

适用于支持SSE的MCP客户端

要启动聚合服务器,请执行以下操作:

furi meta start

这也将向您显示MCP客户端需要订阅的端点

仅支持stdio的MCP客户端

一些MCP客户端不支持SSE传输,需要stdio连接。对于这些客户端,请使用:

furi connect

这将直接在stdio模式下启动聚合器服务器,允许MCP客户端通过stdin/stdout连接。服务器将聚合正在运行的MCP中的所有工具,并通过stdio传输使其可用。

重要:此命令仅提供JSON输出,以符合MCP协议要求。所有日志记录都被抑制,以确保与MCP客户端的干净通信。

注意:与 furi meta start,此命令在前台运行并直接维护连接。

您可以指定自定义端口:

furi meta start -p 9338

如果不传递端口,则默认为9338

要停止聚合器,请执行以下操作:

furi meta stop

要重新启动聚合器(保留端口设置):

furi meta restart

要检查聚合服务器的状态,请执行以下操作:

furi meta status

要查看更多输出行,请使用 -l <lines>

使用HTTP API

  • 任何正在运行的MCP都将自动拥有一个http路由。
  • 打开/关闭MCP只能通过cli完成。

要通过http访问您的MCP,您可以通过以下方式打开代理:

furi http start

为了通过端口,您可以使用 http start -p <port> 旗帜。

furi http start -p 9339

如果不传递端口,则默认为9339

要关闭路线,您可以使用:

furi http stop

HTTP API参考

Furikake HTTP API分为 公共路线 和 sudo路由默认情况下,公共路由是可访问的,而sudo路由必须明确启用。使用sudo路由,您可以通过HTTP API主动管理包和实例。

如果你想保护你的API,你可以设置 HTTP_AUTH_TOKEN 环境变量。

export HTTP_AUTH_TOKEN=your-secret-token

或者在你的 .env 文件:

HTTP_AUTH_TOKEN=your-secret-token

GitHub速率限制

为了避免在安装软件包时限制GitHub API速率,您可以提供GitHub个人访问令牌:

export GITHUB_KEY=your-github-token

或者在你的 .env 文件:

GITHUB_KEY=your-github-token

这将您的速率限制从每小时60个请求增加到每小时5000个请求。您可以在以下位置创建个人访问令牌 GitHub设置>开发者设置>个人访问令牌.

API响应格式

所有API端点都遵循标准化的JSON响应格式:

  • 成功响应:

    {
      "success": true,
      "data": {"The response varies by endpoint"}
    }
    
  • 错误响应:

    {
      "success": false,
      "message": "Descriptive error message"
    }
    

HTTP方法

  • 发布 -仅用于 /mcpName/call/toolName 和 /mcpName/start 端点
  • 获取 -用于所有其他端点

公共路线

端点 方法 描述 参数 响应格式
/list GET 列出正在运行的MCP ?all=true (可选)显示所有已安装的MCP {"success": true, "data": ["mcpName1", "mcpName2"]}
/tools GET 列出所有正在运行的MCP中的所有可用工具 无 {"success": true, "data": [{"name": "toolName", "description": "Tool description", "inputSchema": {...}, "mcpName": "mcpName"}]}
/<mcpName>/tools GET 列出特定MCP的工具 无 {"success": true, "data": [{"name": "toolName", "description": "Tool description", "inputSchema": {...}}]}
/<mcpName>/call/<toolName> POST 调用MCP上的工具 请求正文中的JSON形式的工具参数 {"success": true, "data": {/* Tool-specific response */}}

示例用法:

列出正在运行的MCP:

curl http://localhost:9339/list

要查看所有在线MCP的所有可用工具,您可以使用:

curl "http://localhost:9339/list"

列出所有在线MCP的工具:

curl http://localhost:9339/tools

列出特定MCP的工具:

curl http://localhost:9339/<mcpName>/tools

调用工具:

curl -X POST http://localhost:9339/<mcpName>/call/<toolName> -d '{"data1":"value1", "data2":"value2"}'

苏多路线

要启用允许对MCP进行API管理的sudo路由,请执行以下操作:

furi http start --sudo
端点 方法 描述 参数 响应格式
/status GET 获取所有MCP的状态(运行和停止) 无 {"success": true, "data": [{"name": "mcpName", "pid": "12345", "status": "online", "cpu": "0%", "memory": "10MB", "uptime": "2h"}]}
/add/<author>/<repo> GET 从GitHub安装MCP 无 {"success": true, "data": {"installed": true, "message": "Successfully installed"}}
/<mcpName>/status GET 获取特定MCP的状态 ?lines=10 (可选)控制日志行 {"success": true, "data": {"name": "mcpName", "pid": "12345", "status": "online", "logs": ["log line 1", "log line 2"]}}
/<mcpName>/restart GET 重新启动特定MCP 无 {"success": true, "data": {"restarted": true}}
/<mcpName>/start POST 启动特定的MCP 请求正文中的JSON环境变量 {"success": true, "data": {"started": true}}
/<mcpName>/stop GET 停止特定MCP 无 {"success": true, "data": {"stopped": true}}
/<mcpName>/rename GET 重命名特定MCP ?newName=<newName> (必填) {"success": true, "message": "Renamed from oldName to newName"} 或 {"success": false, "message": "Error message"}
/<mcpName>/remove GET 删除特定MCP 无 {"success": true, "data": {"removed": true}}
/<mcpName>/env GET 获取特定MCP的环境变量 无 {"success": true, "data": {"variables": ["key1", "key2"]}}

示例用法:

获取所有MCP的状态:

curl http://localhost:9339/status

安装MCP:

curl http://localhost:9339/add/<author>/<repo>

获取特定MCP的状态和日志:

curl "http://localhost:9339/<mcpName>/status?lines=20"

使用环境变量启动MCP:

curl -X POST http://localhost:9339/<mcpName>/start -d '{"API_KEY":"your-api-key-here"}'

重新启动MCP:

curl http://localhost:9339/<mcpName>/restart

停止MCP:

curl http://localhost:9339/<mcpName>/stop

重命名MCP:

curl "http://localhost:9339/<mcpName>/rename?newName=<newName>"

移除MCP:

curl http://localhost:9339/<mcpName>/remove

如果您在HTTP API服务器上遇到任何问题,您可以使用 furi http status 调试。

闭幕词

如果你已经走了这么远,我希望你觉得Furikake有用且节省时间。我创建这个是为了好玩,这是我与MCP合作的一种方式。如果你想做出贡献,请随时提出问题或拉取请求。检查您的更改后,我将合并。

如果你认为这是一个好主意,请在回购中加星。

感谢您查看Furikake。