{
  "markdown": "<h1><img src=\"assets/logo.png\" alt=\"\" width=\"80\" valign=\"middle\" />&nbsp;&nbsp;Pare</h1>\n\n[![CI](https://github.com/Dave-London/Pare/actions/workflows/ci.yml/badge.svg)](https://github.com/Dave-London/Pare/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/Dave-London/Pare/graph/badge.svg)](https://codecov.io/gh/Dave-London/Pare)\n[![npm](https://img.shields.io/npm/v/@paretools/git.svg?label=npm)](https://www.npmjs.com/package/@paretools/git)\n[![Downloads](https://img.shields.io/npm/dm/@paretools/git.svg)](https://www.npmjs.com/package/@paretools/git)\n[![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue.svg)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Dave-London/Pare/blob/main/LICENSE)\n[![Node.js >= 20](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Dave-London/Pare/badge)](https://scorecard.dev/viewer/?uri=github.com/Dave-London/Pare)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11962/badge)](https://www.bestpractices.dev/projects/11962)\n\n**Reliable, structured CLI output for AI agents — no more parsing fragile terminal text.**\n\nPare provides [MCP](https://modelcontextprotocol.io) servers that wrap common developer tools (git, npm, docker, test runners, etc.) and return clean, schema-validated JSON instead of raw terminal text. Agents get typed data they can act on directly, without brittle string parsing.\n\n## The Problem\n\nParsing CLI output is fragile. Raw terminal text includes ANSI escape codes, decorative headers, progress bars, locale-specific formatting, and platform differences that break agent workflows in subtle ways. An agent that works fine with `git status` on macOS may fail on Windows because the output format changed. A test runner's summary line might shift between versions, silently breaking a regex.\n\nPare eliminates this entire class of errors by returning schema-validated JSON with consistent field names, regardless of platform, tool version, or locale. As a bonus, structured output is significantly smaller — agents use fewer tokens per tool call:\n\n| Tool Command                              | Raw Tokens | Pare Tokens | Reduction |\n| ----------------------------------------- | ---------: | ----------: | --------: |\n| `docker build` (multi-stage, 11 steps)    |        373 |          20 |   **95%** |\n| `git log --stat` (5 commits, verbose)     |      4,992 |         382 |   **92%** |\n| `npm install` (487 packages, warnings)    |        241 |          41 |   **83%** |\n| `vitest run` (28 tests, all pass)         |        196 |          39 |   **80%** |\n| `cargo build` (2 errors, help text)       |        436 |         138 |   **68%** |\n| `pip install` (9 packages, progress bars) |        288 |         101 |   **65%** |\n| `cargo test` (12 tests, 2 failures)       |        351 |         190 |   **46%** |\n| `npm audit` (4 vulnerabilities)           |        287 |         185 |   **36%** |\n\n> Token estimates use ~4 chars/token. The biggest savings appear on verbose commands (builds, installs, tests). For simpler tools like `eslint` or `tsc`, the main advantage is reliable structured data — agents can use typed JSON directly rather than parsing strings.\n\n## How It Works\n\nEach Pare tool returns two outputs:\n\n- **`content`** — human-readable text, for MCP clients that display it\n- **`structuredContent`** — typed, schema-validated JSON, ready for agents to process\n\nThis uses MCP's `structuredContent` and `outputSchema` features to provide type-safe, validated data that agents can rely on without custom parsing.\n\n## Example: `git status`\n\n**Raw git output (~118 tokens):**\n\n```\nOn branch main\nYour branch is ahead of 'origin/main' by 2 commits.\n  (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n  (use \"git restore --staged <file>...\" to unstage)\n        modified:   src/index.ts\n        new file:   src/utils.ts\n\nChanges not staged for commit:\n  (use \"git add <file>...\" to update what will be committed)\n  (use \"git restore <file>...\" to discard changes in working directory)\n        modified:   README.md\n\nUntracked files:\n  (use \"git add <file>...\" to include in what will be committed)\n        temp.log\n```\n\n**Pare structured output (~59 tokens):**\n\n```json\n{\n  \"branch\": \"main\",\n  \"upstream\": \"origin/main\",\n  \"ahead\": 2,\n  \"staged\": [\n    { \"file\": \"src/index.ts\", \"status\": \"modified\" },\n    { \"file\": \"src/utils.ts\", \"status\": \"added\" }\n  ],\n  \"modified\": [\"README.md\"],\n  \"deleted\": [],\n  \"untracked\": [\"temp.log\"],\n  \"conflicts\": [],\n  \"clean\": false\n}\n```\n\n50% fewer tokens. Zero information lost. Fully typed. Savings scale with output verbosity — test runners and build logs see 80–92% reduction.\n\n## Available Servers (28 packages, 240 tools)\n\nInstall only the servers relevant to your stack — most projects need just 2–4. The full catalog covers a wide range of ecosystems so Pare works wherever you do.\n\n| Category             | Servers                                                                                                                                                                                                                                                                                                                                                        | Tools | Wraps                                                                      |\n| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----: | -------------------------------------------------------------------------- |\n| Version Control      | [git](./packages/server-git), [github](./packages/server-github)                                                                                                                                                                                                                                                                                               |    55 | git, gh                                                                    |\n| Languages & Packages | [npm](./packages/server-npm), [python](./packages/server-python), [cargo](./packages/server-cargo), [go](./packages/server-go), [deno](./packages/server-deno), [bun](./packages/server-bun), [nix](./packages/server-nix), [dotnet](./packages/server-dotnet), [ruby](./packages/server-ruby), [swift](./packages/server-swift), [jvm](./packages/server-jvm) |   101 | npm, pip, cargo, go, deno, bun, nix, dotnet, gem, swift, gradle, maven     |\n| Build, Lint & Test   | [build](./packages/server-build), [lint](./packages/server-lint), [test](./packages/server-test), [cmake](./packages/server-cmake), [bazel](./packages/server-bazel)                                                                                                                                                                                           |    23 | tsc, esbuild, vite, webpack, eslint, prettier, biome, vitest, pytest, jest |\n| Infrastructure       | [docker](./packages/server-docker), [k8s](./packages/server-k8s), [infra](./packages/server-infra), [security](./packages/server-security), [remote](./packages/server-remote)                                                                                                                                                                                 |    40 | docker, kubectl, helm, terraform, ansible, trivy, ssh                      |\n| Utilities            | [search](./packages/server-search), [http](./packages/server-http), [make](./packages/server-make), [process](./packages/server-process), [db](./packages/server-db)                                                                                                                                                                                           |    21 | ripgrep, fd, curl, make, just, psql, mysql, redis, mongosh                 |\n\n> **[Tool Schemas](./docs/tool-schemas/)** — detailed response examples and field descriptions for every tool.\n> See also **[Tool Response Examples](./docs/tool-response-examples.md)** for quick JSON samples.\n\n## Quick Setup\n\n```bash\n# 1. Configure MCP servers (non-interactive)\nnpx @paretools/init --client claude-code --preset web\n\n# 2. Add agent rules to your project\n#    (append to existing CLAUDE.md, or copy if new)\ncat node_modules/@paretools/init/rules/CLAUDE.md >> CLAUDE.md\n\n# 3. Restart your client session\n\n# 4. Validate\nnpx @paretools/init doctor\n```\n\n**Available presets:** `web`, `python`, `rust`, `go`, `jvm`, `dotnet`, `ruby`, `swift`, `mobile`, `devops`, `full`\n\n### Setup Guides by Client\n\n|                                              |                                                  |                                           |\n| -------------------------------------------- | ------------------------------------------------ | ----------------------------------------- |\n| [Claude Code](./docs/setup/claude-code.md)   | [Claude Desktop](./docs/setup/claude-desktop.md) | [Cursor](./docs/setup/cursor.md)          |\n| [VS Code / Copilot](./docs/setup/vscode.md)  | [Windsurf](./docs/setup/windsurf.md)             | [Cline / Roo Code](./docs/setup/cline.md) |\n| [OpenAI Codex](./docs/setup/codex.md)        | [Gemini CLI](./docs/setup/gemini-cli.md)         | [Zed](./docs/setup/zed.md)                |\n| [Continue.dev](./docs/setup/continue-dev.md) |                                                  |                                           |\n\n> **[Full Quickstart Guide](./docs/quickstart.md)** — presets, ecosystem mapping, validation\n>\n> **[Manual Configuration](./docs/manual-configuration.md)** — config paths and formats for all clients\n>\n> **[Agent Integration Guide](./docs/agent-integration.md)** — rule files, hooks, CLI-to-MCP mapping\n\n## Configuration\n\n### Tool Selection\n\nBy default, every Pare server registers all of its tools. If a server exposes tools you don't need — or you want to limit which tools are available to an agent — you can filter them with environment variables.\n\n**Per-server filter** — restrict a single server's tools:\n\n```bash\n# Only register status and log in the git server\nPARE_GIT_TOOLS=status,log npx @paretools/git\n```\n\n**Universal filter** — restrict tools across all servers:\n\n```bash\n# Only register these specific tools across any server\nPARE_TOOLS=git:status,git:log,npm:install npx @paretools/git\n```\n\n**Disable all tools** — set the env var to an empty string:\n\n```bash\nPARE_GIT_TOOLS= npx @paretools/git   # no tools registered\n```\n\n| Env Var               | Scope       | Format            | Example                  |\n| --------------------- | ----------- | ----------------- | ------------------------ |\n| `PARE_TOOLS`          | All servers | `server:tool,...` | `git:status,npm:install` |\n| `PARE_{SERVER}_TOOLS` | One server  | `tool,...`        | `status,log,diff`        |\n\n**Rules:**\n\n- No env var = all tools enabled (default)\n- `PARE_TOOLS` (universal) takes precedence over per-server vars\n- Server names use uppercase with hyphens replaced by underscores (e.g., `PARE_MY_SERVER_TOOLS`)\n- Whitespace around commas is ignored\n\n**Common patterns:**\n\n```bash\n# Read-only git (no push, commit, add, checkout)\nPARE_GIT_TOOLS=status,log,diff,branch,show\n\n# Minimal npm\nPARE_NPM_TOOLS=install,test,run\n\n# Only specific tools across all servers\nPARE_TOOLS=git:status,git:diff,npm:install,test:run\n```\n\nIn JSON MCP config, set via the `env` key:\n\n```json\n{\n  \"mcpServers\": {\n    \"pare-git\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@paretools/git\"],\n      \"env\": {\n        \"PARE_GIT_TOOLS\": \"status,log,diff,show\"\n      }\n    }\n  }\n}\n```\n\n## Troubleshooting\n\n| Issue                               | Solution                                                                                            |\n| ----------------------------------- | --------------------------------------------------------------------------------------------------- |\n| `npx` not found / ENOENT on Windows | Use `cmd /c npx` wrapper (see your [client's setup guide](./docs/setup/))                           |\n| Slow first start                    | Run `npx -y @paretools/git` once to cache, or install globally: `npm i -g @paretools/git`           |\n| Node.js version error               | Pare requires Node.js >= 20                                                                         |\n| NVM/fnm PATH issues                 | Use absolute path to `npx`: e.g., `~/.nvm/versions/node/v22/bin/npx`                                |\n| MCP connection timeout              | Set `MCP_TIMEOUT=30000` for Claude Code, or increase `initTimeout` in client config                 |\n| Too many tools filling context      | Use [tool selection](#tool-selection) env vars to limit tools, or only install the servers you need |\n\n## Contributing\n\nEach server is a self-contained package. See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full guide.\n\n## License\n\n[MIT](./LICENSE)\n",
  "bytes": 13318,
  "sha": "58791e6f46095640b3df07fbc69871bf11dacd6ed8baa886ab26f9f4030d9959",
  "repo_slug": "dave-london/pare",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_dave_london_pare_git_832880b9/readme"
}