愤怒
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 _例如,furi添加smithery ai/mcp获取_
您还可以使用以下命令重命名MCP rename 命令,请注意,如果MCP正在运行,这将重新启动它。
furi rename
_例如,furi将smithery ai/mcp fetch重命名为mcp fetch_
删除MCP
furi remove _例如,furi删除mcp获取_
列出已安装的MCP
显示所有已安装的MCP
furi list启动MCP
furi start -e '{"name1":"value1", "name2":"value2"}'-e env是可选的,取决于所调用的MCP服务器
确保将有效的JSON对象传递给 -e 旗帜。
一旦您使用启动服务器 -e 标志,它将被保存到配置文件中,并在再次使用服务器时重新使用。
要查看MCP所需的环境变量,请使用:
furi env 您可以使用以下命令获取任何MCP的所有可用工具列表(包括详细信息):
furi tools 然后,您可以使用以下命令调用该工具:
调用工具
furi call '{"param1":"value1", "param2":"value2"}'_参数必须是单引号括起来的有效JSON字符串_
停止MCP
furi stop 重新启动MCP
furi restart 获取所有正在运行的MCP的状态
这将显示所有正在运行的MCP的状态。
furi status如果你想从特定的MCP获取日志,你可以使用:
furi status _要查看更多输出行,请使用 -l _
配置存储
所有已安装的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 _
使用HTTP API
- 任何正在运行的MCP都将自动拥有一个http路由。
- 打开/关闭MCP只能通过cli完成。
要通过http访问您的MCP,您可以通过以下方式打开代理:
furi http start为了通过端口,您可以使用 http start -p 旗帜。
furi http start -p 9339_如果不传递端口,则默认为9339_
要关闭路线,您可以使用:
furi http stopHTTP 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-tokenGitHub速率限制
为了避免在安装软件包时限制GitHub API速率,您可以提供GitHub个人访问令牌:
export GITHUB_KEY=your-github-token或者在你的 .env 文件:
GITHUB_KEY=your-github-token这将您的速率限制从每小时60个请求增加到每小时5000个请求。您可以在以下位置创建个人访问令牌 .
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"}]} |
//tools | GET | 列出特定MCP的工具 | 无 | {"success": true, "data": [{"name": "toolName", "description": "Tool description", "inputSchema": {...}}]} |
//call/ | 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//tools调用工具:
curl -X POST http://localhost:9339//call/ -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// | GET | 从GitHub安装MCP | 无 | {"success": true, "data": {"installed": true, "message": "Successfully installed"}} |
//status | GET | 获取特定MCP的状态 | ?lines=10 (可选)控制日志行 | {"success": true, "data": {"name": "mcpName", "pid": "12345", "status": "online", "logs": ["log line 1", "log line 2"]}} |
//restart | GET | 重新启动特定MCP | 无 | {"success": true, "data": {"restarted": true}} |
//start | POST | 启动特定的MCP | 请求正文中的JSON环境变量 | {"success": true, "data": {"started": true}} |
//stop | GET | 停止特定MCP | 无 | {"success": true, "data": {"stopped": true}} |
//rename | GET | 重命名特定MCP | ?newName= (必填) | {"success": true, "message": "Renamed from oldName to newName"} 或 {"success": false, "message": "Error message"} |
//remove | GET | 删除特定MCP | 无 | {"success": true, "data": {"removed": true}} |
//env | GET | 获取特定MCP的环境变量 | 无 | {"success": true, "data": {"variables": ["key1", "key2"]}} |
示例用法:
获取所有MCP的状态:
curl http://localhost:9339/status安装MCP:
curl http://localhost:9339/add//获取特定MCP的状态和日志:
curl "http://localhost:9339//status?lines=20"使用环境变量启动MCP:
curl -X POST http://localhost:9339//start -d '{"API_KEY":"your-api-key-here"}'重新启动MCP:
curl http://localhost:9339//restart停止MCP:
curl http://localhost:9339//stop重命名MCP:
curl "http://localhost:9339//rename?newName="移除MCP:
curl http://localhost:9339//remove如果您在HTTP API服务器上遇到任何问题,您可以使用 furi http status 调试。
闭幕词
如果你已经走了这么远,我希望你觉得Furikake有用且节省时间。我创建这个是为了好玩,这是我与MCP合作的一种方式。如果你想做出贡献,请随时提出问题或拉取请求。检查您的更改后,我将合并。
如果你认为这是一个好主意,请在回购中加星。
感谢您查看Furikake。
