CLI结构化输出工具

Pare提供将常见开发者工具(如git、npm、docker等)的CLI输出转换为结构化JSON的服务,适用于AI代理处理,避免解析原始终端文本的脆弱性。

  • by Dave-London
  • TypeScript
  • 本地部署
  • 139 星标
  • 更新于
在 GitHub 查看 Dave-London/Pare

使用说明

  Pare

为AI代理提供可靠、结构化的CLI输出——不再解析脆弱的终端文本。

Pare提供 主控程序 这些服务器封装了常见的开发工具(git、npm、docker、测试运行器等),并返回干净、经过模式验证的JSON,而不是原始终端文本。代理获得可以直接操作的类型化数据,而无需进行脆弱的字符串解析。

问题

解析CLI输出很脆弱。原始终端文本包括ANSI转义码、装饰性标题、进度条、特定于区域设置的格式以及以微妙的方式破坏代理工作流的平台差异。一个与…合作良好的代理人 git status 在macOS上可能会在Windows上失败,因为输出格式发生了变化。测试运行器的摘要行可能会在不同版本之间移动,从而悄无声息地破坏正则表达式。

Pare通过返回具有一致字段名的模式验证JSON来消除这类错误,而不管平台、工具版本或区域设置如何。额外的好处是,结构化输出要小得多——代理每次工具调用使用的令牌更少:

工具命令 原始令牌 Pare令牌 缩减
docker build (多阶段,11个步骤) 373 20 95%
git log --stat (5次提交,冗长) 4992 382 92%
npm install (487个包裹,警告) 241 41 83%
vitest run (28项测试,全部通过) 196 39 80%
cargo build (2个错误,帮助文本) 436 138 68%
pip install (9个包,进度条) 288 101 65%
cargo test (12次测试,2次失败) 351 190 46%
npm audit (4个漏洞) 287 185 36%

令牌估计使用~4个字符/令牌。最大的节省出现在冗长的命令(构建、安装、测试)上。对于更简单的工具,如 eslint 或 tsc,主要优点是可靠的结构化数据——代理可以直接使用类型化的JSON,而不是解析字符串。

运作原理

每个Pare工具返回两个输出:

  • content --人类可读的文本,供显示它的MCP客户端使用
  • structuredContent --类型化、模式验证的JSON,可供代理处理

这使用MCP structuredContent 和 outputSchema 提供类型安全、经过验证的数据的功能,代理可以依赖这些数据而无需自定义解析。

例子: git status

原始git输出(~118个令牌):

On branch main
Your branch is ahead of 'origin/main' by 2 commits.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   src/index.ts
        new file:   src/utils.ts

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        temp.log

Pare结构化输出(~59个标记):

{
  "branch": "main",
  "upstream": "origin/main",
  "ahead": 2,
  "staged": [
    { "file": "src/index.ts", "status": "modified" },
    { "file": "src/utils.ts", "status": "added" }
  ],
  "modified": ["README.md"],
  "deleted": [],
  "untracked": ["temp.log"],
  "conflicts": [],
  "clean": false
}

代币减少50%。零信息丢失。完全打字。节省随着输出的冗长而扩大——测试运行程序和构建日志减少了80-92%。

可用服务器(28个软件包,240个工具)

只安装与您的堆栈相关的服务器——大多数项目只需要2-4台。完整的目录涵盖了广泛的生态系统,因此Pare无论在哪里都能工作。

类别 服务器 工具 包装
版本控制 版本控制系统, GitHub 55加元
语言和套餐 npm, python, 货物, 去, 德诺, 小圆面包, 尼克斯, Dotnet, 红宝石, 迅速, Java 虚拟机 101 npm、pip、cargo、go、deno、bun、nix、.net、gem、swift、gradle、maven
构建、缝合和测试 构建, 棉绒, 测试, CMake, 巴泽尔 23 tsc、esbuild、vite、webpack、eslint、更漂亮、传记、vitest、pytest、玩笑
基础设施 码头工人, k8s, 基础设施, 安全, 远程 40 docker、kubectl、helm、terraform、ansible、trivy、ssh
公用事业 搜索, 超文本传输协议, 做, 过程, 数据库 21 ripgrep、fd、curl、make、just、psql、mysql、redis、mongosh

工具架构 --每个工具的详细响应示例和字段描述。 另请参见 工具响应示例 用于快速JSON示例。

快速设置

# 1. Configure MCP servers (non-interactive)
npx @paretools/init --client claude-code --preset web

# 2. Add agent rules to your project
#    (append to existing CLAUDE.md, or copy if new)
cat node_modules/@paretools/init/rules/CLAUDE.md >> CLAUDE.md

# 3. Restart your client session

# 4. Validate
npx @paretools/init doctor

可用预设: web, python, rust, go, jvm, dotnet, ruby, swift, mobile, devops, full

客户设置指南

克劳德代码 克劳德桌面 光标
VS代码/副本 帆板运动 Cline/Roo代码
OpenAI 代码专家 双子星命令行工具 泽德
Continue.dev

完整快速入门指南 --预设、生态系统映射、验证

手动配置 --为所有客户端配置路径和格式

代理集成指南 --规则文件、钩子、CLI到MCP的映射

配置

工具选择

默认情况下,每个Pare服务器都会注册其所有工具。如果服务器公开了您不需要的工具,或者您想限制代理可用的工具,您可以使用环境变量对其进行过滤。

每台服务器筛选器 --限制单个服务器的工具:

# Only register status and log in the git server
PARE_GIT_TOOLS=status,log npx @paretools/git

通用过滤器 --限制所有服务器上的工具:

# Only register these specific tools across any server
PARE_TOOLS=git:status,git:log,npm:install npx @paretools/git

禁用所有工具 --将env-var设置为空字符串:

PARE_GIT_TOOLS= npx @paretools/git   # no tools registered
环境变量 范围 格式 示例
PARE_TOOLS 所有服务器 server:tool,... git:status,npm:install
PARE_{SERVER}_TOOLS 一台服务器 tool,... status,log,diff

规则:

  • 无环境变量=启用所有工具(默认)
  • PARE_TOOLS (通用)优先于每服务器变量
  • 服务器名称使用大写字母,连字符替换为下划线(例如。, PARE_MY_SERVER_TOOLS)
  • 逗号周围的空格被忽略

常见模式:

# Read-only git (no push, commit, add, checkout)
PARE_GIT_TOOLS=status,log,diff,branch,show

# Minimal npm
PARE_NPM_TOOLS=install,test,run

# Only specific tools across all servers
PARE_TOOLS=git:status,git:diff,npm:install,test:run

在JSON MCP配置中,通过 env 按键:

{
  "mcpServers": {
    "pare-git": {
      "command": "npx",
      "args": ["-y", "@paretools/git"],
      "env": {
        "PARE_GIT_TOOLS": "status,log,diff,show"
      }
    }
  }
}

故障排除

问题 解决方案
npx 在Windows上找不到/ENOENT 使用 cmd /c npx 包装(见您的 客户设置指南)
首次启动缓慢 运行 npx -y @paretools/git 一次缓存或全局安装: npm i -g @paretools/git
Node.js版本错误 Pare要求Node.js>=20
NVM/fnm路径问题 使用绝对路径 npx例如。, ~/.nvm/versions/node/v22/bin/npx
MCP连接超时 设置 MCP_TIMEOUT=30000 对于克劳德代码,或增加 initTimeout 在客户端配置中
填充上下文的工具太多 使用 工具选择 env-vars用于限制工具,或仅安装所需的服务器

贡献

每个服务器都是一个自包含的包。看 贡献.md 完整的指南。

许可证

麻省理工学院