pluck
MCP-native code retrieval for AI agents — 84-88% fewer read tokens, BM25F + semantic search, AST chunks, session dedup
Install / Use
claude mcp add hunhee98 -- npx -y github:hunhee98/pluckIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of pluck
pluck scores 79/100 on our quality scale, 777th of 934 AI & Machine Learning skills we index.
Its MCP Server is 16 KB long, well organised into 18 sections with 7 code examples: a thorough specification that gives an agent plenty to work with.
It has 42 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 5 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- Our last check on 2026-09-21 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 95/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-25. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
pluck compared with similar skills
All 4 of these similar skills score higher than pluck; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pluck (this skill)by hunhee98 | 79 | 42 | 5mo ago | MCP Server |
| claude-memby thedotmack | 100 | 102.4k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 101.1k | 2d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 87.8k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.6k | today | CLAUDE.md |
Frequently asked questions
- How do I install pluck?
- Run
claude mcp add hunhee98 -- npx -y github:hunhee98/pluck. The install tabs above show the steps for each supported agent. - Which AI agents does pluck work with?
- It is written for Claude Code, Claude Desktop and OpenAI Codex, as a MCP Server file. Other agents that read the same format can often use it too.
- Is pluck safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 95/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pluck still maintained?
- The repository was last updated about 5 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubQuickstart • Why Pluck? • MCP Tools • CLI • Benchmarks
</div>pluck is a local Rust daemon that replaces cat and grep as the default way AI agents read and search code. It exposes symbol-aware code reading and search to agents over the Model Context Protocol (MCP). Smart outlines cut eligible code-read tokens by 84-88 %, CI logs compress by 71 %, and warm search stays sub-millisecond — with a --raw fallback on every tool so the agent never loses capability by defaulting to pluck.
Without pluck: ls → grep → cat file1 → cat file2 → cat file3 → ...
With pluck: pluck.plan "fix auth-token expiry" → 3-5 next-call recommendations
pluck.search "auth flow" → ranked chunks, BM25 + semantic
pluck.peek validate_token → signature + callees only
pluck.symbol validate_token → just that function's body
pluck.impact validate_token → every caller, depth-capped
pluck.deps src/auth/login.ts → forward/reverse import graph
pluck.digest < cargo-build.log → 71 % shorter, errors intact
Quickstart
Pluck is designed to be the default retrieval tool for your AI coding agents.
1. Paste the Agent Setup Prompt
Install and configure pluck for this repo.
Install / register:
- If pluck is missing, install pluck-mcp and pluck-cli with Cargo or Homebrew.
- Register pluckd as an MCP server named `pluck` for this repository.
- Prefer project-scoped config when the agent supports it.
- Preserve existing MCP servers, rules, hooks, permissions, and comments.
To make pluck the first retrieval choice:
- Use the strongest official mechanism this agent supports.
- Claude Code: use project MCP config or
`claude mcp add --transport stdio --scope project pluck -- pluckd --repo <repo-root>`;
approve the `pluck` MCP server in settings/permissions when needed; add
durable instructions in `CLAUDE.md`; use PreToolUse hooks or permission
deny rules only when they can safely redirect repo-local cat/grep/rg/read
retrieval to mcp__pluck__* tools.
- Codex: use `codex mcp add pluck -- pluckd --repo <repo-root>` or
`~/.codex/config.toml` / trusted project `.codex/config.toml`; add the
pluck-first retrieval policy to `AGENTS.md`.
- Cursor: use project `.cursor/mcp.json`; add an always-applied Project Rule
in `.cursor/rules/` or an `AGENTS.md` instruction for the workspace.
Pluck-first retrieval policy:
- Use mcp__pluck__read before cat, head, tail, sed -n, or built-in file reads
for files inside the indexed repo.
- Use mcp__pluck__search for conceptual code lookup.
- Use mcp__pluck__grep before grep or rg for exact strings, regexes, TODOs,
and all textual matches inside the repo.
- Use mcp__pluck__peek, mcp__pluck__symbol, mcp__pluck__expand,
mcp__pluck__impact, and mcp__pluck__deps for symbol shape, bodies, call
chains, refactor impact, and import relationships.
- Use mcp__pluck__digest before pasting long cargo, npm, pytest, or GitHub
Actions logs into context.
- Fall back to Bash or built-in reads only for binary files, paths outside the
repo, byte-exact shell pipelines, unsupported formats, or when pluck is
unavailable.
Verify:
- Restart or reload the agent if MCP changes require it.
- Confirm the `pluck` MCP server is connected and mcp__pluck__* tools exist.
- Run one repo code-search/read task and confirm the agent calls mcp__pluck__*
before Bash, grep/rg, cat, or built-in file reads.
- Show the files changed and the verification result.
For an expanded version with safety checks and fallback instructions, use the full agent install prompt.
2. Or set it up manually
# Daemon + standalone CLI from crates.io
cargo install pluck-mcp pluck-cli
# Or via Homebrew tap
brew tap hunhee98/pluck && brew install pluck
Claude Code
pluck init --target claude --mode aggressive # MCP + permissions + Bash retrieval block
(Alternatively, you can manually enable it via /plugin marketplace add hunhee98/pluck)
Codex
pluck init --target codex --mode strong # MCP + AGENTS.md pluck-first policy
Cursor
pluck init --target cursor --mode strong # MCP + always-apply Cursor rule
Why pluck?
When AI agents use standard cat and grep to explore a codebase, they waste massive amounts of context window tokens. Re-reading the same file chunk, scrolling past unrelated functions, and re-paying tokens for identical imports on every read adds up to thousands of wasted tokens per session.
pluck solves this by providing an agent-facing layer for code search. Its core principle: every retrieval call an agent makes should default to pluck. Bash is only the fallback when pluck legitimately can't help (e.g., binary files, paths outside the repo).
- Smart Outline (
pluck.read): Instead of dumping a 1,000-line file, it returns a token-efficient outline of signatures with tiny helper bodies inline. The agent can then fetch only the larger function bodies it needs. - Session Dedup: If an agent searches for "auth" and later searches for "token", any overlapping code chunks are replaced with a 1-token placeholder (
[already-shown: ...]). The bytes are already in the agent's context; repeating them is pure waste. - Lossless Default: Stripping comments or dropping types hurts the agent's decision-making. pluck keeps the original bytes intact and makes lossy modes strictly opt-in.
- 100% Capability Guarantee: Every pluck tool has a
--rawfallback that behaves exactly likecatorgrepbyte-for-byte.
How it works
pluck chunks files at the Abstract Syntax Tree (AST) level using Tree-sitter. When an agent queries, pluck ranks these chunks using a hybrid of keyword matching (BM25F over symbol/signature/content) and semantic similarity (a static model2vec-style lookup, potion-code-16M, ~60 MB on disk — no transformer inference at runtime). Search expands natural-language BM25 queries with embedding-nearest terms from the indexed repo, then runs a two-stage cascade: BM25F first widens the candidate pool, embeddings rerank that pool, and a smaller semantic-rescue pass catches concept queries with weak lexical overlap. The RRF blend is picked continuously from the query embedding against natural-language and code centroids, so agents can search by concept ("payment flow") without losing precision on exact symbols.
Session dedup in action
<!-- GPT IMAGE PROMPT: A sequence diagram illustrating 'Session dedup'. An 'Agent' asks 'pluckd' for "auth token". pluckd returns Chunk A (420 tokens) and Chunk B (380 tokens). Later, the Agent asks for "session expiry". pluckd realizes Chunk A was already sent, so it returns a 1-token placeholder [already-shown: chunk A] along with a new Chunk C (340 tokens). The diagram should visually highlight the "Saved 419 tokens" aspect. --> <p align="center"> <img src="assets/images/session_dedup_flow.png" alt="Session Dedup Flow"> </p>MCP Tools
Agents call specific tools depending on what they need. Bash is the fallback, not the default.
| Tool (wire name) | Replaces | Use when |
|------------------|----------|----------|
| mcp__pluck__read | cat | Read a code file (smart outline by default; raw: true for byte-exact) |
| mcp__pluck__grep | grep / rg | Keyword search (all ripgrep flags wrapped) |
| mcp__pluck__search | — | Ranked-chunk search (BM25 + semantic RRF) |
| mcp__pluck__symbol | cat + scroll | Read just that function/class |
| mcp__pluck__peek | — | Signature + direct callees only |
| mcp__pluck__expand | many cats | Symbol + callees up to N hops |
| mcp__pluck__impact | grep + read each caller | Reverse call graph — "who calls this symbol?" |
| mcp__pluck__deps | grep imports + read each file | File-level import graph — "what does this file depend on / who imports it?" |
| mcp__pluck__digest | piping cargo build/pytest/CI logs to cat | Compress verbose tool output (errors / panics kept verbatim, progress lines collapsed) |
| mcp__pluck__plan | speculative search/read loop | Given a free-form task, recommend the next 3-5 retrieval calls + confidence indicator |
Standalone CLI (no agent)
You can also use pluck directly in your terminal:
pluck index .
pluck search "auth flow" --repo .
pluck read src/auth/login.ts # smart outline
pluck read src/auth/login.ts --raw # byte-equivalent cat
Performance & Token Savings
Every number on this page cites a frozen baseline row or a measured scenario. No projected / aspirational percentages.
<!-- GPT IMAGE PROMPT: A bar chart comparing token usage per session between "bash (rg+cat)" and "pluck". The "bash" bar should be high and colored red or gray. The "pluck" bar should be lower and colored bright green. The title should be "Tokens per session". Clean, modern UI style. --> <p align="center"> <img src="assets/images/token_savings_chart.png" alt="Token Savings Chart"> </p>Gated engine metrics
These are the invariants in benchmarks/baseline.json. Every commit that touches engine-core runs scripts/regression-gate.py and the gate fails the build if any of them drift past tolerance.
| Metric | Value | Source row in baseline.json |
|--------|-------|-------------------------------|
| Chunker p50 (medium repo, 500 lines) | 1.05 ms | chunker_medium_ms_p50 |
| Indexer throughput (medium, 500 files) | 2 747 files/s | indexer_files_per_sec_medium |
| Warm search p50 (medium) | 0.07 ms | warm_search_p50_ms_medium |
| File save → searchable p50 | 171 ms | freshness_p50_ms_medium |
| Session-dedup savings (5-query bench) | 23 % | session_dedup_session_savings_pct |
| pluck.digest log compression (median of 6 fixtures) | 71 % | digest_savings_pct |
Eligible read-token savings
pluck.read outline mode is where pluck stops agents from paying the cat tax: instead of dum
Truncated for display — read the full file on GitHub.
Related Skills
claude-mem
102.4kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
101.1kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
87.8kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
77.6kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
