返回市场
羽衣服务器

羽衣服务器

作者:ashwwwin84 星标更新:2025-09-16

项目介绍

furi

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

  • 从 GitHub 下载 MCP 服务器
  • 检测 Smithery.yaml(或自动检测/处理执行)
  • 功能齐全的 CLI [nanospinners, 易读性]
  • 支持 TypeScript 和 JavaScript 的 MCP
  • 基于 Python 的 MCP 是路线图的关键项目(并且将被支持)
  • HTTP API 路由(使用 Bun http,stdio 到 http,清晰且标准的路由)
  • 自定义端口和 sudo 路由的可见性
  • 查看所有正在运行的 MCP 及每个进程的日志
  • 进程状态管理 使用 PM2
  • 使用 BunTypeScript 构建
  • 与米饭相处得很好

安装(macOS/Linux)

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

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

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

furi

Furikake 在内部使用 Bun,安装脚本会安装 Bun(如果尚未安装)。

升级 Furi

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

furi upgrade

如何使用

管理 MCP

Furikake 可以与任何公共 GitHub 仓库配合使用,如下所示:

furi add <作者/仓库>

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

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

furi rename <旧名称> <新名称>

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

删除 MCP

furi remove <mcp名称>

例如:furi remove mcp-fetch

列出已安装的 MCP

显示所有已安装的 MCP

furi list

启动 MCP

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 字符串

停止 MCP

furi stop <mcp名称>

重启 MCP

furi restart <mcp名称>

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

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

furi status

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

furi status <mcp名称>

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

配置存储

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

furi where

使用 MCP 聚合器

您可以使用 Furikake 与任何 MCP 客户端(如 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 传输提供它们。

重要:此命令仅提供符合 MCP 协议要求的 JSON 输出。所有日志都被抑制,以确保与 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 stop

HTTP API 参考

Furikake HTTP API 分为 公共路由sudo 路由。公共路由默认可访问,而 sudo 路由必须显式启用。通过 sudo 路由,您可以主动通过 HTTP API 管理包和实例。

如果您希望保护您的 API,可以设置 HTTP_AUTH_TOKEN 环境变量。

export HTTP_AUTH_TOKEN=您的秘密令牌

或者在您的 .env 文件中:

HTTP_AUTH_TOKEN=您的秘密令牌

GitHub 速率限制

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

export GITHUB_KEY=您的 GitHub 令牌

或者在您的 .env 文件中:

GITHUB_KEY=您的 GitHub 令牌

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

API 响应格式

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

  • 成功响应

    {
      "success": true,
      "data": {"根据端点不同而变化的响应"}
    }
    
  • 错误响应

    {
      "success": false,
      "message": "描述性的错误消息"
    }
    

HTTP 方法

  • POST - 仅用于 /mcp名称/call/工具名称/mcp名称/start 端点
  • GET - 用于其他所有端点

公共路由

端点方法描述参数响应格式
/listGET列出正在运行的 MCP?all=true(可选)显示所有已安装的 MCP{"success": true, "data": ["mcp名称1", "mcp名称2"]}
/toolsGET列出所有运行 MCP 的可用工具{"success": true, "data": [{"name": "工具名称", "description": "工具描述", "inputSchema": {...}, "mcp名称": "mcp名称"}]}
/<mcp名称>/toolsGET列出特定 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"}'

Sudo 路由

要启用允许通过 API 管理 MCP 的 sudo 路由:

furi http start --sudo
端点方法描述参数响应格式
/statusGET获取所有 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名称>/statusGET获取特定 MCP 的状态?lines=10(可选)控制日志行数{"success": true, "data": {"name": "mcp名称", "pid": "12345", "status": "在线", "logs": ["日志行 1", "日志行 2"]}}
/<mcp名称>/restartGET重启特定 MCP{"success": true, "data": {"restarted": true}}
/<mcp名称>/startPOST启动特定 MCP环境变量作为请求正文中的 JSON{"success": true, "data": {"started": true}}
/<mcp名称>/stopGET停止特定 MCP{"success": true, "data": {"stopped": true}}
/<mcp名称>/renameGET重命名特定 MCP?newName=<新名称>(必需){"success": true, "message": "从旧名称重命名为新名称"}{"success": false, "message": "错误消息"}
/<mcp名称>/removeGET删除特定 MCP{"success": true, "data": {"removed": true}}
/<mcp名称>/envGET获取特定 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。