mcpField
U
ukvet: UK Companies House

ukvet: UK Companies House

本地服务
github.com/fraidoonomarzai商业与营销01 周前更新

关于 ukvet: UK Companies House

ukvet 是面向英国公司尽职调查的开源工具,依据 Companies House 公开记录生成带引用的风险报告。其规则计算事实与风险标记,并在使用 LLM 撰写报告时检查引用。

主要功能

  1. 01读取公司、董事和控制人记录
  2. 02检查逾期申报、担保债务与破产记录
  3. 03识别董事关联的失败公司
  4. 04生成带来源引用的风险报告
  5. 05缺少数据时明确标示

适用场景

  1. 01核查英国公司的状态和申报情况
  2. 02调查董事、控制人及担保债务
  3. 03在交易或合作前查看公司风险标记

MCP 相关

ukvet-mcp 是 MCP 服务,向任意 MCP 客户端开放 Companies House 数据。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"fraidoonomarzai-ukvet": {
"command": "uvx",
"args": [
"ukvet-mcp"
],
"env": {
"CH_API_KEY": "<CH_API_KEY>"
}
}
}
}
启动命令uvx ukvet-mcp
需要配置的环境变量
CH_API_KEY密钥Your free Companies House REST API key (live environment)

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

安装包
pypiukvet-mcp0.1.0

工具

还没有获取到工具列表

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

详细介绍

ukvet — 英国公司的 AI 尽职调查 Agent

30 秒内审查任意英国公司——附有引用、经过评估且开源。

CI PyPI License: MIT

Claude Desktop 中的 ukvet-mcp 演示

状态:第 6 阶段(发布)已完成。 ukvet-mcp 0.1.0 已发布到 PyPI,并已收录于官方 MCP 注册表(io.github.FraidoonOmarzai/ukvet-mcp)。Agent、界面和评估框架均已构建、测试,并在 CI 中设置了准入门槛。

快速开始

1. 在 Claude Desktop 中使用数据层(2 分钟)

你需要安装 uv 并获取免费的 Companies House REST API 密钥 (在此创建,使用线上环境)。

$env:CH_API_KEY="your-key"; uvx ukvet-mcp --check      # prints OK if the key works

然后将以下内容添加到 claude_desktop_config.json,并重启 Claude Desktop:

{
  "mcpServers": {
    "ukvet": {
      "command": "uvx",
      "args": ["ukvet-mcp"],
      "env": { "CH_API_KEY": "your-key" }
    }
  }
}

完整指南:packages/ukvet-mcp 及其 PyPI 页面。

2. 运行完整 Agent 和界面(Docker)
git clone https://github.com/fraidoonomarzai/ukvet.git
cd ukvet
copy .env.example .env          # add CH_API_KEY (LLM settings are optional)
docker compose up --build       # API http://localhost:8000/docs, UI http://localhost:8501

如果未设置 LLM_PROVIDER,报告将使用模板叙述,且不产生任何费用。如果设置了该变量,大模型会撰写报告内容,并且每个句子都必须通过引用检查,否则将改用模板。

功能

输入英国公司名称或编号。ukvet 会检查 Companies House 的官方记录,并生成风险报告,回答以下问题:

  1. 公司处于运营、解散还是破产状态?
  2. 公司成立多久了?
  3. 董事有哪些?
  4. 公司账目或确认声明是否逾期?
  5. 谁控制着公司?
  6. 公司是否有担保债务(抵押)?
  7. 是否有破产历史?
  8. 公司董事是否经营过倒闭的公司?
  9. 董事或地址近期是否有变更?
  10. 有哪些风险信号?

每项事实均引用自官方记录。如果缺少数据,ukvet 会如实说明,而不是猜测。

构建方式

部分内容
ukvet-mcp开源 MCP 服务,向任意 MCP 客户端提供 Companies House 数据
ukvet-agentLangGraph Agent:规划器 → 研究员 → 验证员 → 报告撰写员
评估基于 48 家冻结且匿名化的公司的 432 项基准测试;在 CI 中设置准入门槛(evals/)
可观测性可选的 Langfuse 跟踪(默认关闭;内容已脱敏);逐份报告统计延迟、令牌、费用和工具调用次数
防护措施引用检查器,以及对每份完成报告的输出检查;注入攻击评估(M6)
模型选择在同一测试集上比较 Claude Haiku 5.5 与开放权重模型 Qwen3.6-27B,并以表格形式发布(结果)

事实、风险信号和风险等级均由确定性代码和规则生成。大模型只是其中一个节点:它只能看到已验证的事实,没有任何工具可用,而且它撰写的每项说法都会经过检查。架构:docs/08-architecture.md

结果

在包含 48 家公司的带版本数据集上测得(30 家开发集,18 家测试集)。完整表格、区间和失败分析:docs/eval-report.md 和 docs/results.md。

基准测试(Claude Haiku 5.5,全部 48 家公司)

指标目标结果
M1 检索准确率≥ 90%100%(1488/1488 个字段)
M2 无依据的说法< 2%0 条(共 421 条;95% 上限为 0.9%)
M4 引用有效率(机械检查)100%100%(421/421)
M5 风险信号召回率≥ 85%100%(89/89)

模型对比(测试集:18 份报告,每份约 155 条说法)

Claude Haiku 5.5(API)Qwen3.6-27B(可自托管,A100)
M1 准确率100%100%
M2 无依据的说法0 条(共 156 条)1 条(共 154 条)
M4 有效引用156 条(共 156 条)153 条(共 154 条)
M6 抗提示注入能力96.7%(87/90)100%(90/90)
M7 延迟,p956.6 秒24.2 秒
M8 每份报告的成本£0.00058£0.0076(最佳情况,仅计入实际运行的 GPU 时间)

建议:继续将 Claude Haiku 5.5 用作默认模型;只需更改设置即可使用开放权重模型方案。在此测试集上,准确率差异处于误差范围内。

局限性(请阅读)
  • M1 衡量的是与我编写的基准答案的一致性;我曾对照 10 家公司的实时网站进行人工核查。这不能证明每个字段都属实;100% 的得分意味着当前数据集还不够难,无法发现新的检索错误。
  • M2 和 M4 是机械检查(ID、日期、数字、名称、禁用措辞)。我们未评估引用事实是否能充分支持句子,也未评估措辞是否公平。
  • 测试集包含 18 份报告;仅测试了一个开放权重模型,每个模型各运行一次;延迟和成本数据来自一个网络环境和一块 GPU。
  • 提示注入:一个载荷(公司名称)在 3 家被测公司中全部让攻击者指定的文本进入了 Claude 的报告。风险等级和风险信号未改变。这项问题仍待后续跟进;M6 仅衡量对所列载荷的抵抗能力。
  • 标签和规则由一个人编写。

开发

需要 Python 3.12+ 和 uv。以下命令适用于 PowerShell;在 Linux 或 macOS 上也可使用相同的 uv run ... 命令(在支持 make 的环境中还提供了 Makefile 作为快捷方式)。

git clone https://github.com/fraidoonomarzai/ukvet.git
cd ukvet
copy .env.example .env                 # add your Companies House API key
uv sync --all-groups --all-packages    # install dependencies
uv run ruff check .                    # lint
uv run ruff format --check .           # formatting
uv run mypy                            # type check
uv run pytest                          # tests
运行
# .env: CH_API_KEY=...   (optional: LLM_PROVIDER / LLM_MODEL / LLM_API_KEY, see .env.example)
uv run ukvet-check --full 00445790     # terminal, no UI
docker compose up --build              # API (http://localhost:8000/docs) + UI (http://localhost:8501)

未设置 LLM_PROVIDER 时,报告使用模板叙述,不产生费用。设置后,LLM 会撰写措辞,且每个句子都必须通过引用检查,否则将改用模板。

运行评估
uv run ukvet-evals demo-build                      # synthetic demo set, proves the harness works
uv run ukvet-evals run --dataset demo
uv run ukvet-evals run --dataset v0.1 --split dev  # real set, dev split, free (template mode)
uv run ukvet-evals gate --dataset v0.1             # compare with the baseline; fails if worse
可观测性与安全(阶段 4)
# .env (all optional): LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_HOST
#   UKVET_TRACE_CONTENT=redacted (default, names are masked) or full (synthetic data only)
#   UKVET_PRICE_IN_GBP_PER_MTOK / UKVET_PRICE_OUT_GBP_PER_MTOK  (cost is shown only when set)
uv sync --all-groups --all-packages --extra observability

# live latency (M7), cost (M8) and tool calls (M9); needs CH_API_KEY and an LLM key
uv run python scripts/phase4_metrics.py --file numbers.txt --out evals/results/phase4

# prompt-injection resistance (M6): record once, then replay for free
uv run ukvet-evals extend-injection --dataset v0.1
uv run ukvet-evals injection --dataset v0.1 --llm record --model <model>
uv run ukvet-evals injection --dataset v0.1 --llm replay --model <model>

只有在设置了两个 Langfuse 密钥时才会启用追踪,而且追踪绝不会导致报告生成失败。目标:M6 抗提示注入能力达到 95% 或更高,M7 p95 延迟低于 30 秒,M8 每份报告的成本低于 £0.05,M9 跟踪每份报告的工具调用次数并作为基准。M6 仅衡量对所列载荷的抵抗能力;这并不能证明安全性。测量结果位于 evals/results/。

模型对比(阶段 5)
# one env file per model; copy the one you want over .env
uv run python scripts/phase5_check_endpoint.py        # smoke-test an OpenAI-compatible endpoint (vLLM)
uv run ukvet-evals run --dataset v0.1 --split test --llm record --model <model-id> --confirm-test-split "reason" --out evals/results/v0.1-test-<name>
uv run python scripts/phase4_metrics.py --file numbers.txt --label <name> --out evals/results/phase5-live-<name>
uv run ukvet-evals compare --init                     # create evals/comparison.json, fill it in
uv run ukvet-evals compare                            # writes docs/results.md; refuses unfair comparisons

两个模型必须使用相同的数据集版本、数据拆分、提示词和 git 提交;compare 会拒绝不同的数据集或拆分,并对其他差异发出警告。开放权重模型的服务方式说明:ADR-008 和 docs/PHASE-5-GPU-SETUP.md。

更多文档

架构与 ADR · 评估报告 · 模型对比 · 威胁模型 · 决策日志 · 所有文档

免责声明

ukvet 仅供参考,不构成法律、财务或信贷建议。报告基于检索时的公开记录,这些记录可能不完整或已过时。做出决策前,请务必进行核实。ukvet 与 Companies House 无关联。

署名

包含根据 Open Government Licence v3.0(Companies House)授权的公共部门信息。

许可证

代码:MIT © 2026 Fraidoon Omarzai

评论

支持 Markdown

第一次接触 MCP?

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

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