Token导航 LogoToken导航TokenDH.com
Vaultclaw MCP logo
运维云端未说明官方级别未说明来源级核验

Vaultclaw MCP

MCP Server

一个用于Vaultclaw操作的Go MCP服务器,支持本地cookbook/template目录渲染和远程拉取安装。

工具数

42

提示词数

0

GitHub Stars

1

资源数

0
GoGo语言云端部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

accordsai

提供方

accordsai

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

协议mcp(计划1+2+3)

转到MCP服务器进行Vaultclaw操作,以及本地烹饪书/模板目录渲染和远程拉取安装。

这实现了什么

  • stdio MCP服务器(默认模式)。
  • 用于共享运行时部署的可选HTTP网桥模式。
  • 仅令牌会话配置(无密码处理)。
  • 连接器工具:列出/获取/验证/执行/执行作业。
  • 文档辅助工具:Vaultclaw文档类型的建议/最新版本。
  • 计划工具:验证/执行/运行状态。
  • 必备工具:插槽绑定+无界轮廓。
  • 自动无限制配置文件编排,用于:

- vaultclaw_connector_execute_job - vaultclaw_plan_execute

  • 显式编排助手:

- vaultclaw_unbounded_profile_resolve - vaultclaw_plan_unbounded_profile_preview

  • MCP友好包络的确定性误差归一化。
  • 自动 module_hash 从连接器派生 policy_hash 对于有界的执行路径。
  • 外部审批交接 execute-jobplan-execute.
  • 显式等待/恢复轮询工具,用于批准后的继续。
  • 只读审批可见性工具(待处理列表/获取+作业/运行状态结果预测)。
  • 本地烹饪书捆绑CRUD/导入/导出目录。
  • 配方/模板发现工具和模板渲染工具。
  • 远程目录源注册表+仅拉取列表/安装,可选SHA256验证。
  • 严格的计划3边界:目录/渲染工具从不执行Vault操作。

非目标

  • 批准签字或提交决定。
  • 保险库初始化/解锁/锁定。
  • 远程烹饪书发布/发布API。
  • 超越stdio和请求/响应HTTP的双向流传输。

构建并运行

go run ./cmd/accords-mcp

这将通过stdin/stdout启动MCP服务器。

HTTP模式(用于单例部署):

ACCORDS_MCP_HTTP_ADDR=:8080 ACCORDS_MCP_HTTP_PATH=/v1/mcp go run ./cmd/accords-mcp

这通过HTTP为JSON-RPC提供服务 POST /v1/mcp (别名: /mcp)以及健康终点(/healthz, /v1/healthz).

单例HTTP会话范围:

  • vaultclaw_session_configure, vaultclaw_session_status,以及 vaultclaw_session_clear 根据HTTP请求租户密钥确定范围。
  • 严格租户标头模式env: ACCORDS_MCP_HTTP_REQUIRE_TENANT_HEADER (默认值: false).
  • 范围解析顺序(第一个非空标头获胜):

1. X-Accords-Tenant-Id (主标题) 1. X-OpenClaw-Tenant-Id (可选兼容性标头) 1. X-Tenant-Id (可选兼容性标头) 1. 退路: default (仅当严格模式关闭时)

  • 行为矩阵:

- 严格模式 false (默认):缺少租户标头将回退到 default 范围。 - 严格模式 true:缺少的租户标头被HTTP拒绝 400 信封错误代码 MCP_TENANT_HEADER_REQUIRED;没有退路 default. - 任一模式下都存在标头:保留上述现有标头的优先级。

  • 严格模式抑制包络形状:

- ok=false - error.code="MCP_TENANT_HEADER_REQUIRED" - error.category="validation"

  • stdio 模式始终使用 default 范围。

烹饪书编写标准

有关烹饪书/食谱/模板/计划创作约定和所需的测试覆盖率,请参阅:

MCP信封

每次工具调用都会返回:

{
  "ok": true,
  "data": {},
  "error": null,
  "meta": {
    "request_id": "...",
    "vault_http_status": 200,
    "vault_code": ""
  }
}

关于失败:

{
  "ok": false,
  "data": null,
  "error": {
    "code": "MCP_*",
    "category": "auth|approval|validation|policy|secrets|plans|network|internal",
    "message": "...",
    "retryable": false,
    "vault_code": "...",
    "details": {}
  },
  "meta": {
    "request_id": "...",
    "vault_http_status": 4xx,
    "vault_code": "..."
  }
}

工具

会话

  1. vaultclaw_session_configure(base_url, token, timeout_ms?)
  2. vaultclaw_session_status()
  3. vaultclaw_session_clear()

作用域行为:

  • 在HTTP模式下,会话工具对解析的请求作用域进行操作(基于标头,请参阅上面的单例HTTP会话作用域)。
  • 在stdio模式下,会话工具在 default 范围。

例子:

{
  "name": "vaultclaw_session_configure",
  "arguments": {
    "base_url": "http://127.0.0.1:8080",
    "token": "vc_tok_...",
    "timeout_ms": 20000
  }
}

核心行动

  1. vaultclaw_connectors_list()
  2. vaultclaw_connector_get(connector_id)
  3. vaultclaw_connector_validate(request)
  4. vaultclaw_connector_execute(request)
  5. vaultclaw_connector_execute_job(request, orchestration?)
  6. vaultclaw_document_types_suggest(query, top_k?)
  7. vaultclaw_document_types_latest(type_id, subject_id?)

vaultclaw_connector_validate 致电Vaultclaw /v0/connectors/validate 并返回字段级验证错误(path, code, message, expected, actual)当有效载荷形状无效时。

vaultclaw_connector_executevaultclaw_connector_execute_job 同时运行模块哈希预检:

  • 谷歌Gmail有界动词:总是派生 module_hash 从连接器 policy_hash 除非已经提供。
  • 通用HTTP传统秘密id绑定(token_secret_id / required_secret_ids 路径):派生 module_hash.
  • 没有遗留秘密id绑定的通用HTTP无界配置文件/插槽意图路径:不强制模块哈希。

vaultclaw_connector_executevaultclaw_connector_execute_job 始终通过验证 /v0/connectors/validate 在执行之前。如果验证失败,它们会提前返回,并且不会请求/触发审批执行路径。

vaultclaw_connector_execute_job 编排默认值:

{
  "unbounded_profiles": true,
  "auto_create_profiles": true
}

文档辅助工具行为:

  • vaultclaw_document_types_suggest 致电Vaultclaw /v0/docs/types/suggest.
  • vaultclaw_document_types_latest 致电Vaultclaw /v0/docs/types/latest.
  • 对于非成功响应,MCP在故障信封中保留Vaultclaw代码/详细信息(vault_codedetails.vault_error).

例子:

{
  "name": "vaultclaw_connector_execute_job",
  "arguments": {
    "request": {
      "connector_id": "generic.http",
      "verb": "generic.http.request.v1",
      "request": {
        "method": "GET",
        "url": "https://api.example.com/data",
        "secret_attachments": [
          {
            "slot": "api_key",
            "intent": "http.auth",
            "expected_secret_types": ["api-key"],
            "mode": "read",
            "target": "https://api.example.com"
          }
        ]
      }
    }
  }
}

安全的Gmail执行顺序

  1. 发现(vaultclaw_recipes_search)优先选择最新的食谱条目(google.workspace@1.3.0 之前 1.2.0).
  2. 渲染模板(vaultclaw_template_render)或加载配方/计划有效载荷。
  3. 验证有效载荷(vaultclaw_connector_validatevaultclaw_plan_validate).
  4. 如果有效载荷包括 document_attachments,每次飞行前 type_idvaultclaw_document_types_latest.
  5. 仅在验证/飞行前通过后执行。
  6. 如果需要批准,请等待用户批准,然后通过以下方式继续 vaultclaw_approval_wait.

典型的Gmail有效负载形状:

  • 收件人必须是数组: to, cc, bcc
  • 邮件正文使用 text_plain / text_html
  • 文档附件的使用 document_attachments 具有严格对象键的数组:

- 必修的: type_id - 可选: filename, content_type - 无其他密钥

弃用的Gmail形状(被模式验证拒绝):

  • body_text
  • 标量接收者字段(例如, to: "user@example.com" 而不是 to: ["user@example.com"])

附件感知提示流示例:

  1. 提示: send my passport over email to a@b.com
  2. 通过解析类型 vaultclaw_document_types_suggest(query="passport", top_k=5) -> identity.passport.
  3. 使用以下命令构建渲染输入:

- to=["a@b.com"] - subject="Document: Passport" (如果缺失,则默认) - text_plain="Attached is my passport." (如果缺失,则默认) - document_attachments=[{"type_id":"identity.passport"}]

  1. 使用渲染+验证Gmail计划和飞行前 vaultclaw_document_types_latest(type_id="identity.passport", subject_id="self").
  2. 仅在飞行前解决时执行。

护照复印+详细信息工作流程

vaultclaw_passport_email_workflow 为以下内容添加确定性编排流:

  • “发送电子邮件至 `` 附上我的护照副本,并在电子邮件正文中注明我的护照字段。"

输入:

  • 必修的: recipient_email (或包括在 request_text)
  • 可选: subject (默认为 Passport Copy and Details)
  • 可选: body_style
  • 可选简历字段: passport_document_id, manual_fields
  • 可选: execute (true 默认情况下;集 false 仅返回计划+计划输入)

行为:

  1. 解决护照文件绑定问题(identity.passport, subject_id=self).
  2. 跑:

- identity.extraction.run.v1profile_kind=KYC, provider=aws.textract.v1, mode=ANALYZE_AND_SAVE - identity.profile.read.v1 对于所需插槽: - given_name - family_name - passport_number - passport_expiry_date - passport_issuing_country

  1. 构建一个带有标签护照字段的纯文本电子邮件正文。
  2. 构建一个包含身份和Gmail步骤的连接器计划:

- identity.extraction.run.v1 - identity.profile.read.v1 - google.gmail.drafts.create - google.gmail.drafts.send

  1. google.gmail.drafts.send 绑定 draft_idcreate_draft 步进输出。

结构化恢复状态:

  • MCP_RECIPIENT_REQUIRED
  • MCP_DOCUMENT_UPLOAD_REQUIRED (包括上传动作有效载荷)
  • MCP_PASSPORT_EXTRACTION_FAILED
  • MCP_PASSPORT_PROFILE_READ_FAILED
  • MCP_MANUAL_FIELDS_REQUIRED (仅包括手动输入的缺失字段)
  • MCP_GMAIL_DRAFT_SEND_FAILED

计划

  1. vaultclaw_plan_validate(plan)
  2. vaultclaw_plan_execute(plan, plan_input?, orchestration?)
  3. vaultclaw_plan_run_get(run_id)

vaultclaw_plan_validatevaultclaw_plan_execute 不要注射 module_hash 进入计划步骤 request_base 有效载荷。

vaultclaw_plan_execute 编排默认值:

{
  "unbounded_profiles": true,
  "auto_create_profiles": true
}

审批可见性+简历

  1. vaultclaw_job_get(job_id)
  2. vaultclaw_approvals_pending_list(states?, limit?, connector_id?, verb?, agent_id?, challenge_id?)
  3. vaultclaw_approvals_pending_get(challenge_id, pending_id)
  4. vaultclaw_approval_wait(handle, timeout_ms?, poll_interval_ms?)

等待默认值和夹具:

  • 默认 timeout_ms=600000,min 1000,最大值 3600000
  • 默认 poll_interval_ms=1500,min 250,最大值 10000

例子:

{
  "name": "vaultclaw_plan_execute",
  "arguments": {
    "plan": {
      "steps": [
        {
          "step_id": "s1",
          "connector_id": "generic.http",
          "verb": "generic.http.request.v1",
          "request_base": {
            "method": "GET",
            "url": "https://api.example.com/data",
            "secret_attachments": [
              {
                "slot": "api_key",
                "mode": "read",
                "target": "https://api.example.com"
              }
            ]
          }
        }
      ]
    },
    "plan_input": {}
  }
}

必备助手

  1. vaultclaw_slot_bindings_list(connector_id, verb, include_revoked?)
  2. vaultclaw_slot_bind(connector_id, verb, slot, secret_id)
  3. vaultclaw_unbounded_profiles_list(connector_id?, verb?, include_revoked?)
  4. vaultclaw_unbounded_profile_get(profile_id)
  5. vaultclaw_unbounded_profile_upsert(profile)

编排/预览

  1. vaultclaw_unbounded_profile_resolve(requirements, auto_create=true)
  2. vaultclaw_plan_unbounded_profile_preview(plan, plan_input?)

目录+模板(方案3)

目录CRUD:

  1. vaultclaw_cookbooks_list(filter?)
  2. vaultclaw_cookbook_get(cookbook_id, version?)
  3. vaultclaw_cookbook_upsert(bundle, conflict_policy?)
  4. vaultclaw_cookbook_delete(cookbook_id, version?)
  5. vaultclaw_cookbook_export(cookbook_id, version?)
  6. vaultclaw_cookbook_import(bundle, conflict_policy?)

配方/模板访问:

  1. vaultclaw_recipes_search(query?, connector_id?, verb?, tags?, entry_type?)
  2. vaultclaw_recipe_get(cookbook_id, recipe_id, version?)

模板渲染(不执行):

  1. vaultclaw_template_render(cookbook_id, template_id, version?, inputs, output_kind?)
  2. output_kind: AUTO | VERB_REQUEST | PLAN

远程拉取:

  1. vaultclaw_catalog_sources_list()
  2. vaultclaw_catalog_source_upsert(source)
  3. vaultclaw_catalog_source_delete(source_id)
  4. vaultclaw_cookbooks_remote_list(source_id, query?)
  5. vaultclaw_cookbook_remote_install(source_id, cookbook_id, version?, conflict_policy?, expected_sha256?)

搜索订购单:

  • vaultclaw_recipes_search 当多个版本包含匹配的条目时,首先返回更高的烹饪书版本。

模板渲染示例:

{
  "name": "vaultclaw_template_render",
  "arguments": {
    "cookbook_id": "http.recipes",
    "template_id": "tpl_get_user",
    "inputs": {
      "url": "https://api.example.com/users/42",
      "method": "GET"
    },
    "output_kind": "AUTO"
  }
}

渲染响应形状:

{
  "ok": true,
  "data": {
    "rendered": {},
    "missing_inputs": [],
    "used_defaults": [],
    "source_ref": {
      "cookbook_id": "http.recipes",
      "version": "1.0.0",
      "template_id": "tpl_get_user",
      "entry_type": "template.verb.v1",
      "output_kind": "VERB_REQUEST"
    }
  }
}

将渲染的有效负载与现有的操作工具一起使用(vaultclaw_connector_execute, vaultclaw_connector_execute_job, vaultclaw_plan_validate, vaultclaw_plan_execute)当你真正想要处决的时候。

路线解析(vaultclaw_route_resolve)

Vault布线的确定性NL第一解析器:

  • 主路径:注册表路由匹配+确定性输入提取/自动填充。
  • 搜索回退:仅当确定性路由匹配失败时。
  • 缺少所需的输入将返回正常循环恢复的结构化指导。
  • 天气语义提取支持两者 weather in tomorrow's weather in 措辞。

请求:

{
  "name": "vaultclaw_route_resolve",
  "arguments": {
    "request_text": "send email to a@example.com about weather in boston tomorrow",
    "options": {
      "allow_search_fallback": true
    },
    "context": {
      "facts": {
        "weather_summary": "Tomorrow in Boston: 58F with morning showers."
      }
    }
  }
}

回应 data 亮点:

{
  "status": "RESOLVED_EXECUTABLE",
  "inputs": {},
  "missing_inputs": [],
  "autofilled_inputs": [
    {
      "input_key": "text_plain",
      "value": "Weather for boston (tomorrow): Tomorrow in Boston: 58F with morning showers.",
      "source": "external_facts",
      "reason": "composed body from weather facts provided by normal loop"
    }
  ],
  "missing_input_guidance": [
    {
      "input_key": "text_plain",
      "required_for_route": "google.gmail.send_email.v1",
      "resolution_mode": "AUTO_RETRY_WITH_FACTS",
      "question": "Fetch weather details with normal tools, then retry route resolve with context.facts.weather_summary.",
      "external_fact_request": {
        "fact_key": "weather_summary",
        "kind": "weather_forecast",
        "location": "boston",
        "timeframe": "tomorrow"
      }
    }
  ],
  "progress_hint": {
    "mode": "AUTO_ENRICH_AND_RETRY",
    "message": "Missing inputs can be auto-filled with normal-loop facts. Fetch facts and retry route resolve.",
    "next_action": "RUN_FACT_TASKS_AND_RETRY_ROUTE_RESOLVE",
    "retry_recommended": true,
    "parallelizable": true,
    "fact_keys": ["weather_summary"],
    "batch_groups": ["gmail_compose_enrichment"]
  },
  "needs_clarification": false
}

当两者都 subjecttext_plain Gmail撰写未解决,解析器指南可能包括多个 AUTO_RETRY_WITH_FACTS 同一回复中的项目。每 external_fact_request 包括:

  • fact_key (email_subject / email_body)
  • parallelizable: true
  • batch_group: "gmail_compose_enrichment"

正常的循环检索可以并行解析这些事实,并使用以下命令重试一次:

  • context.facts.email_subject
  • context.facts.email_body

对于 generic.http 路由(包括具有所需绑定的搜索解析模板),缺少所需输入现在返回 AUTO_RETRY_WITH_FACTS 指导也是。每个缺失的输入都作为可并行化的事实请求发出(fact_key=, batch_group="generic_http_enrichment"),因此正常的循环获取可以并发运行,然后使用合并重试一次 context.facts.

progress_hint 是机器可读的编排摘要 /vault 呼叫者:

  • mode:

- AUTO_ENRICH_AND_RETRY - PARTIAL_AUTO_ENRICH_THEN_ASK_USER - ASK_USER

  • next_action 给出一个确定性的调用者动作标签。
  • fact_keysbatch_groups 在重试之前公开要获取的内容。

Vaultclaw技能(路由)

可移植回购技能的真实来源:

  • skills/vaultclaw/SKILL.md

OpenClaw使用的本地运行时技能路径:

  • ~/.openclaw/workspace/skills/vaultclaw/SKILL.md

同步命令:

mkdir -p ~/.openclaw/workspace/skills/vaultclaw/references
cp -f skills/vaultclaw/SKILL.md ~/.openclaw/workspace/skills/vaultclaw/SKILL.md
cp -f skills/vaultclaw/references/routes.google_gmail.v1.json ~/.openclaw/workspace/skills/vaultclaw/references/routes.google_gmail.v1.json
cp -f skills/vaultclaw/references/slots.google_gmail.v1.json ~/.openclaw/workspace/skills/vaultclaw/references/slots.google_gmail.v1.json
cp -f skills/vaultclaw/references/document_type_aliases.google_gmail.v1.json ~/.openclaw/workspace/skills/vaultclaw/references/document_type_aliases.google_gmail.v1.json

OpenClaw运行时标准(桥接+审批交接)

accords-mcp 默认为stdio MCP模式,不需要 mcporter 在协议层面。

开爪 2026.3.1 不接受根 mcpServers 输入 ~/.openclaw/openclaw.json (模式验证失败,显示“无法识别的密钥:mcpServers”)。在这个OpenClaw版本中,直接 vaultclaw_* 工具公开需要运行时/插件桥。

安装支持的运行时路径:

openclaw plugins install /Users/sam/code/accords-mcp/plugins/openclaw-vaultclaw-bridge
openclaw plugins enable vaultclaw-openclaw-bridge
openclaw config set plugins.entries.vaultclaw-openclaw-bridge.config.command /Users/sam/code/accords-mcp/bin/accords-mcp
openclaw plugins install @vaultclaw/vaultclaw-mcp-approval-handoff
openclaw plugins enable vaultclaw-mcp-approval-handoff

运行时间要求:

  1. 保持Vaultclaw技能同步(见上文)。
  2. 保持 VC_AGENT_TOKEN 在OpenClaw技能环境中配置(skills.entries.vaultclaw*.env)或桥接插件环境覆盖。
  3. 在插件/配置更改后重新启动网关。

责任划分:

组成部分责任
vaultclaw-openclaw-bridge直接暴露 vaultclaw_* 通过桥接到OpenClaw中的工具 accords-mcp.
vaultclaw-mcp-approval-handoff手柄 MCP_APPROVAL_REQUIRED,等待认证结果,并自动恢复。

故障排除:

症状可能原因修复
vaultclaw_* 工具不可用桥接插件丢失/禁用或未设置命令路径重新运行上面的安装块并验证 plugins.entries.vaultclaw-openclaw-bridge.config.command.
审批回调延迟/丢失审批切换插件丢失/禁用或没有活动会话传递路径启用 vaultclaw-mcp-approval-handoff,确认插件日志,并重新启动网关。
MCP_AUTH_UNAUTHENTICATED /会话未配置丢失/过期 VC_AGENT_TOKEN 或Vaultclaw身份验证状态刷新身份验证/令牌,运行 vaultclaw_session_configure,然后重试。

目录存储和远程默认值

  • 目录根默认值: os.UserConfigDir()/accords-mcp/catalog
  • 用env var覆盖根: ACCORDS_MCP_CATALOG_DIR
  • 文件夹:

- sources.json - index.json - cookbooks//.json

冲突策略:

  • FAIL (默认)
  • OVERWRITE
  • SKIP_IF_EXISTS

远程源身份验证模式:

  • NONE
  • BEARER_ENV (令牌从加载 auth_env_var)

远程完整性:

  • vaultclaw_cookbook_remote_install 在以下情况下验证SHA256:

- expected_sha256 由呼叫者提供,或 - sha256 存在于远程索引项中。

  • 如果任何地方都没有提供校验和,安装仍将继续(此阶段的可信源模型)。

自动无边界配置文件编排

执行作业

当请求是 connector_id=generic.httpverb=generic.http.request.v1:

  1. 从以下内容导出需求集 request.secret_attachments.
  2. 列出/获取无限配置文件。
  3. 按插槽/意图/类型/模式/目标进行确定性匹配。
  4. 按最高分数选择获胜者,然后按词汇选择 profile_id.
  5. 如果没有匹配:

- 如果允许,自动创建最小约束轮廓。 - 否则返回 MCP_UNBOUNDED_PROFILE_REQUIRED 有要求。

  1. 注入 profile_id 并致电 /v0/connectors/execute-job.

计划执行

对于每一个 generic.http.request.v1 步骤:

  1. 解析来自的请求形状 request_base + request_bindings 使用 plan_input.
  2. 如果需要未解析的运行时绑定,请使用以下命令进行严格飞行前失败:

- MCP_PLAN_PROFILE_PRECHECK_UNRESOLVED - step_id - 未解决的参考文献 - 必需的 plan_input 路径

  1. 使用相同的匹配逻辑解析/创建配置文件。
  2. 注入 profile_id 转变为计划。
  3. 将转换后的计划提交给 /v0/connectors/plans/execute.

审批交接和简历(计划2)

vaultclaw_connector_execute_jobvaultclaw_plan_execute 需要批准时立即返回受控切换:

  • ok=false
  • error.code=MCP_APPROVAL_REQUIRED
  • error.details.approval 包括:

- status=PENDING_APPROVAL - kind=JOB|PLAN_RUN - job_id, run_id, challenge_id, pending_id - pending_id_resolved (尽最大努力) - pending_expires_at_unix_ms - pending_approval 原始有效载荷 - decision_outcome=PENDING - next_action 指向 vaultclaw_approval_wait

示例 next_action 有效载荷:

{
  "tool": "vaultclaw_approval_wait",
  "arguments": {
    "handle": {
      "kind": "PLAN_RUN",
      "run_id": "run_123",
      "job_id": "run_123",
      "challenge_id": "ach_123",
      "pending_id": "apj_123"
    }
  }
}

简历流程:

  1. 调用执行工具(execute-jobplan-execute).
  2. 如果 MCP_APPROVAL_REQUIRED,表面等待人类。
  3. 人工外部批准(Vault/UI/其他客户端)。
  4. 呼叫 vaultclaw_approval_wait(handle) 直到终端:

- SUCCEEDED -> decision_outcome=ALLOW - DENIED 带有批准拒绝代码-> decision_outcome=DENY - 否则-> decision_outcome=UNKNOWN

决定论与意识形态

  • 自动创建 profile_id: mcp.auto. 从标准化的要求。
  • 自动创建upstart使用稳定的幂等性密钥:

- mcp-unbounded-profile-

  • 对需求和插槽阵列进行排序/重复数据消除,以实现确定性输出。
  • 模块哈希预检使用连接器 policy_hash 使用内存缓存中的每个请求进行查找。

误差归一化

主要映射:

  • CONNECTOR_APPROVAL_DECISION_REQUIRED, PLAN_APPROVAL_REQUIRED, CONNECTOR_APPROVAL_GRANT_REQUIRED -> MCP_APPROVAL_REQUIRED
  • UNBOUNDED_PROFILE_SLOT_UNRESOLVED, UNBOUNDED_PROFILE_SLOT_VIOLATION, UNBOUNDED_PROFILE_NOT_FOUND, UNBOUNDED_PROFILE_REQUIRED_FIELDS_MISSING -> MCP_UNBOUNDED_PROFILE_INVALID
  • 自动创建追加销售 INSUFFICIENT_SCOPE -> MCP_UNBOUNDED_PROFILE_REQUIRED (编排层)
  • 未解决的计划预检查-> MCP_PLAN_PROFILE_PRECHECK_UNRESOLVED
  • 等待超时-> MCP_WAIT_TIMEOUT
  • 等待错过-> MCP_APPROVAL_PENDING_NOT_FOUND
  • 缺少所需模块哈希路径的可导出策略哈希-> MCP_MODULE_HASH_REQUIRED
  • 根据代码中的映射表保留auth/validation/policy/secrets/plans/network/internal。

测试

运行:

go test ./...

包括单位覆盖范围:

  • 配置文件匹配器精确/不匹配/平局中断行为
  • 确定性最小配置文件生成器和稳定的哈希/配置文件id
  • 自动创建确定性幂等性密钥+缺失作用域处理
  • 计划飞行前已解决/未解决/混合步骤行为
  • vault错误规范化映射
  • 执行作业和计划执行的审批交接提取
  • 待定id尽力而为解析器确定性连接中断行为
  • 等待/恢复超时+终端结果行为
  • 待定未找到+输入行为不正确
  • 模块哈希自动推导规则和处理程序注入行为
  • 目录包验证和条目类型模式检查
  • 本地目录追加销售/列表/获取/删除和冲突策略行为
  • 模板呈现绑定解析(必需/默认/数组路径集语义)
  • 远程索引获取/安装和校验和验证行为

集成烟雾(真正的Vaultclaw)

此套件针对实时Vaultclaw实例验证MCP行为。

假设:

  • Vaultclaw已运行并解锁。
  • 您提供了一个有效的预铸造代理令牌。
  • generic.http 连接器已安装。

环境合同:

  • VC_BASE_URL (默认值: http://127.0.0.1:8787)
  • VC_UNIX_SOCKET (可选;设置后,MCP使用此Unix域套接字进行本地Vaultclaw HTTP传输)
  • VC_AGENT_TOKEN (必填)
  • VC_SMOKE_MANUAL_APPROVAL (默认值: 0;set 1 用于手动恢复测试)
  • VC_SMOKE_WAIT_TIMEOUT_MS (默认值: 600000)
  • VC_SMOKE_POLL_INTERVAL_MS (默认值: 1500)
  • VC_SMOKE_EXPECT_OUTCOME (此计划中的默认值和必需值: DENY)

完全烟雾覆盖所需的令牌范围:

  • connectors.list.v1
  • connectors.get.v1
  • connectors.execute.v1
  • connectors.execute_job.v1
  • connectors.plans.execute.v1
  • connectors.plans.read.v1
  • connectors.approvals.pending.read.v1

自动核心烟雾:

VC_BASE_URL=http://127.0.0.1:8787 \
VC_AGENT_TOKEN= \
go test -tags=integration ./internal/mcp -run '^TestSmoke_(Session|Discovery|Execute|ExecuteJob|Plan|Approvals)' -v

本地Unix套接字上的自动核心冒烟:

VC_UNIX_SOCKET="$HOME/Library/Application Support/vaultclaw/vaultd.sock" \
VC_BASE_URL=http://localhost \
VC_AGENT_TOKEN= \
go test -tags=integration ./internal/mcp -run '^TestSmoke_(Session|Discovery|Execute|ExecuteJob|Plan|Approvals)' -v

手动外部批准恢复吸烟(拒绝):

VC_BASE_URL=http://127.0.0.1:8787 \
VC_AGENT_TOKEN= \
VC_SMOKE_MANUAL_APPROVAL=1 \
VC_SMOKE_EXPECT_OUTCOME=DENY \
go test -tags=integration ./internal/mcp -run '^TestSmoke_ManualApprovalResume_Deny$' -v

手动流动行为:

  1. 测试提交计划执行并接收 MCP_APPROVAL_REQUIRED.
  2. 它记录 challenge_id, pending_id,以及 run_id.
  3. 从外部拒绝该挂起的批准(Vault UI/API)。
  4. 测试电话 vaultclaw_approval_wait 并期待终端 DENIEDdecision_outcome=DENY.

目录标签

目录标签

GoGo语言云端部署MCP服务器本地部署Vaultclaw模板渲染远程安装

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

42

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP