mcpField
A
Achromat MOM

Achromat MOM

远程服务
mom.achromat.ai安全16 天前更新

关于 Achromat MOM

Achromat MOM 是供 Agent 检查工具调用是否符合策略、或复用已验证合规修正方案的 MCP 服务。它可检索过往经验,并依据实时策略评估调用;请求使用本地 Ed25519 密钥签名。

主要功能

  1. 01检索已验证的合规调用
  2. 02依据实时策略检查调用
  3. 03返回修正指引
  4. 04注册签名身份
  5. 05私钥保留在本机

适用场景

  1. 01执行前审查支付调用
  2. 02按策略检查 Shell 或 SQL 参数
  3. 03调用被拦截后复用已验证修正

MCP 相关

服务以子进程形式由 MCP 客户端宿主启动,并通过 stdio 通信,向客户端提供身份注册、经验检索和策略校验工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mom.achromat.ai/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@achromat-ai/mcp-server0.1.2

工具

1
参数类型必填说明
user_confirmedboolean是仅当用户已明确同意创建身份后,才设为 true。如果尚未询问,请先询问,不要调用此工具。

详细介绍

Achromat MCP 服务

一个 MCP 服务,可让任何 MCP 宿主(Claude Desktop、IDE、Agent 框架)将 Achromat MOM 用作原生工具。MOM 会保存已验证的记忆,其中包括被策略拦截的工具调用,以及之后获准的修正调用。借助此服务,你的 Agent 可以在采取行动之前请求符合规范的调用版本,并依据实时策略检查调用,无需你编写任何集成代码。

此服务在你的机器上作为宿主的子进程运行,并通过 stdio 与宿主通信。它使用一把保留在你机器上的 Ed25519 密钥为发往 MOM 的每个请求签名:只有签名会离开你的机器,密钥不会。

添加到 Claude Desktop

打开配置文件:

OS路径
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json

在 mcpServers 下添加此服务,然后重启 Claude Desktop:

{
  "mcpServers": {
    "achromat": {
      "command": "npx",
      "args": ["-y", "@achromat-ai/mcp-server"]
    }
  }
}

设置就全部完成了。需要 Node.js 20 或更高版本;-y 可让 npx 安装此软件包而无需询问。其他 MCP 宿主也使用相同的命令和参数,只需将它们写入各自的配置即可。

首次使用:让你的 Agent 设置身份

MOM 的每个请求都需要签名,因此此服务需要一把 MOM 认可的密钥。你不需要自行创建或注册密钥。首次使用此服务时,它还没有密钥,因此会提供一个工具 achromat_register_identity,并由你的 Agent 询问你是否要设置身份。如果你同意,此服务将:

  1. 在你的机器上生成一对 Ed25519 密钥,
  2. 执行简短的工作量证明(约需一秒;MOM 通过此方式限制自动注册),
  3. 向 MOM 注册公钥,然后
  4. 将私钥保存到 ~/.achromat/achromat_agent_key.pem,此文件只有你可以读取。

之后,achromat_recall 和 achromat_calibrate 将取代注册工具。如果你的宿主不会自动刷新工具列表,请重启一次。

会离开你机器的内容:公钥、工作量证明,以及证明你持有私钥的签名。私钥绝不会离开。MOM 会保留注册记录,并将每个网络的注册次数限制为每天 10 次。

密钥文件就是身份。 请妥善保密,不要提交到 git,也不要出现在截图中,并做好备份:如果丢失,将无法恢复。此服务绝不会覆盖已有的密钥文件,并且只有在 MOM 接受密钥后才会保存文件,因此失败的尝试不会留下任何内容。

选择密钥存放位置

默认情况下,密钥位于 ~/.achromat/achromat_agent_key.pem。若要使用其他路径,请在宿主配置中设置 ACHROMAT_AGENT_KEY_FILE。此设置适用于新密钥(服务会在该路径创建密钥),也适用于已有密钥:

{
  "mcpServers": {
    "achromat": {
      "command": "npx",
      "args": ["-y", "@achromat-ai/mcp-server"],
      "env": {
        "ACHROMAT_AGENT_KEY_FILE": "/Users/you/keys/achromat_agent_key.pem"
      }
    }
  }
}

在 Windows 上,请使用带转义反斜杠的完整路径,例如 "C:\\Users\\you\\keys\\achromat_agent_key.pem"。服务会展开路径开头的 ~。桌面应用启动服务时使用的主目录可能与终端中的不同,因此写明完整路径可避免任何疑问。

已有密钥必须是未加密的 PKCS#8 Ed25519 PEM 文件,并且已获 MOM 认可。

从源代码运行

git clone https://github.com/achromat-ai/achromat-mcp-server.git
cd achromat-mcp-server
npm install
npm run build

将宿主指向构建产物,而不是 npx:

{
  "mcpServers": {
    "achromat": {
      "command": "node",
      "args": ["/absolute/path/to/achromat-mcp-server/dist/index.js"]
    }
  }
}

若要在没有宿主的情况下通过浏览器试用这些工具,请使用 MCP Inspector:

npm run inspect

工具

achromat_register_identity

仅在不存在密钥文件时提供。如上所述,此工具会创建并注册身份。它要求 user_confirmed: true,且 Agent 只能在你同意后设置此值;工具描述会指示它先询问你。

参数必填描述
user_confirmed是必须为 true,且只能在用户表示同意后设置。
achromat_recall

在运行可能被策略拦截的工具(支付、信用决策、机器人或工厂命令、shell、SQL、Web 请求)之前调用此工具。它会查询是否已有经过验证且合规的调用版本。匹配时,你会收到 compliant_arguments、steering_directive 以及适用的规则。将整个 compliant_arguments 对象用作模板,保留所有 [VERIFIED_STATE] 占位符原样不变,只修改你自己的操作值。

参数必填描述
domain是fintech、industrial_iot、robotics 或 devsecops。
tool_name是你即将调用的工具的准确名称。
task_description是用通俗文字描述你要做的事(16 到 1000 个字符,至少 3 个词)。不得包含金额、标识符或个人数据。
arguments是你打算发送的参数,必须是非空 JSON 对象,并使用该工具实际的键名。语义匹配只使用键名(及其嵌套结构),绝不会使用值,因此使用实际键名才能找到合适的经验,而编造结构则会找到错误的经验或找不到任何经验。
achromat_calibrate

当 recall 未找到任何结果,或风险较高时调用此工具。它会根据当前策略评估调用,并返回判定结果、steering directive 和回执 ID。BLOCK 会附带一个 trap_id:按 directive 修正参数,并使用相同的 task_description 和该 trap_id 再次调用工具。ALLOW 表示调用合规。先被拦截、随后获准的调用会成为其他 Agent 的经验。

参数必填描述
domain是同上。
tool_name是同上。
task_description是重试时必须使用完全相同的措辞:它用于将拦截与修正配对。
arguments是要检查的调用参数。必须是非空 JSON 对象。
trap_id否仅在重试时填写:使用先前 BLOCK 返回的 trap_id。

切勿在 arguments 或 task_description 中填写机密或凭据;服务会拒绝此类内容。

这些工具使用 tool_name 这个名称;服务自身的字段是 tool,服务器会在两者之间进行映射。

经验文本(规则、指令、参数)来自社区。服务器会在每个回答中将其标记为数据,Agent 应仅将其用于选择参数值。

配置

变量默认值含义
ACHROMAT_AGENT_KEY_FILE~/.achromat/achromat_agent_key.pemAgent 的 Ed25519 私钥所在位置,或创建位置。
ACHROMAT_BASE_URLhttps://mom.achromat.ai服务源地址。必须使用 https(仅 localhost 可使用普通 http)。

是否存在密钥文件决定了会提供哪些工具;系统会在启动时和注册后立即检查密钥文件。如果主机运行期间你删除、移动或替换了密钥文件,请重启主机。密钥本身会在首次调用工具时读取,因此错误的密钥不会导致服务器从主机中消失:工具调用会返回一条说明需要修正内容的消息。

遇到问题时

每次失败都会以易读的工具结果返回给 Agent,并说明下一步该怎么做。

你看到的内容原因和修复方法
只列出了 achromat_register_identity目前还没有密钥文件。这是首次使用时的正常状态。Agent 询问时,选择同意。
A key file already exists at …此处已设置身份。若要重新开始,请移动或删除该文件,然后重启主机。
The key could not be saved at …该文件夹不可写。请修复其权限,或设置 ACHROMAT_AGENT_KEY_FILE。未注册任何内容。
Too many registration requests / registration limitMOM 会限制每个网络的注册次数(每天 10 次)。请等待,或换用其他网络。未创建任何内容。
Could not reach … / No answer from …网络问题。未创建任何内容;请重试。
The identity was registered, but the key file could not be moved …罕见情况。消息中会给出密钥的保存路径;请将其移动到所需路径。不要删除它。
The key file is passphrase-protected / …holds a rsa key现有密钥必须是未加密的 PKCS#8 Ed25519 密钥。
The key file … is accessible to other users(在主机的服务日志中)对密钥文件运行 chmod 600。在执行此操作前,密钥仍可正常使用。
AGENT_KEY_UNKNOWN(401)密钥文件存在,但 MOM 不认识该密钥。请移动或删除该文件,然后重启主机以创建新身份。
AGENT_KEY_INACTIVE(403)密钥已被撤销或轮换。请移动或删除该文件,然后重启主机。
AGENT_SIGNATURE_EXPIRED(401)你的时钟与标准时间相差超过 60 秒。服务端会使用服务的时钟自动校正;如果仍然失败,请检查系统时间。
Rate limited(429)Recall 每个密钥每小时最多允许 240 次请求,每天最多允许 50 条不同的经验;calibrate 每小时最多允许 120 次。请等待提示中给出的时间。
HTTP 400 INVALID_REQUEST服务会列出有问题的字段。通常是文本或参数中包含凭据或个人数据。

服务日志会写入 stderr,主机会将其写入各自的 MCP 日志文件(Claude Desktop 将日志保存在其日志文件夹中;macOS 上的路径为 ~/Library/Logs/Claude/)。服务绝不会记录密钥、签名或请求内容。

如果主机无法启动 npx,它可能无法看到终端所使用的 PATH(使用 nvm 时很常见)。请在 command 中填写 npx 或 node 的绝对路径。

开发

npm run typecheck   # source and tests
npm test            # vitest
npm run build       # compile to dist/ and mark dist/index.js executable
npm start           # run the built server on stdio (waits for a host)

stdout 是协议通道,因此服务不会向其中写入其他内容。

签名和注册代码遵循Agent 协议(第 2 和第 3 节)的字节级约定;测试会精确复现其中发布的自检向量:请求签名和工作量证明随机数。Ed25519 是确定性的,因此只要签名内容有一个字节发生变化,测试就会失败。

工作量证明会在多个工作线程上进行搜索(最多 8 个,不会占用所有核心),因此大约需要一秒,同时服务在运行期间仍能保持响应。

许可

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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