mcpField
🍃
🍃 Furikake (or furi)

🍃 Furikake (or furi)

本地服务
furi.so开发工具17358 周前更新

关于 🍃 Furikake (or furi)

furi 是用于管理 MCP 服务的命令行与 HTTP API 工具,基于 Bun 和 TypeScript 构建。它可从 GitHub 下载 MCP 服务,并统一管理其启动、停止与日志,适合希望在本地便捷操作 MCP 服务的开发者。

主要功能

  1. 01从 GitHub 安装 MCP 服务
  2. 02通过命令行启动、停止与重启服务
  3. 03查看运行状态与各进程日志
  4. 04提供 HTTP API 路由与 SSE 聚合端点
  5. 05使用 PM2 管理进程状态

适用场景

  1. 01在本地批量安装并管理多个 MCP 服务
  2. 02通过 HTTP API 调用正在运行的 MCP 工具
  3. 03为仅支持 stdio 的客户端提供聚合连接

MCP 相关

furi 聚合所有正在运行的 MCP 服务中的工具,并通过 SSE 端点或 stdio 方式对外提供给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

furi

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

  • 从 GitHub 下载 MCP 服务
  • 检测 Smithery.yaml(或自动检测并处理执行)
  • 功能齐全的 CLI [nanospinners,易读性]
  • 支持 Typescript 和 Javascript MCP
  • 基于 Python 的 MCP 是路线图中的重点项目(之后也会支持)
  • HTTP API 路由(使用 Bun http、stdio 转 http,路由清晰且标准)
  • 可自定义端口和 sudo 路由的可见性
  • 查看所有正在运行的 MCP 及每个进程的日志
  • 进程状态管理 使用 PM2
  • 使用 Bun 和 Typescript 构建
  • 配米饭很好吃

安装(macOS/Linux)

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

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

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

furi

Furikake 底层使用 Bun。如果尚未安装 Bun,安装脚本会自动安装。

升级 Furi

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

furi upgrade

使用方法

管理 MCP

Furikake 可以按以下方式与任何公开的 GitHub 仓库配合使用:

furi add <author/repo>

例如:furi add smithery-ai/mcp-fetch

也可以使用 rename 命令重命名 MCP。请注意,如果 MCP 正在运行,此操作会将其重启。

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

例如:furi rename smithery-ai/mcp-fetch mcp-fetch

删除 MCP
furi remove <mcpName>

例如:furi remove mcp-fetch

列出已安装的 MCP

显示所有已安装的 MCP

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

-e env 是可选项,具体取决于所调用的 MCP 服务。

请确保为 -e 标志传入有效的 JSON 对象。

使用 -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 与 Cursor 等任意 MCP 客户端配合使用。

Furi 会收集所有正在运行的 MCP 提供的工具,并通过 SSE 端点公开这些工具,供你的应用或 MCP 客户端订阅。聚合器会自动汇总所有正在运行的 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 路由。
  • 只能通过 CLI 启用或关闭 MCP。

若要通过 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 次请求提高到每小时 5,000 次请求。你可以在 GitHub 设置 > 开发者设置 > 个人访问令牌创建个人访问令牌。

API 响应格式

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

  • 成功响应:

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

    {
      "success": false,
      "message": "Descriptive error message"
    }
    
HTTP 方法
  • POST - 仅用于 /mcpName/call/toolName 和 /mcpName/start 端点
  • GET - 用于所有其他端点
公共路由
端点方法描述参数响应格式
/listGET列出正在运行的 MCP?all=true(可选),用于显示所有已安装的 MCP{"success": true, "data": ["mcpName1", "mcpName2"]}
/toolsGET列出所有正在运行的 MCP 中的可用工具无{"success": true, "data": [{"name": "toolName", "description": "Tool description", "inputSchema": {...}, "mcpName": "mcpName"}]}
/<mcpName>/toolsGET列出指定 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"}'
Sudo 路由

要启用 sudo 路由,以便通过 API 管理 MCP:

furi http start --sudo
端点方法描述参数响应格式
/statusGET获取所有 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>/statusGET获取特定 MCP 的状态?lines=10(可选),用于控制日志行数{"success": true, "data": {"name": "mcpName", "pid": "12345", "status": "online", "logs": ["log line 1", "log line 2"]}}
/<mcpName>/restartGET重启特定 MCP无{"success": true, "data": {"restarted": true}}
/<mcpName>/startPOST启动特定 MCP请求正文中的 JSON 环境变量{"success": true, "data": {"started": true}}
/<mcpName>/stopGET停止特定 MCP无{"success": true, "data": {"stopped": true}}
/<mcpName>/renameGET重命名特定 MCP?newName=<newName>(必填){"success": true, "message": "Renamed from oldName to newName"} 或 {"success": false, "message": "Error message"}
/<mcpName>/removeGET删除特定 MCP无{"success": true, "data": {"removed": true}}
/<mcpName>/envGET获取特定 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。如果你想贡献代码,欢迎提交 issue 或 pull request。我会在检查你的更改后合并。

如果你觉得这是个好主意,请为这个仓库点个星。

感谢你了解 Furikake。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。