mcpField
P
PAIML MCP Agent Toolkit

PAIML MCP Agent Toolkit

本地服务
paiml.github.io开发工具1672 周前更新

关于 PAIML MCP Agent Toolkit

PMAT(PAIML MCP Agent Toolkit)是一个以 MCP 服务为主要形态的命令行工具,用于代码质量分析和 AI 上下文生成,目标是让编码 Agent 的工作更具确定性。适合希望在本地或 CI 中评估代码质量的开发者和团队。

主要功能

  1. 01AI 可读的代码上下文生成
  2. 02技术债务评级(A+ 至 F)
  3. 03变异测试以验证测试套件质量
  4. 04仓库健康评分
  5. 05支持 stdio 与 HTTP 两种 MCP 传输方式
  6. 06pmat verify 提交前检查

适用场景

  1. 01为编码 Agent 生成项目上下文并分析复杂度
  2. 02在提交前运行与 CI 相同的检查门禁
  3. 03在多 Agent 并发场景下共享一个 HTTP MCP 服务

MCP 相关

该项目是 MCP 服务,通过 stdio 或 HTTP 向 Claude Code、Claude Desktop、Cline 等 MCP 客户端提供 20 个工具。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

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

详细介绍

PMAT

PMAT

为任意代码库零配置生成 AI 上下文


目录

什么是 PMAT?

PMAT(实用多语言 Agent 工具包)提供代码质量分析和生成适用于 AI 的上下文所需的一切:

  • 上下文生成 - 为 Claude、GPT 和其他大模型进行深度分析
  • 技术债务评级 - 使用 6 项正交指标进行 A+ 到 F 级评分
  • 变异测试 - 验证测试套件质量(杀死率达 85%+)
  • 代码库评分 - 定量评估健康状况(0-289 分,涵盖 11 个类别)
  • Git 历史 RAG - 使用 RRF 融合,在提交历史中进行语义搜索
  • 语义搜索 - 通过自然语言发现代码
  • 合规治理 - 在代码质量、最佳实践和可复现性方面执行 157 项检查
  • 契约式设计 - 提供 Toyota Way 契约配置文件,支持检查点验证和恢复协议
  • 自主 Kaizen - 通过自动修复和提交,实现 Toyota Way 持续改进
  • MCP 集成 - 为 Claude Code、Cline 和 AI Agent 提供 20 个工具,通过 stdio 和 HTTP 使用(功能完全一致),并已针对并发多 Agent(ultracode)工作流进行端到端验证 — 请参阅 MCP 服务
  • 质量门禁 - 提供提交前钩子、CI/CD 集成和 .pmat-gates.toml 配置
  • 20+ 种语言 - Rust、TypeScript、Python、Go、Java、C/C++、Lua、Lean 等

作为 PAIML Stack 的一部分,遵循 Toyota Way 质量原则(Jidoka、Genchi Genbutsu、Kaizen)。

带注释的代码搜索
pmat query 带注释的输出

pmat query "cache invalidation" --churn --duplicates --entropy --faults

每个结果均包含 TDG 评级、Big-O 复杂度、git 变更频率、代码克隆、模式多样性、故障注释、调用图和语法高亮源码。

安装

# Install from crates.io
cargo install pmat

macOS 用户须知: 如果通过 rustup 安装时遇到问题,建议在运行 cargo install pmat 之前使用 Homebrew 安装或更新 Rust:brew install rust。

# Or from source (latest)
git clone https://github.com/paiml/paiml-mcp-agent-toolkit
cd paiml-mcp-agent-toolkit && cargo install --path .

MCP 服务

PMAT 首先是 MCP 服务,其次才是 CLI。一个二进制文件提供 三个接口,它们共用一个工具注册表——你选择的是接口,而不是功能集。

接口启动方式适用场景
CLIpmat analyze complexity --path .人类或 shell 脚本读取输出。
通过 stdio 使用 MCPpmat --mode mcpMCP 客户端将 pmat 本身作为子进程启动——Claude Code、Claude Desktop、Cline。一个客户端,一个进程,无需端口,无需令牌。
通过 HTTP 使用 MCPpmat serve --transport http --port 8765一个长期运行的服务,供多个客户端——或另一台机器——连接。可流式传输的 HTTP、Bearer 身份验证。

3.32.0 的新增内容: mcp-http 已移入默认功能集。现在运行 cargo install pmat 即可获得 HTTP 传输;以前的 --features mcp-http 操作已不再需要。编译时加入该传输不会打开套接字——只有 pmat serve 才会绑定套接字。

快速入门 — stdio

Claude Code 会将 pmat 作为子进程启动。无需保持运行,也无需进行身份验证。

cargo install pmat
claude mcp add --scope user pmat -- pmat --mode mcp
claude mcp list
# pmat: pmat --mode mcp - ✔ Connected

Claude Desktop 使用相同的命令,但以 JSON 格式写入其自己的 claude_desktop_config.json:

{
  "mcpServers": {
    "pmat": { "command": "pmat", "args": ["--mode", "mcp"] }
  }
}

对于无法传递标志的客户端,运行 MCP_VERSION=1 pmat 会启动相同的服务。无需任何客户端即可对 stdio 接口进行冒烟测试:

printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
  | pmat --mode mcp 2>/dev/null | jq -r '.result.tools | length'
# 19
快速入门 — HTTP

一个服务,多个客户端。复制并粘贴整个代码块:

cargo install pmat

export PMAT_MCP_HTTP_TOKEN='pmat-mcp-demo-token-0123456789'   # >= 16 chars; use your own
pmat serve --transport http --port 8765 &
#   pmat MCP (streamable HTTP) listening on http://127.0.0.1:8765/
#     auth: Bearer, from PMAT_MCP_HTTP_TOKEN; unauthenticated requests get 401
#     tools: 20
sleep 2

claude mcp add --scope user --transport http pmat http://127.0.0.1:8765/ \
  --header "Authorization: Bearer $PMAT_MCP_HTTP_TOKEN"
claude mcp list
# pmat: http://127.0.0.1:8765/ (HTTP) - ✔ Connected

除非传入 --host,否则服务会绑定到 127.0.0.1。若要从另一台机器访问,请绑定到可从外部路由的地址,并将 PMAT_MCP_HTTP_TOKEN 视为真正的机密——工具接口可以读取和分析服务进程能够读取的任何路径。

四个每次都会浪费一小时的易错点

1. MCP 服务位于根路径 /,而不是 /mcp。 没有路径前缀。

for p in / /mcp /health; do
  printf '%-7s %s\n' "$p" "$(curl -s -o /dev/null -w '%{http_code}' -X POST "http://127.0.0.1:8765$p" \
    -H "Authorization: Bearer $PMAT_MCP_HTTP_TOKEN" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}')"
done
# /       200
# /mcp    404
# /health 404

2. PMAT_MCP_HTTP_TOKEN 是必需的,且长度至少为 16 个字符。 若长度不足,服务会拒绝启动,而不会退回到未经过身份验证的服务模式——底层 pmcp 传输在未配置身份验证提供程序时会响应每个请求,因此“没有令牌”必须意味着“没有服务”。未提供令牌或令牌错误的请求会收到 401。

PMAT_MCP_HTTP_TOKEN=too-short-123 pmat serve --transport http --port 8765
# Error: PMAT_MCP_HTTP_TOKEN must be at least 16 characters; got 13

3. 手动编写的客户端必须发送 Accept: application/json, text/event-stream。 可流式传输的传输层会拒绝缺少此标头的请求,而 curl -f 会将其变成没有任何提示的空字符串——因此调试时请使用普通的 curl -s 进行探测。

curl -s -w '\n-> HTTP %{http_code}\n' -X POST http://127.0.0.1:8765/ \
  -H "Authorization: Bearer $PMAT_MCP_HTTP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# {"jsonrpc":"2.0","error":{"code":-32700,"message":"Accept header must include application/json or text/event-stream"},"id":null}
# -> HTTP 406

4. 没有 /health 端点。 GET /health 会返回 404,因此 curl -f .../health 就绪循环永远不会变绿,也不会说明原因。请改用真实的 tools/list 调用进行探测:

curl -s -X POST http://127.0.0.1:8765/ \
  -H "Authorization: Bearer $PMAT_MCP_HTTP_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
  | jq -r '.result.tools | length'
# 19

这里不涉及 MCP 会话 ID:initialize 不会返回 Mcp-Session-Id 标头,而且 tools/call 可以直接使用——无论之前是否调用过 initialize。

HTTP 并非精简接口

两种传输都基于同一个注册表构建,因此 HTTP 提供全部 20 个工具,而非其中一部分。tools/list 的载荷逐字节相同:

printf '%s\n%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"p","version":"1"}}}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
  | pmat --mode mcp 2>/dev/null \
  | jq -Sc 'select(.id==2)|.result.tools|sort_by(.name)' > /tmp/pmat-stdio-tools.json

curl -s -X POST http://127.0.0.1:8765/ \
  -H "Authorization: Bearer $PMAT_MCP_HTTP_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
  | jq -Sc '.result.tools|sort_by(.name)' > /tmp/pmat-http-tools.json

cmp /tmp/pmat-stdio-tools.json /tmp/pmat-http-tools.json && echo "identical"
# identical

这 19 个工具是:analyze_complexity、analyze_satd、analyze_dead_code、analyze_dag、analyze_deep_context、analyze_big_o、analyze_reachability、analyze_hardcoded_paths、analyze_vacuous_tests、quality_gate、quality_proxy、generate_context、scaffold_project、git_operation、pmat_query_code、pmat_get_function、pmat_find_similar、pmat_index_stats、pdmt_deterministic_todos。名称和描述也作为经过机器校验的清单 mcp.json 提交在仓库根目录中,该清单由服务自身的注册信息重新生成,因此不会与两种传输实际提供的内容发生偏差。

尚未实现的传输方式

--transport 也接受 web-socket、http-sse、both 和 all。这些方式均未实现;每种方式都会以退出码 2 退出并说明原因。只有 http 能提供服务。

pmat serve --transport web-socket --port 8765
# error: pmat serve --transport websocket is not yet implemented

--transport 没有 stdio 选项——传入该值会导致 clap 错误。stdio 的启动方式是 pmat --mode mcp。

用法

# Generate AI-ready context
pmat context --output context.md --format llm-optimized

# Analyze code complexity
pmat analyze complexity

# Grade technical debt (A+ through F)
pmat analyze tdg

# Score repository health
pmat repo-score .

# Pre-flight verify before committing (CI-faithful: fmt + complexity + satd + clippy + tests)
pmat verify --format json

# Run mutation testing
pmat mutate --target src/

# Start the MCP server over stdio, for Claude Code, Cline, etc. (see "MCP Server" above)
pmat --mode mcp
自主 Agent 提交前检查(pmat verify)

pmat verify 会快速失败地运行 CI 强制执行的完整门禁集——format、complexity、satd、clippy、tests,并生成机器可读的输出,让 Agent 在提交前就能确认 “本地通过 ⇒ CI 通过”。标准循环:edit → pmat verify --format json → fix on red → commit on green。请参阅 docs/agent-instructions/autonomous-verify-loop.md。

经 Ultracode 验证

PMAT 版本通过 ultracode 进行自测。ultracode 是 Claude Code 的多 Agent 动态工作流编排工具,同时用作测试框架和目标工作负载:

  • 完整 CLI 扫描:每个版本都由并行 Agent 集群执行 111 条命令
  • MCP 接口:通过 stdio JSON-RPC 验证全部 20 个工具——使用根据架构生成的参数逐一调用工具,通过 8 路并发服务会话操作同一工作树(零锁错误,零残留临时文件),并进行字节级分帧检查(stdout 仅包含 JSON-RPC)——另外还会检查传输一致性,确保 HTTP tools/list 负载与 stdio 负载逐字节相同
  • 确定性:TDG 基线和惩罚归因在多次运行中序列化后逐字节相同,因此独立 Agent 会达成一致,不会因排序噪声而产生分歧
  • 并发安全缓存:使用 PID 唯一的临时文件,通过原子重命名到位并清理过期孤立文件;记录指标时使用咨询锁

每次扫描发现的问题都会由持怀疑态度的 Agent 进行对抗式复核,确认后才会据此修复——请参阅 pmat book 中的版本案例研究。

功能

上下文生成

为 AI 助手生成全面的上下文:

pmat context                           # Basic analysis
pmat context --format llm-optimized    # AI-optimized output
pmat context --include-large-files     # Include files >500KB normally skipped
技术债务评级(TDG)

使用六项正交指标准确评估质量:

pmat analyze tdg                       # Project-wide grade
pmat analyze tdg --include-components  # Per-component breakdown
pmat tdg baseline create               # Create quality baseline
pmat tdg check-regression              # Detect quality degradation

评级标准:

  • A+/A:质量卓越,债务极少
  • B+/B:质量良好,债务可控
  • C+/C:需要改进
  • D/F:技术债务严重
变异测试

验证测试套件的有效性:

pmat mutate --target src/lib.rs        # Single file
pmat mutate --target src/ --threshold 85  # Quality gate
pmat mutate --failures-only            # CI optimization

**支持的语言:**Rust、Python、TypeScript、JavaScript、Go、C/C++、C#、Lua、Lean、Java、Kotlin、Ruby、Swift、PHP、Bash、SQL、Scala、YAML、Markdown,以及 MLOps 模型格式(GGUF、SafeTensors、APR)

仓库健康评分

基于证据的质量指标(0-289 分,11 个类别):

pmat rust-project-score                # Fast mode (~3 min)
pmat rust-project-score --full         # Comprehensive (~10-15 min)
pmat repo-score . --deep               # Full git history
工作流提示词

预配置的 AI 提示词,强制执行极限 TDD:

pmat prompt --list                     # Available prompts
pmat prompt code-coverage              # 85%+ coverage enforcement
pmat prompt debug                      # Five Whys analysis
pmat prompt quality-enforcement        # All quality gates
Git 历史 RAG

使用 TF-IDF 语义嵌入,按意图搜索 Git 历史:

# Fuse git history into code search
pmat query "fix memory leak" -G

# Search with churn, clones, entropy, faults
pmat query "error handling" --churn --duplicates --entropy --faults
# Run the example
cargo run --example git_history_demo
Git 钩子

自动执行质量要求:

pmat hooks install                     # Install pre-commit hooks
pmat hooks install --tdg-enforcement   # With TDG quality gates
pmat hooks status                      # Check hook status
合规治理(pmat comply)

针对代码质量、最佳实践和治理的 162 项自动检查:

pmat comply check                      # Run all compliance checks
pmat comply check --strict             # Exit non-zero on failure
pmat comply check --format json        # Machine-readable output
pmat comply migrate                    # Update to latest version

主要检查项:

  • CB-200:TDG 评级门禁——定义的评级低于最低要求(默认 A)时阻止操作。读取由 pmat query 构建的索引;不会构建或重写索引;如果 .pmat/context.db 不存在,则报告跳过 /“未测量”
  • CB-304:死代码比例执行
  • CB-400:通过 bashrs 检查 Shell/Makefile 质量
  • CB-500:Rust 最佳实践(30 多种模式)
  • CB-600:Lua 最佳实践
  • CB-900:Markdown 链接验证
  • CB-1000:MLOps 模型质量

可证明契约执行(CB-1200..1210):

  • CB-1208:绑定存在性——验证 binding.yaml 中的函数是否存在于 src/,并检测虚假绑定(L0-L3 执行级别)
  • CB-1209:契约 Trait 执行——检查 tests/contract_traits.rs 中经编译器验证的 Trait 实现(13 个内核 Trait)
  • CB-1210:前置条件质量——标记批量生成的样板代码和缺失的后置条件

通过 .pmat.yaml 配置:

comply:
  thresholds:
    min_tdg_grade: "A"          # CB-200 floor; `.pmat-gates.toml` [tdg] min_grade overrides this
    pv_lint_is_error: true        # CB-1201: FAIL on pv lint failure
    min_binding_existence: 95     # CB-1208: 95% binding verification
    require_all_traits: true      # CB-1209: 13/13 traits required
    min_kani_coverage: 20         # CB-1206: minimum Kani proof %
基础设施评分(pmat infra-score)

CI/CD 质量评分(0–100 分,provable-contracts 额外加 10 分):

pmat infra-score                       # Text output
pmat infra-score --format json         # Machine-readable
pmat infra-score -v --failures-only    # Show only failing checks

**类别:**工作流架构(25 分)、构建可靠性(25 分)、 质量流水线(20 分)、部署与发布(15 分)、供应链(15 分)、 可证明契约加分(10 分)。

文档搜索(pmat query --docs)

在代码之外搜索文档文件(Markdown、文本、YAML):

pmat query "authentication" --docs          # Code + docs results
pmat query "deployment" --docs-only         # Only documentation
pmat query "API endpoints" --no-docs        # Exclude docs (default)
自主 Kaizen(pmat kaizen)

丰田之道的持续改进——扫描、自动修复、提交:

pmat kaizen --dry-run                  # Scan only (no changes)
pmat kaizen                            # Apply safe auto-fixes
pmat kaizen --push                     # Fix, commit, and push (use --no-commit to skip)
pmat kaizen --format json -o report.json  # CI/CD integration

# Cross-stack mode: scan all batuta stack crates in one invocation
pmat kaizen --cross-stack --dry-run    # Scan all crates
pmat kaizen --cross-stack              # Fix and commit per-crate
pmat kaizen --cross-stack -f json      # Grouped JSON report
函数提取(pmat extract)

提取函数边界及元数据:

pmat extract --list src/lib.rs         # Function/struct/enum/trait boundaries, as JSON

示例

为 AI 生成上下文
# For Claude Code
pmat context --output context.md --format llm-optimized

# With semantic search
pmat embed sync --path ./src
pmat semantic search "error handling patterns"
CI/CD 集成
# Add to your CI pipeline
steps:
  - uses: actions/checkout@v4
  - run: cargo install pmat
  - run: pmat analyze tdg --fail-on-violation --min-grade B
  - run: pmat mutate --target src/ --threshold 80
质量基线工作流
# 1. Create baseline
pmat tdg baseline create --output .pmat/baseline.json

# 2. Check for regressions
pmat tdg check-regression \
  --baseline .pmat/baseline.json \
  --max-score-drop 5.0 \
  --fail-on-regression

架构

pmat/
├── src/
│   ├── cli/          Command handlers and dispatchers
│   ├── services/     Analysis engines (TDG, SATD, complexity, agent context)
│   ├── mcp_server/   MCP protocol server
│   ├── mcp_pmcp/     PMCP protocol integration
│   └── models/       Configuration and data models
├── examples/         113 runnable examples
└── docs/
    └── specifications/  Technical specs

质量

指标值
测试21,200+ 项通过
覆盖率99.66%
变异分数>80%
语言支持 20 种语言及 MLOps 模型格式
MCP 工具提供 20 个
可证伪的质量承诺

根据 Popper 的划界标准,所有声明都可测量、可测试:

承诺阈值验证方法
上下文生成10K LOC 项目 < 5 秒在测试语料库上运行 time pmat context
内存用量分析 100K LOC 时 < 500 MB在 CI 中通过 heaptrack 测量
测试覆盖率行覆盖率 ≥ 85%cargo llvm-cov(由 CI 强制执行)
变异分数杀死的变异体 ≥ 80%pmat mutate --threshold 80
构建时间增量构建 < 3 分钟cargo build --timings
CI 流水线总用时 < 15 分钟GitHub Actions 工作流计时
二进制大小发布版二进制 < 50 MBls -lh target/release/pmat
语言解析器20 种语言均可解析且不发生 panic在 CI 中进行模糊测试

验证方法:

# Run self-assessment with Popper Falsifiability Score
pmat popper-score --verbose

# Individual commitment verification
cargo llvm-cov --html        # Coverage ≥85%
pmat mutate --threshold 80   # Mutation ≥80%
cargo build --timings        # Build time <3min

**失败 = 回归:**任何承诺未达标都会阻止 CI 合并。

基准测试结果(严谨的统计方法)

所有基准测试均使用 Criterion.rs,并采用规范的统计方法:

操作均值95% 置信区间标准差样本量
上下文(1K LOC)127ms[124, 130]±12.3msn=1000 次运行
上下文(10K LOC)1.84s[1.79, 1.90]±156msn=500 次运行
TDG 评分156ms[148, 164]±18.2msn=500 次运行
复杂度分析23ms[22, 24]±3.1msn=1000 次运行

对比基线(与替代方案比较):

指标PMATctagstree-sitter效应量
解析 10K LOC1.84s0.3s0.8sd=0.72(中等)
内存(10K LOC)287MB45MB120MB-
语义深度完整仅语法仅 AST-

完整统计分析请参阅 docs/BENCHMARKS.md。

ML/AI 可复现性

PMAT 使用 ML 进行语义搜索和嵌入。所有 ML 操作均可复现:

随机种子管理:

  • 嵌入生成使用固定种子(SEED=42),确保输出具有确定性
  • 聚类操作使用固定种子(SEED=12345)
  • 种子记录在 docs/ml/REPRODUCIBILITY.md 中

模型制品:

  • 使用来自 HuggingFace 的预训练模型(all-MiniLM-L6-v2)
  • 在 Cargo.toml 中固定模型版本
  • 下载时进行哈希验证

数据集来源

PMAT 不训练模型,但会使用以下数据源进行评估:

数据集来源用途大小
CodeSearchNetGitHub/Microsoft语义搜索基准测试2M 个函数
PMAT-bench内部回归测试500 个查询

数据来源和许可信息记录在 docs/ml/REPRODUCIBILITY.md 中。

主权技术栈

PMAT 基于 PAIML 主权技术栈构建,采用纯 Rust 编写的 SIMD 加速库:

库用途版本
aprender机器学习库(文本相似度、聚类、主题建模)0.64
aprender-graphCSR 图数据库(PageRank、Louvain)0.64
aprender-db列式分析数据库(库 trueno_db,可选)0.64
aprender-rag带有 VectorStore 的 RAG 工作流0.64
aprender-viz终端图可视化0.64
aprender-compute用于矩阵运算的 SIMD/GPU 计算(库 trueno)0.64
aprender-zram-coreSIMD LZ4/ZSTD 压缩(可选)0.64
aprender-contracts可证明合约(搭配 aprender-contracts-macros)0.64
pmcpMCP 协议 SDK(可流式传输的 HTTP 传输)2.17
pmat代码分析工具包3.40.0

主要优势:

  • 纯 Rust(无 C 依赖,无 FFI)
  • SIMD 优先(自动检测 AVX2、AVX-512、NEON)
  • 通过 aprender 适配器,图算法速度提升 2-4 倍

文档

贡献

开发环境设置、测试和拉取请求指南请参阅 CONTRIBUTING.md。

另请参阅

许可证

MIT 许可证 - 详情请参阅 LICENSE。


以极限 TDD 构建 | 属于 PAIML

评论

支持 Markdown

第一次接触 MCP?

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

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