mcpField
H
Heimdall

Heimdall

本地服务
github.com/shinzo-labs安全1982 周前更新

关于 Heimdall

Heimdall 是一个轻量级服务,用于管理本地 MCP 服务,可通过单个 npx 命令安装。它允许按工具为 MCP 客户端设置授权,并让同一设备上的所有 MCP 客户端共享该配置。

主要功能

  1. 01通过 npx 命令安装
  2. 02按服务器与工具设置授权
  3. 03同一设备上的多个客户端共享配置
  4. 04记录客户端与子服务的运行日志

适用场景

  1. 01限制 Agent 可调用的 MCP 工具范围
  2. 02在多个 MCP 客户端之间统一管理 MCP 服务配置

MCP 相关

Heimdall 作为 MCP 服务位于客户端与本地各 MCP 服务之间,负责代理这些服务并依据 controls.json 中的设置过滤可用工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"heimdall": {
"command": "npx",
"args": [
"-y",
"@shinzolabs/heimdall"
]
}
}
}
启动命令npx -y @shinzolabs/heimdall

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@shinzolabs/heimdall

工具

还没有获取到工具列表

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

详细介绍

Heimdall

npm version smithery badge

Heimdall 是一款轻量级服务,用于管理本地 MCP 服务,只需运行一条 npx 命令即可安装。你可以为 MCP 客户端授权特定的 MCP 服务工具,并且设备上的所有 MCP 客户端都可以访问同一份配置。

安装

⚠️ 注意:我们强烈建议在安装前备份 MCP 服务配置,以防凭据意外丢失。

设置脚本会执行以下几项关键操作:

  • 将你指定路径中的 mcpServers 配置 JSON 移至 ~/.heimdall/config.json
  • 在原 mcpServers 配置路径中插入 Heimdall 的单条配置
  • 在 ~/.heimdall/controls.json 中初始化控制项,为所有现有服务授权所有方法

请参阅配置,了解如何修改 ~/.heimdall/controls.json 来限制特定服务的授权工具,以及如何向 ~/.heimdall/config.json 添加新服务。

通过 NPX 安装(推荐)
  1. 运行设置脚本(如果未提供路径,则会生成空配置):
npx @shinzolabs/heimdall setup <optional: path/to/current/config.json>
通过本地实例安装
  1. 下载软件包:
git clone https://github.com/shinzo-labs/heimdall.git
  1. 安装并构建依赖项:
cd heimdall && pnpm i && pnpm build
  1. 运行设置脚本(如果未提供路径,则会生成空配置):
pnpm run setup <optional: path/to/current/config.json> <optional: path to `index.js` file in local Heimdall instance, ex. `/path/to/local/heimdall/dist/index.js`>

配置

编辑服务列表

要添加或更新可用服务,只需像常规 mcpServers 配置 JSON 一样更新 ~/.heimdall/config.json。请注意,如果不同时在 ~/.heimdall/controls.json 中添加服务及其授权工具,你将无法通过 Heimdall 看到新服务的工具。

编辑授权工具

要为新服务或现有服务添加授权工具,请按需将它们添加到 ~/.heimdall/controls.json,Heimdall 会在几秒后更新其内部配置。如果你的 MCP 客户端支持动态缓存工具列表,你应该会看到授权工具自动更新。其他客户端(例如 Claude Desktop)可能需要重启才能看到新工具。

以下是 ~/.heimdall/controls.json 的架构:

{
  "authorizedMcpServers": {
    "server1": {
      "authorizedTools": [
        "tool1",
        "tool2",
        ...
      ]
    },
    "server2": {
      "authorizedTools": [
        "tool1",
        "tool2",
        ...
      ]
    }
多个 MCP 客户端

如果设备上运行着多个 MCP 客户端,可以为每个新客户端设置以下 config.json,以便在所有客户端上启用相同的授权工具(假设 Heimdall 已在设备上完成设置):

{
  "mcpServers": {
    "heimdall": {
      "command": "npx",
      "args": [
        "@shinzolabs/heimdall"
      ]
    }
  }
}

故障排除

可用工具

某些 MCP 客户端对 Agent 在特定时间可用的工具数量有限制。例如,Cursor 在所有服务中最多支持 40 个工具,因此 controls.json 中 authorizedTools 的总数不能超过此限制。

日志

要查看正在运行的实例的日志,请前往 ~/.heimdall/logs。每个 MCP 客户端的 Heimdall 实例及其子服务的日志都存储在以随机 UUID 标识的独立目录中。

孤立的子进程

如果 MCP 客户端意外关闭,或未在关闭前向 Heimdall 发送正确的 SIGTERM 信号,之后设备上可能仍会有孤立的 node(和 npm)进程。目前必须手动强制终止这些进程。如果设备上没有其他正在运行的敏感 node 进程,可以使用以下命令进行清理:

pkill -aif node

贡献

欢迎并鼓励大家贡献。如有任何问题、意见或顾虑,请联系 [email protected]。

评论

支持 Markdown

第一次接触 MCP?

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

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