mcpField
V
Vaara MCP Server

Vaara MCP Server

本地服务
vaara.io安全15今天更新

关于 Vaara MCP Server

Vaara MCP Server 为需要管控 Agent 工具调用并提供可验证证据的团队提供策略拦截与审计。它在执行前评估风险,并生成可离线核验的防篡改记录和签名收据。

主要功能

  1. 01按策略允许、阻止或升级调用
  2. 02调用前进行风险评分
  3. 03生成哈希链审计记录与签名收据
  4. 04支持离线验证证据
  5. 05生成 EU AI Act 条款级证据

适用场景

  1. 01在 MCP 服务前设置调用治理代理
  2. 02为审计或事故调查提供调用证据
  3. 03在 CI 中检查策略与审计链

MCP 相关

可作为 MCP 代理置于客户端与上游服务之间,先评估 tools/call,再转发允许的调用或返回 MCP 错误。另提供 MCP 服务集成入口。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"vaaraio-vaara-server": {
"command": "uvx",
"args": [
"vaara"
],
"env": {
"VAARA_DB": "<VAARA_DB>",
"VAARA_API_KEY": "<VAARA_API_KEY>"
}
}
}
}
启动命令uvx vaara
需要配置的环境变量
VAARA_DBPath to the SQLite audit DB. Defaults to vaara_audit.db in the working directory.
VAARA_API_KEY密钥Optional shared secret. When set, every tool call must include _api_key in its arguments. Leave unset for single-tenant stdio deployments where process isolation is enough.

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

安装包
pypivaara2.16.0

工具

还没有获取到工具列表

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

详细介绍

Vaara

PyPI 许可证 CI OpenSSF 安全评分卡 Vaara 一致性:52 个测试套件,0 个失败 DOI 10.5281/zenodo.22027975 OpenSSF 最佳实践 Hugging Face 空间

PyPI 下载量

自主行动,有据可查。

每项自主行动都有一份可验证的凭证,任何人都能检查。

你的 AI Agent 转出了资金、写入了文件、调用了工具。之后,有人不信任你,要求你证明它具体做了什么、为什么这么做:可能是监管机构、审计员,也可能是事故发生后的客户。你自己的日志无法证明,因为你可能修改过它们。

快速开始

pip install vaara                            # Python: CLI, MCP proxy, server
brew tap vaaraio/tap && brew install vaara   # macOS: CLI + menu-bar app (built from source)
npm install @vaara/client                    # TypeScript client for the HTTP API
import vaara

@vaara.govern
def transfer_funds(to: str, amount: float) -> str:
    ...

就是这么简单。每次调用受治理函数时,都会先进行风险评分,并依据你的策略作出决定,然后才运行函数体。获准的调用会执行,而决策、调用和结果则会写入一份哈希链式、防篡改的记录,任何人都能离线验证;旁边还会附上一份签名凭证。导出时签署整条记录链(vaara trail export),即可提供第三方证明。记录默认会持久化到 ~/.vaara/trail/audit.db,因此即使重启,证据也不会丢失。需要 Python 3.10+。基础安装包含三个运行时依赖:cryptography、rfc8785 和 cbor2,用于对凭证签名并进行规范化。

deny 和 escalate 都会引发 vaara.Blocked,因为升级处理意味着尚未有人给出答复。在全新安装环境中,上面的示例可以直接运行。默认运行模式为 balanced,风险低于 0.55 时允许,高于 0.85 时拒绝;首次调用 transfer_funds 的评分为 0.275,置信区间为 [0.085, 0.465]。Vaara 根据区间上限作出决定;由于没有历史结果,区间较宽,因此风险较高的调用会在点估计达到阈值之前触发升级处理。通过 report_outcome 反馈真实结果可以缩小区间。其他预设模式可通过 vaara mode list 查看。若要观察决策但不执行操作,请从 @vaara.govern(shadow=True) 开始。

无需安装任何内容即可验证凭证 [vaara.io/verify.html](https://vaara.io/verify.html) 是回执浏览器,提供英文和芬兰文版本。它是一个静态页面和一个脚本,无需构建步骤,也没有依赖项。粘贴回执后,它会重新计算 DSSE 预认证编码,获取其摘要,并使用 WebCrypto 检查 Ed25519 签名。回执不会离开当前标签页,不会上传任何内容,而且页面可以在断网时运行,因此验证不是一项服务,Vaara 也不参与其中。保存页面及其脚本后,它仍然可以正常工作。

页面还说明了通过检查并不能证明什么:密钥属于你所期望的参与方、签署的声明是真实的、没有外部时间机构时 decided_at 有任何意义,或一张回执就是完整的历史记录。

同一页面上的浏览器可以直接从你的浏览器读取公共透明日志。按摘要查找一条 trail head,或粘贴公钥以查看在该密钥下发布的所有内容。无需账户,也无需登录,因为密钥就是身份。向该日志发布内容需要主动选择,且默认关闭(vaara trail publish-head),所以日志中没有记录,只表示没有发布内容,并不表示什么都没发生。

看看还有谁检查过它

vaara.io/conformance.html 是结果页面。它列出每个测试套件及其判定,以及所有运行检查器并公开报告检查结果的参与方(维护者除外)。各行相互链接,每行都包含前一行的摘要,因此删除或重新排序某一行都会破坏其后所有行的摘要,而且任何人都能看出这种破坏。维护者也无法删除某一行。与我们的结果不一致的运行结果也会作为一行记录,并说明原因;这里没有黑名单。

聚合运行器会一次性评估所有测试套件,也会用相同方式评估另一种实现的测试向量:

git clone https://github.com/vaaraio/vaara && cd vaara
pip install cryptography rfc8785                                     # enough for 50 of the 52 suites; the two that skip name their extra
python scripts/conformance_runner.py                                 # grade the reference corpus
python scripts/conformance_runner.py --vectors-dir ./your_vectors    # grade your own

每次运行结束时,它都会打印一个预填充链接,只需点击一次即可申请添加记录。命名并带版本号的规则集、通过检查能证明和不能证明的内容,以及完整的测试套件列表,请参阅 docs/conformance-profile.md。

更喜欢明确的处理流水线?

装饰器会驱动同一个引擎;如果你想直接调用并获取决策对象,也可以这样做。

from vaara.pipeline import InterceptionPipeline

pipeline = InterceptionPipeline()
result = pipeline.intercept(
    agent_id="agent-007",
    tool_name="fs.write_file",
    parameters={"path": "/etc/service.yaml", "content": "..."},
    agent_confidence=0.8,
)
if result.allowed:
    pipeline.report_outcome(result.action_id, outcome_severity=0.0)
else:
    print(result.reason)

每次调用都会根据你的策略获得风险评分以及允许/阻止/升级处理的决策,随后调用、决策和实际结果都会写入审计跟踪。report_outcome 会闭合反馈环:评分器会根据哪些信号实际预测了结果重新调整权重。每个版本都会附带 SLSA v1 构建来源证明,形式为 GitHub 构件证明(SLSA Build Level 2);PyPI wheel 也是同一文件,因此 gh attestation verify vaara-<version>-py3-none-any.whl --repo vaaraio/vaara 可以验证任一下载文件。可选的 ML 分类器:pip install 'vaara[ml]'。

无需信任生产方即可验证

写入 trail 是简单的一半。更重要的一半,是让不信任你的其他人无需密钥、访问权限或你的任何代码即可检查记录。每条 Vaara 记录都使用内容寻址,并在真实性验证失败时默认拒绝,同时附带公共一致性测试向量和独立检查器;该检查器不导入任何 Vaara 代码,因此独立参与方可以离线复现每项判定。

vaara verify-bundle evidence-bundle.json

只有在确实验证了签名时才为 ok,而不仅仅是日志中存在签名。相同特性也支撑着 Vaara Receipt Internet-Draft 背后的标准工作:即使验证者不运行你的任何软件,证据也依然经得起检验。完整的验证器集合、各动词对应的信任模型,以及每种情况下信任的来源,请参阅 docs/verifying-evidence.md。

若要自行验证这一说法,无需安装 Vaara,只需使用独立验证器检查已发布的向量。它仅依赖 `cryptography` 和 `rfc8785`:
git clone https://github.com/vaaraio/vaara
cd vaara
pip install cryptography rfc8785        # the checker's only dependencies
python tests/vectors/external_evidence_v0/_check_independent.py

它只根据收据字节和公钥重新推导每个判定。输出展示了这条证据链旨在证明的属性:从声明的边界内丢失的收据,相对于持有的收据集合构成可证明的缺口,无需访问签发方,也无需外部见证方。

要在一个可运行文件中走完整个流程:生成签名记录、自行验证,然后观察单个伪造字节如何被捕获,请参阅 examples/prove-it-yourself/。其背后的日志与证据之争见 docs/logs-vs-evidence.md。

证据是什么样的

针对真实证据链运行 vaara compliance report --db audit.db --format json,会生成审计员可直接阅读的条款级证据记录。对于没有记录事件的条款,结果为 evidence_insufficient,而非敷衍盖章。

{
  "system_name": "Acme HR Assistant",
  "overall_status": "evidence_insufficient",
  "trail_integrity": {"size": 105, "chain_intact": true},
  "articles": [
    {"article": "Article 12(1)", "title": "Record-Keeping (Logging)",
     "status": "evidence_sufficient", "strength": "strong", "evidence_count": 105},
    {"article": "Article 15(1)", "title": "Accuracy, Robustness and Cybersecurity",
     "status": "evidence_insufficient", "strength": "absent", "evidence_count": 0}
  ]
}

每项判定都包含阈值与观测值快照、理由和底层记录,因此审阅者可以将 status 追溯到具体事件。同一数据还可呈现为公告机构 PDF、静态 HTML 仪表板,或 Sigstore 签名的交接信封。请参阅 docs/COMPLIANCE.md。

你将获得什么
  • 管控你通过它路由的每次工具调用,遵循你自己的策略:允许、阻止或升级处理。覆盖范围取决于你封装的内容;每个适配器都会说明它能看到的范围,Claude Code 插件则明确列出了四项。
  • 防篡改证据链,外部各方无需信任你的技术栈即可验证;链头可锚定到外部 RFC 3161 / eIDAS 时间戳,从而依据你无法控制的时钟证明其存在。
  • 欧盟 AI 法案条款级证据,如实呈现缺口,而不是掩盖问题。
  • 对模型调用本身进行治理,而不仅是周边工具:以硬件为根的推理收据,由另一个不同的本地模型进行交叉核验。这是主权推理工具链,在 v1.0 中推出。
  • 强制执行,而不只是记录(v1.1.0):凭据代理会签发与证明摘要绑定的短时凭据,并将其限定到单个工具、其参数承诺和租户;带类型的能力范围则限定调用可以执行的操作。受保护工具前的网关会拒绝任何没有有效且绑定证明的授权的调用,因此绕过管控不再悄无声息。默认关闭。
  • 可揭示缺口的完整性(v1.4.0):每份授权收据都可以包含签名的边界序列和累计计数,因此,仅凭持有的收据即可证明声明边界内丢失了收据,无需访问签发方,也无需外部见证方(vaara verify-contiguity)。默认关闭。
  • 独立重新生成(v1.14.0):每组公共向量中都有第二个生成器,仅依据声明的规范化规则,逐字节重新生成签名载体,且不导入 Vaara。即使从未运行过 Vaara 软件的验证器,也能重新生成相同字节。
可接入的位置

原生适配器通过相同的管道路由主流 Python Agent 框架;每个适配器都使用框架自身的钩子,并生成相同的审计事件:

框架入口点
LangChainVaaraCallbackHandler、vaara_wrap_tool
CrewAIVaaraCrewGovernance
OpenAI Agents SDKVaaraToolGuardrail、vaara_wrap_function
MCP 服务vaara.integrations.mcp_server

若要让 Vaara 位于 MCP 服务前面,可将其作为代理运行。每个 tools/call 都会在到达上游之前经过管道;允许的调用会透明转发,被阻止的调用则返回 MCP 错误。

vaara-mcp-proxy \
  --upstream npx --upstream-arg -y --upstream-arg @sap/mdk-mcp-server \
  --db ./mcp_audit.db --shadow

从 --shadow 开始:每次调用都会分类、评分并记录,不会拦截任何内容。运行几天后,vaara trail shadow-report --db ./mcp_audit.db 会显示执行拦截策略会产生什么效果;然后移除该标志并开始执行策略,可先使用为常见 MCP 服务准备好的边界策略 examples/policies/mcp-starters/。将 MCP 客户端(Claude Code、Cursor 或任何宿主)指向代理,而不是上游服务。此外,还提供 HTTP API(pip install 'vaara[server]'、vaara serve),以及面向非 Python Agent 的官方 TypeScript 客户端 npm 包(@vaara/client)。框架详情、云端和开源护栏适配器(Bedrock、Azure、GCP、NeMo、Guardrails AI、LLM Guard、Rebuff)以及多租户代理详见 docs/adapters.md。

在 CI 中

策略就是代码,因此应与修改策略的变更一起纳入拉取请求。该 Action 会验证策略、运行测试用例,并在策略无法解析、测试用例失败,或审计轨迹的链或签名无效时使构建失败。

- uses: vaaraio/vaara@v2
  with:
    policy: policies/production.yaml
    cases: policies/production.cases.yaml

将 trail 指向某个任务生成的已签名 zip 文件即可进行验证。未提供 pubkey 时,会检查审计轨迹内部是否完整;传入单独获取的密钥还可以验证签名者,运行结果会说明执行了哪一种检查。输入、输出和固定版本说明见 docs/github-action.md。

此处检查的是构件。在工具调用发生时拦截 Agent,则是运行时的职责。

评分方式

每个风险评分都融合了五种专家信号,并随着结果反馈不断调整,同时附带置信区间,其覆盖保证不受输入分布影响。在留出的对抗语料上,分类器的召回率达到 85.6%(95% Wilson 区间为 [83.4, 87.6]),误报率为 5.1%;在实时注入压力下,对良性调用的误报率为 0.0%。热路径规则评分器在通用 CPU 上每次调用平均增加 140 µs;机器学习分类器为可选功能(vaara[ml]),不在该路径上运行。make bench 可针对仓库中附带的模型包复现下方的分类器数据;需要运行 pip install 'vaara[ml]',并会在首次运行时下载嵌入模型。

- 包含 25,556 条目的对抗语料库(250 条人工整理 + 25,306 条由大模型生成)。v0.40 划分按(类别、生成批次)单元确保其中 24,619 条无数据泄漏:15,114 条训练集、2,921 条验证集、2,980 条测试集、3,604 条留出集。 - 分类器 v11(254 个人工特征 + 384 维 MiniLM 嵌入),在留出的测试集 n=1,827 上的阈值为 0.8800:召回率 85.6% [83.4, 87.6],FPR 为 5.1% [3.8, 6.9]。召回率较 v9 提高了 0.9 个百分点,误报率则上升了 1.0 个百分点。这种权衡是有意为之,本节余下内容将解释原因。 - 跨模型留出集召回率为 86.3%,样本数 n=5,600;测试对象为由未出现在训练集中的模型 Qwen2.5-72B 编写的攻击。v9 在同一数据集上的召回率为 67.4%。此处此前公布的数据为 66.8% [64.9, 68.7],是在 v0.37 攻击面上使用 v8 测得的;v9 在不同攻击者模型系列和新生成数据上的结果与之相差不到 1 个百分点,这正是该数据连续两个版本保持不变的原因。这仍是如实报告的最差情况,而上面的分布内数据采用的是更容易的分母。 - 在语料库直到 v0.40 才充分覆盖的四类攻击上,使用 v11 的运行阈值确定后生成的 5,600 条目进行测量:与 v9 相比,召回率为 63.1% 至 87.0%,误报率为 6.6% 至 2.5%。仅凭证外泄一项,召回率就从 45.9% 提升至 80.3%,FPR 从 10.0% 降至 3.9%。完整记录见 [bench/V11-CANDIDATE.md](bench/V11-CANDIDATE.md),其中包括此前被否决的候选版本及其原因。 - 良性工具调用上的 BIPIA 压力测试 FPR 为 0.0% [0.0, 0.5]:在四种 Agent 后端(Claude Haiku 4.5、Llama-3.1-8B、Mistral-7B、Qwen-2.5-7B)的 704 次调用中,没有一次被标记。v9 对相同调用的标记率为 2.7%,v8 为 35.7%。`scripts/eval_bipia_entries.py` 可复现这三项结果。 - 多攻击者 PAIR 鲁棒性测试在 v0.31 上测量,未在 v11 上重新运行:在相同随机种子下,Qwen2.5-32B、Qwen2.5-72B 和 Llama-3.3-70B 各攻击者的成功次数均为 0/25,Wilson 上限为 13.3%([bench/vaara-bench-v0.31.md](bench/vaara-bench-v0.31.md))。 - 分数上的无分布假设保形覆盖;MWU 遗憾界为 O(sqrt(T log N))。 - 保管链:语料库、数据划分、训练提交和捆绑包 SHA 均已锁定,并由每个脚本打印。

方法和各单元明细:docs/architecture.md 和 bench/。

标准与证明 - **[vaara.receipt/v1](SPEC.md)** 是签名回执格式的规范母规范:采用哈希链,以 JCS(RFC 8785)规范化,可通过公钥离线验证。x402 结算绑定和 eIDAS 合格时间戳配置文件都是下游配置文件,依托该规范,而非与之竞争的格式。回执可以包含由 Vaara 离线签发的可自托管 RFC 3161 时间戳。 - **[SEP-2828](docs/sep/sep-server-execution-record.md)** 签名执行记录,作为 IETF Internet-Draft [`draft-sirkkavaara-vaara-receipt`](https://datatracker.ietf.org/doc/draft-sirkkavaara-vaara-receipt/) 延续发布。第二个独立实现已从干净检出版本出发,在没有共享代码的情况下复现了 SEP-2828 一致性向量。已发布的语料库配有独立检查器,涵盖回退绑定路径([`tests/vectors/fallback_projection_v0/`](tests/vectors/fallback_projection_v0/))和 CrewAI 治理决策([`tests/vectors/governance_decision_v0/`](tests/vectors/governance_decision_v0/))。 - **OVERT 1.0**([overt.is](https://overt.is/)):Vaara 是仲裁器,在启用证明时,会为每条记录同时生成 Protocol Profile 1.0 Base Envelope(规范化 CBOR、Ed25519)。 - **后量子**:可选的并行 ML-DSA-65 / FIPS 204 签名,针对同一前像签名,因此移除后量子签名会形成可检测的降级,而非悄然丢失。 - **不依赖根信任的证据**:同一份 Article 12 记录无论是否使用硬件 TEE 均可验证,也可转换为 IETF RATS EAR 声明(AR4SI vector);其信任根可以是 TPM 2.0 主机、AMD SEV-SNP 机密 VM,也可以完全不使用 TEE。 - **主权推理测试框架**(v1.0):签名代理后方运行本地模型,生成由硬件根信任的推理回执,再由第二个本地模型交叉核验。该项目以私有方式开发,并在此以 AGPL-3.0 发布。

详细信息及每项功能的离线检查器见:docs/standards.md。

接口稳定性

公共接口已固定:签名封装(vaara.receipt/v1)、能力约束、凭据授权和网关,以及 @vaara.govern 入口点。不会规划新的原语。新行为将以依托 vaara.receipt/v1 的配置文件形式发布,而非作为新的核心类型;也不会再添加新的格式绑定(最后一个版本为 v1.13.0)。今后的工作将在这一接口范围内进行加固与精简,让基于它构建的用户拥有稳定的目标。

文档 | 路径 | 内容 | |---|---| | [docs/verifying-evidence.md](docs/verifying-evidence.md) | 每种验证器及其信任模型 | | [docs/logs-vs-evidence.md](docs/logs-vs-evidence.md) | 日志与证据:证明 Agent 做了什么,以及《人工智能法案》的实际要求 | | [docs/prove-what-an-ai-agent-did.md](docs/prove-what-an-ai-agent-did.md) | Agent 操作的可验证记录所需的四项属性 | | [docs/eu-ai-act-article-12.md](docs/eu-ai-act-article-12.md) | 第 12 条记录保存要求:有哪些要求、没有哪些要求,以及对工具的要求 | | [docs/tamper-evident-audit-trail.md](docs/tamper-evident-audit-trail.md) | 审计轨迹的工作方式、其明确的局限性及成本 | | [docs/vaara-vs-observability-vs-grc.md](docs/vaara-vs-observability-vs-grc.md) | Vaara 与 Datadog/Splunk、Vanta/Drata 的对比:三个不同的问题 | | [docs/dogfood/](docs/dogfood/README.md) | 我们的营销活动在此门禁下运行;已签名的轨迹及其验证密钥 | | [docs/capabilities.md](docs/capabilities.md) | Vaara 的全部功能,按领域分类,每项都注明对应代码 | | [docs/library.md](docs/library.md) | 无专属命令的功能,可通过 Python 使用;每项都附有可运行的代码块 | | [docs/architecture.md](docs/architecture.md) | 评分、保形覆盖率、时间锚点、形式化属性 | | [SPEC.md](SPEC.md) | 权威的 vaara.receipt/v1 回执格式规范 | | [docs/standards.md](docs/standards.md) | SEP-2828、SEP-2787、OVERT、主权推理框架 | | [docs/adapters.md](docs/adapters.md) | 框架和云端/OSS 防护栏适配器、多租户代理 | | [docs/COMPLIANCE.md](docs/COMPLIANCE.md) | 《人工智能法案》和 DORA 条款映射、评估数据 | | [docs/multi-replica-deployment.md](docs/multi-replica-deployment.md) | 扩展到单个代理进程之外:每个副本的链、轮换、归档索引 | | [docs/kubernetes-rancher.md](docs/kubernetes-rancher.md) | 使用 Rancher 在 Kubernetes 上运行代理:图表、存储、强制执行、网络隔离 | | [docs/supported-platforms.md](docs/supported-platforms.md) | Vaara 支持的 Python、容器和 Kubernetes 版本,以及已验证的版本 | | [CHANGELOG.md](CHANGELOG.md) | 各版本的演进 | | [docs/PRIOR_ART.md](docs/PRIOR_ART.md) | 各项概念首次发布的时间,以及相关工作 |

Vaara 帮助部署者为自身的合规工作收集证据。它不认证合规性,也不构成法律建议。部署者需自行承担《欧盟人工智能法案》及其他适用法律规定的义务。

提供商业许可和付费试点:请访问 vaara.io 或联系 [email protected]。许可条款见 LICENSING.md,商业许可说明见 COMMERCIAL.md。

致谢

Red Hat 是 Red Hat, LLC 在美国和其他国家注册的商标。

引用

如果你基于 Vaara 或其收据格式进行开发,请引用此代码仓库(参见 CITATION.cff)以及它所实现的规范:

Henri Sirkkavaara。《Vaara 收据:用于智能体行动决策的可重新计算收据格式》。IETF Internet-Draft draft-sirkkavaara-vaara-receipt。

每个带标签的发行版都会由 Zenodo 存档并分配 DOI。引用 10.5281/zenodo.22027975 可代表整个软件项目,该 DOI 始终指向最新版本;如需引用实际运行的确切字节,请使用特定发行版上标注的版本 DOI。

许可证

版权所有 © 2026 Henri Sirkkavaara。采用 AGPL-3.0-or-later 许可。参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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