Skip to main content
Glama

πŸ•ΈοΈ MeshMind

npm CI license node

One MCP server. Three superpowers for your AI agent β€” keyless, local-first, no setup.

Built for AI engineers, senior devs, and power users who want their coding agent to understand large codebases, stay current with fast-moving topics, and stop wasting the context window.


🎬 See it in action

Ask your agent in plain language β€” MeshMind picks the right tool:

You:    "Map this repo and show me hub modules and import cycles."

Agent:  Scanning 87 files… (AST: 71, regex: 16)
        πŸ“¦ 4 communities detected
        πŸ”— Hub nodes: server.ts (degree 12), mapper.ts (degree 9)
        ⚠️  Import cycle: crusher.ts β†’ server.ts β†’ crusher.ts
        Summary: 312 edges, 6 orphan files, 2 god nodes
You:    "What's the latest on Bun vs Node in the last 30 days?"

Agent:  Researched 12 sources (847 results β†’ 42 after fusion + dedup)
        πŸ”₯ Top corroborated theme: Bun 1.2 HTTP perf benchmarks
           Sources: HN (score 847), Reddit r/javascript, Dev.to (3 posts)
        πŸ“Œ Entities: Bun, Node 22, Deno, WinterTC
        πŸ’‘ Diverging signal: GitHub issues show Node winning on compatibility
You:    "I have ~400 tokens of room left. Crush this 8k-line log to fit."

Agent:  crush_file β†’ targetTokens=400 (auto-escalation)
        [strip,whitespace,line-dedup,json-min]      β†’ 6,210 tok
        [+stopwords]                                β†’ 4,980 tok
        [+summarize]                                β†’ 1,520 tok
        [+truncate maxLines=44]                     β†’   353 tok  βœ“
        53,000 tokens β†’ 353 tokens  (-99.3%)
        ref: cf_a3f9… (persisted β€” retrieve anytime, even tomorrow)

Related MCP server: kontexta

⚑ Three superpowers

🧭 MAP YOUR CODE          πŸ“° RESEARCH WHAT'S NEW       πŸ—œοΈ CRUSH THE TOKENS
─────────────────────     ──────────────────────────    ─────────────────────────
Real AST dependency       Last-N-days signal from       Reversible compression
& call graph              12 keyless public sources     with exact BPE counts

TS/JS via TypeScript      HN Β· Reddit Β· GitHub          7 composable algorithms
compiler API              Lobsters Β· Bluesky            strip Β· dedup Β· truncate
                          Stack Overflow Β· Lemmy        json-min Β· stopwords
Python/Go/Rust via        Dev.to Β· Mastodon             summarize (host LLM)
ast-grep/tree-sitter      YouTube (via Piped)

Community clustering      Cross-source fusion           LRU-bounded reversible
Cycle/hub detection       Relevance reranking           cache β€” get originals
Mermaid/JSON export       Entity extraction             back anytime via ref

The killer combo: pipe research output straight through the compressor β€” agent reads the signal, not the token bill.


🎯 Who this is for

Use MeshMind if you are:

  • An AI engineer or developer who uses Claude Code, Cursor, or a similar coding agent daily

  • Working on large or unfamiliar codebases where the agent needs structural context fast

  • Researching fast-moving topics (new frameworks, API changes, community debates) without paying for search APIs

  • Hitting context window limits and want reversible, measurable compression

When NOT to use MeshMind:

  • You need real-time data (research window is 30 days by default, not live search)

  • You need authenticated sources (all 12 sources are public/keyless β€” no paywalled content)

  • You need code execution or modification (MeshMind is read-only: maps, reads, compresses)

  • Your codebase is gigantic (100k+ files) β€” use maxFiles to scope it, or a dedicated code-index tool


⚑ Quick start (60 seconds)

# Claude Code β€” one command, done:
claude mcp add meshmind -- npx -y meshmind

No API keys. No build step. npx fetches it on first run. For other clients see Install in an MCP client below.


πŸ”’ Security & privacy

Everything runs locally. Nothing is stored. Nothing is sent to third parties.

  • Codebase mapping β€” reads files on your machine, builds graph in memory, returns summary. No data leaves the process.

  • Research β€” fetches public URLs (HN, Reddit, GitHub, etc.) the same way your browser would. No auth tokens required or stored.

  • Compression β€” runs entirely in-process. The ref cache is in-memory only and cleared when the process exits.

  • Summarization β€” when summarize: true, your text is sent to your own MCP client's LLM via standard MCP sampling (i.e. the same model your agent already uses). If your client doesn't support sampling, MeshMind falls back to local extractive summarization β€” nothing leaves the process.

MeshMind intentionally skips .env files, secrets-pattern filenames, node_modules, and dotdirs during codebase scans. Full threat model: SECURITY.md.


Tools

scan_local_codebase

{ path, raw?, maxFiles? } β€” dependency graph with real AST extraction.

  • TS/JS/TSX/JSX β€” TypeScript compiler API (true AST, not regex)

  • Python, Go, Rust β€” ast-grep / tree-sitter grammars

  • Everything else β€” regex fallback

  • Edges carry EXTRACTED / INFERRED / AMBIGUOUS confidence labels

  • Community clustering (label propagation), hub/god node detection, import cycle detection, orphan detection

  • Skips node_modules, build dirs, dotdirs, secrets-pattern files

  • Default: compact summary with ast=N coverage; raw: true returns full JSON

Example output:

{
  "fileCount": 87,
  "astFiles": 71,
  "edges": 312,
  "analysis": {
    "hubs": ["server.ts", "mapper.ts"],
    "cycles": [["crusher.ts", "server.ts"]],
    "orphans": ["legacy/old-api.ts"],
    "communityCount": 4
  }
}

export_codebase_graph

{ path, format? } β€” export the dependency graph.

  • "mermaid" β€” paste directly into docs, GitHub, or Obsidian

  • "json" β€” nodes + edges for D3, Obsidian Canvas, or custom tooling

Example Mermaid output:

graph LR
  server.ts --> mapper.ts
  server.ts --> crusher.ts
  mapper.ts --> astgrep.ts
  crusher.ts -.-> server.ts

research_last_30_days

{ topic, windowDays?, sources?, perSource?, compress? } β€” multi-source community signal.

  • 12 keyless sources: hackernews, reddit, github, github_issues, web, lobsters, bluesky, stackoverflow, lemmy, devto, mastodon, youtube

  • Entity extraction β€” surfaces salient names, libs, keywords

  • Cross-source fusion β€” clusters results into themes, boosts items corroborated by β‰₯2 independent sources

  • Fail-soft β€” a blocked source returns nothing instead of crashing the run

  • compress: true β€” pipes result through the crusher before returning

Example output (truncated):

{
  "topic": "Bun vs Node",
  "totalResults": 42,
  "themes": [
    {
      "label": "Bun 1.2 HTTP performance benchmarks",
      "sources": ["hackernews", "reddit", "devto"],
      "topItem": { "title": "Bun 1.2 is faster than Node on HTTP", "score": 847 }
    }
  ],
  "entities": ["Bun", "Node 22", "Deno", "WinterTC"]
}

get_optimized_context

{ text? | filePath?, mode?, targetTokens?, algorithms?, maxLines?, summarize?, preview? } β€” reversible compression.

Three ways to drive it:

  • Budget mode β€” set targetTokens and MeshMind auto-escalates the pipeline (lossless-ish β†’ stopwords β†’ summarize β†’ truncate) until the output fits. Returns an escalation log so you see how it got there.

  • Explicit β€” pick your own algorithms.

  • Default β€” leave both for the sensible lossless-ish pipeline.

Other options:

  • Algorithms (composable): strip Β· whitespace Β· line-dedup Β· json-min Β· truncate Β· stopwords Β· summarize

  • Modes: code Β· web Β· auto

  • summarize: true β€” delegates to host LLM via MCP sampling; falls back to local extractive

  • preview: true β€” per-step savings breakdown without storing a ref or touching stats

Example output (budget mode):

[meshmind] budget=400 tok β†’ 353 tok βœ“ within budget | 52999β†’353 (-99.3%) | ref=cf_a3f9…
Escalation:
  [strip,whitespace,line-dedup,json-min] β†’ 6210 tok
  [+stopwords]                           β†’ 4980 tok
  [+stopwords,summarize]                 β†’ 1520 tok
  [+truncate maxLines=44]                β†’  353 tok

crush_file

{ path, targetTokens?, mode? } β€” read a file and compress it in one call.

The shortcut for "this file is too big to read." With targetTokens, auto-escalates until it fits; otherwise applies the default pipeline. Returns compressed payload + exact BPE savings + a reversible ref.


retrieve_context

{ ref } β€” recover the original uncompressed text from a ref.

Persistent: refs are stored on disk under MESHMIND_HOME (default ~/.meshmind), so you can retrieve a blob you compressed in a previous session β€” even after a restart. LRU-bounded (default 500 entries; tune via MESHMIND_CACHE_MAX).


context_stats

{} β€” token savings, both session (this process) and lifetime (persisted across restarts).

{
  "session":  { "calls": 14, "originalTokens": 84200, "crushedTokens": 12300, "savedPercent": 85.4, "cachedRefs": 312 },
  "lifetime": { "calls": 1840, "originalTokens": 9_400_000, "crushedTokens": 1_900_000, "savedPercent": 79.8, "cachedRefs": 312, "firstSeen": "2026-05-01T…", "lastSeen": "2026-06-16T…" }
}

Recipes

You say…

MeshMind does…

"Map this repo and flag hub modules and import cycles."

scan_local_codebase β†’ AST graph + analysis

"Export the dependency graph as Mermaid so I can paste it in the docs."

export_codebase_graph β†’ Mermaid

"What did people say about bun vs node in the last 30 days?"

research_last_30_days β†’ ranked, fused, multi-source digest

"Research Rust async, but compress it before you read it."

research_last_30_days with compress: true

"This stack trace is huge β€” dedupe and trim it before reading."

get_optimized_context with line-dedup + truncate

"Summarize this 20-page doc into the key facts."

get_optimized_context with summarize: true (host-LLM)

"Give me back the full original of that compressed blob."

retrieve_context with the ref

"How many tokens have we saved this session?"

context_stats

Tip: chain them. "Research X, compress it, and tell me the 3 corroborated themes" hits research β†’ fusion β†’ compression in one turn, and the agent only reads the crushed output.


Install in an MCP client

MeshMind is on npm: https://www.npmjs.com/package/meshmind. No clone or build needed β€” npx fetches and runs it. The command is always npx -y meshmind; only the config location differs per client.

Claude Code (CLI β€” registers it for you):

claude mcp add meshmind -- npx -y meshmind

Cursor β€” ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "meshmind": { "command": "npx", "args": ["-y", "meshmind"] }
  }
}

Claude Desktop β€” claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "meshmind": { "command": "npx", "args": ["-y", "meshmind"] }
  }
}

VS Code (Copilot/MCP) β€” .vscode/mcp.json:

{
  "servers": {
    "meshmind": { "type": "stdio", "command": "npx", "args": ["-y", "meshmind"] }
  }
}

Any other MCP host (Codex, Gemini CLI, Windsurf, Zed, …) uses the same command + args pair in its own config format. See mcp.example.json for the canonical block.

Prefer a pinned global binary? npm i -g meshmind, then use meshmind as the command instead of npx -y meshmind.

From source (for development)

git clone https://github.com/AntoniovanDijck/meshmind.git
cd meshmind
npm install && npm run build   # runnable server at build/server.js

Then point the client at node /ABS/PATH/TO/meshmind/build/server.js.


Benchmarks

Real numbers from npm run benchmark (Node 22, Apple Silicon) on representative payloads β€” not mocked. Default pipeline is deliberately conservative (lossless-ish: strip/whitespace/line-dedup/json-min):

Fixture

Orig tokens

Crushed

Saved

Time

HTML listing (1k rows)

37,091

7,001

81.1%

5 ms

Source code (this repo)

28,194

22,745

19.3%

20 ms

Verbose log (2k lines)

52,999

45,399

14.3%

26 ms

JSON array (2k objects)

149,998

146,002

2.7%

33 ms

RAG concat (200 chunks)

18,000

17,800

1.1%

5 ms

The default pipeline only removes provably-safe noise β€” that's why structured JSON and near-duplicate prose barely move. Budget mode is where the savings live: it escalates through lossy stages until your target is hit.

Target

Result

Hit?

Time

2,000

1,715

βœ“

132 ms

1,000

868

βœ“

130 ms

400

353

βœ“

131 ms

150

126

βœ“

113 ms

(52,999-token verbose log β†’ any budget you ask for.) Reproduce with npm run benchmark.

Build & test

npm install
npm run build          # tsc β†’ build/
npm test               # offline: unit tests + MCP integration (no network)
npm run test:network   # also exercises the live research sources
npm run benchmark      # reproduce the compression benchmarks above

Live network sources are opt-in (RUN_NETWORK_TESTS=1) so the default suite is deterministic and CI-safe.


Architecture

src/
  crusher.ts          # compression pipeline + budget escalation    ← headroom
  store.ts            # persistent reversible store + lifetime stats
  mapper.ts           # collect β†’ extract β†’ graph β†’ cluster/analyze ← graphify
  astgrep.ts          # multi-language AST (Python/Go/Rust)         ← graphify
  recency_engine.ts   # parallel keyless source fetchers + fusion   ← last30days
  server.ts           # MCP server: registers the 7 tools
  benchmark.ts        # reproducible compression benchmarks
  test-unit.ts        # deterministic offline unit tests
  test-client.ts      # MCP integration tests over stdio

Runtime dependencies: @modelcontextprotocol/sdk, zod, gpt-tokenizer (exact BPE counts), typescript (TS/JS AST), @ast-grep/napi + @ast-grep/lang-{python,go,rust} (multi-language AST). Networking uses the Node stdlib fetch. Summarization delegates to the host LLM via MCP sampling β€” no ONNX, no model downloads.


FAQ

Do I need any API keys? No. Every research source is keyless/public, and compression + mapping are fully local.

Which languages does the codebase mapper understand? TS/JS/TSX/JSX via the TypeScript compiler API. Python, Go, Rust via ast-grep (tree-sitter). Everything else falls back to regex. The summary's ast=N tells you how many files got a real AST.

Is the compression lossy? Can I get the original back? Lossy steps exist (strip, dedupe, summarize), but every compression is stored under a ref. Call retrieve_context with that ref to recover the exact original. Refs are persisted to disk under MESHMIND_HOME (default ~/.meshmind), so they survive restarts β€” retrieve a blob you compressed yesterday. LRU-bounded (default 500 entries β€” tune via MESHMIND_CACHE_MAX). If the disk is unavailable, the store falls back to in-memory for the session.

A research source returned nothing / errored. Sources are fail-soft: a blocked or rate-limited source returns nothing instead of crashing the run. The result lists per-source errors so you know what was skipped.

Does summarize send my data anywhere? Only to your own MCP client's LLM, via standard MCP sampling. If the client doesn't support sampling, MeshMind falls back to local extractive summarization. See SECURITY.md.

Can it read files outside my project? It reads whatever path you give it, with the privileges of the process. Run it in a sandbox if you need to constrain that β€” details in SECURITY.md.

Why "MeshMind"? It meshes three separate context tools into one mind for your agent. πŸ•ΈοΈπŸ§ 


Credits & License

MeshMind is MIT-licensed. Its three pillars are conceptually derived from graphify, headroom, and last30days-skill β€” see CREDITS.md for full attribution. Contributions welcome β€” see CONTRIBUTING.md.

Available Tools

7 tools
context_statsCompression statsA

Return token-savings stats: session (this process) and lifetime (persisted across restarts under MESHMIND_HOME) β€” compress calls, original vs. crushed tokens, percent saved, cached refs, first/last seen.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description fully explains behavior: returns two categories of stats (session and lifetime), lists fields, and notes persistence under MESHMIND_HOME. No side effects or permissions needed are implied, which is sufficient for a read-only stats tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is efficient but slightly dense. Front-loaded with the main action, but could be broken into two sentences for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, description adequately explains return values (session vs. lifetime fields). Covers all listed fields, making it usable for an agent to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; description does not need to add param info. Baseline score of 4 is appropriate as schema coverage is 100% and description adds value by explaining return structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it returns token-savings stats with specific fields (session and lifetime scopes). It distinguishes from sibling tools like crush_file and get_optimized_context by focusing on statistics rather than compression or retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over alternatives. It does not mention prerequisites, complementary tools, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

crush_fileCrush a file to a token budgetA

Shortcut for the common 'this file is too big to read' case: reads a local file and compresses it in one call. With targetTokens, auto-escalates the pipeline until it fits; otherwise applies the default lossless-ish pipeline. Returns the compressed payload, exact BPE savings, and a reversible ref.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesLocal file to read and compress.
targetTokensNoToken budget β€” auto-escalate until output fits.
modeNoCompression regime (default auto).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses auto-escalation behavior, default lossless-ish pipeline, return payload, BPE savings, and reversible ref. Does not cover auth, size limits, or side effects, but provides sufficient behavioral context for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, each sentence adds distinct value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and three parameters, the description explains the main use case, optional behaviors, and return values. Lacks file type support notes but is sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good parameter descriptions. The tool description adds context about auto-escalation for targetTokens, but largely overlaps with schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('reads and compresses') and the resource ('local file'), and positions it as a shortcut for 'this file is too big to read'. It distinguishes from siblings by focusing on compression, which is not covered by other tool names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the typical use case (too-big file) and the auto-escalation behavior with targetTokens, but does not explicitly state when NOT to use the tool or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_codebase_graphExport codebase graphA

Scan a directory and export its dependency graph as either a Mermaid diagram (format='mermaid') or a D3/Obsidian-friendly nodes+edges JSON (format='json').

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory to scan and export.
formatNoOutput format (default mermaid).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the scanning and export behavior, and specifies output formats, but does not mention potential side effects, performance impact, or limitations like directory depth or file exclusions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that front-loads the core purpose and includes critical details (format options). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description adequately covers purpose and output options. However, it lacks details on the shape of the JSON output or any return value structure, which could be helpful for agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description adds context about output format specifics (Mermaid vs JSON) but does not significantly exceed schema detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('scan and export') and resource ('codebase graph'), clearly distinguishing it from sibling tools, which focus on context retrieval and file operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'scan_local_codebase' or 'retrieve_context'. The usage is implied through the specific output formats, but lacks when-not-to-use or prerequisite information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_optimized_contextGet optimized (compressed) contextA

Reversible token-reduction pipeline. Accepts raw text OR a filePath. Three modes of use: (1) set targetTokens and MeshMind auto-escalates algorithms until the output fits your budget; (2) set explicit algorithms; (3) leave both for sensible defaults. Algorithms: strip, whitespace, line-dedup, json-min, truncate, stopwords, summarize. Set summarize=true for an abstractive summary via the host LLM (MCP sampling), extractive fallback. preview=true shows the per-step savings WITHOUT storing a ref. Returns compressed payload, exact BPE savings, and a ref for retrieve_context. Provide exactly one of text or filePath.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoRaw text/code/HTML to compress.
filePathNoLocal file to read and compress.
modeNoCompression regime (default auto).
targetTokensNoToken budget β€” auto-escalate the pipeline until output fits.
algorithmsNoOverride the algorithm pipeline (ignored if targetTokens set).
maxLinesNotruncate: line budget.
summarizeNoAbstractive summary via host LLM (sampling), extractive fallback.
previewNoShow per-step savings without storing a ref or recording stats.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses reversibility, preview mode behavior (no ref stored), return values (compressed payload, BPE savings, ref), and use of MCP sampling for summarization. Missing details on error conditions or rate limits, but adequate given complexity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph, structuring information logically with numbered modes and algorithm list. No wasted words, though could benefit from explicit sections for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without output schema, description explains return values (compressed payload, BPE savings, ref) and preview mode. Covers all 8 parameters. Lacks explicit error information but is otherwise comprehensive for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds value by explaining parameter interactions (e.g., targetTokens auto-escalates, algorithms ignored when targetTokens set, summarize flag behavior) beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'Reversible token-reduction pipeline' that accepts raw text or a file path, distinguishing it from sibling tools like context_stats or retrieve_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains three modes of use (targetTokens, algorithms, or both) and that exactly one of text or filePath must be provided, but does not explicitly guide when to use this tool versus siblings like crush_file or retrieve_context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_last_30_daysResearch the last 30 daysA

Fetch recent community/social signal on a topic from keyless public sources (Hacker News + comment enrichment, Reddit w/ RSS fallback, GitHub, Web, Lobsters, Bluesky, Stack Overflow, Lemmy), filtered to a trailing window. Results are relevance-reranked and deduped. Set compress=true to pipe the result through the token-reduction pipeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic or query to research.
windowDaysNoTrailing window (default 30).
sourcesNoSubset of sources (default: all).
perSourceNoMax items per source (default 10).
compressNoPipe output through get_optimized_context.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses multi-source fetching, trailing window, relevance-reranking, deduplication, and a compress option. It does not cover rate limits, authentication, or output format, but the key behaviors are well-described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main purpose and key features. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite tool complexity (multiple sources, parameters, no output schema), the description lacks details on output format, return values, or limits. It mentions reranking and dedup but does not explain what the results look like, making it incomplete for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter has a schema description. The tool description adds general behavioral context (e.g., reranking, dedup) but does not significantly enhance parameter understanding beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Fetch' and the resource 'recent community/social signal on a topic' from a defined set of sources. It distinguishes from siblings by listing specific sources and mentioning a trailing window filter, which is unique among the sibling tool names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching recent social signals on a topic but does not explicitly state when to use this tool versus siblings like 'retrieve_context' or 'scan_local_codebase'. No exclusions or alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_contextRetrieve original (uncompressed) contextA

Recover the original, uncompressed text for a ref returned by a prior get_optimized_context or compressed research call (reversible / CCR).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesThe cf_… ref to recover.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool is reversible, implying a safe read operation, but does not disclose error behaviors, rate limits, or authentication needs. This is minimally adequate for a simple retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the action (recover) and key information. Every word contributes value; no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter, no output schema, and no annotations, the description sufficiently explains its purpose and relation to other tools. It lacks details on return values or error handling, but for a simple retrieval tool, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'ref', with a brief schema description. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool recovers the original uncompressed text for a ref returned by prior get_optimized_context or compressed research calls. It specifies the verb (recover), resource (uncompressed text), and source (ref), distinguishing it from siblings like get_optimized_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly indicates when to use the toolβ€”after a prior get_optimized_context or compressed research callβ€”and mentions it's reversible. However, it does not provide explicit when-not-to-use or alternative tools, though context makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_local_codebaseScan local codebaseA

Recursively scan a directory and build a dependency graph: files, top-level symbols, import edges, an inferred call graph (with EXTRACTED/INFERRED/AMBIGUOUS confidence), community clustering, and structural analysis (hub/god nodes, import cycles, orphans). Default returns a compact summary; raw=true returns the full JSON map.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative directory to scan.
rawNoReturn full JSON map instead of summary.
maxFilesNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the output types (compact summary vs. full JSON map) and lists the analysis components. It does not cover performance or permissions, but for a read-only scan tool, the transparency is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first lists the analysis features, the second explains output options. It is concise and front-loaded with the main action, though the dense list of components could be slightly reorganized for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (dependency graph with many features) and the absence of an output schema, the description provides a good overview. It covers the key outputs and options, though it does not detail how to interpret specific analyses (e.g., confidence levels).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (2 of 3 parameters have descriptions). The description adds context for the 'raw' parameter by explaining its effect, but does not elaborate on 'path' (beyond schema) or 'maxFiles'. This adds some value but is not comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: recursively scan a directory and build a dependency graph. It uses a specific verb ('scan') and resource ('local codebase'), and the listing of components (symbols, call graph, etc.) distinguishes it from sibling tools like export_codebase_graph.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for analyzing code structure but does not provide explicit guidance on when to use this tool versus alternatives like export_codebase_graph or context_stats. It mentions default vs. raw output but lacks when-not or prerequisite conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv1.1.0
    • First observedcontext_stats
    • First observedcrush_file
    • First observedexport_codebase_graph
    • First observedget_optimized_context
    • First observedresearch_last_30_days
    • First observedretrieve_context
    • First observedscan_local_codebase

TDQS

A4/5.0
Disambiguation4/5

Tools have largely distinct purposes, with some overlap between crush_file and get_optimized_context as both compress, but they target different use cases (file shortcut vs. general pipeline). export_codebase_graph and scan_local_codebase are related but differ in output format and depth. Overall, agents can distinguish most tools.

Naming Consistency5/5

All tool names use snake_case with a consistent verb_noun or descriptive pattern (e.g., crush_file, get_optimized_context, research_last_30_days). No mixing of conventions, making naming predictable and clear.

Tool Count5/5

Seven tools cover the advertised functionalityβ€”context compression, codebase analysis, and researchβ€”without being excessive. Each tool has a defined role, and the count is appropriate for the server's purpose.

Completeness4/5

The tool set covers key operations: compression, decompression, stats, codebase scanning, graph export, and research. Minor gaps exist, such as no tool to list or manage stored refs, and no direct configuration update, but core workflows are well-supported.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A local-first MCP server that gives AI coding agents persistent memory and controlled commands. Features a git-backed markdown knowledge vault with FTS5 search, surgical section edits, token-aware context budgeting, and a sandboxed command engine with human approval gates. Works with Claude Code, Cursor, Copilot, Gemini, and more.
    53
    10
    1
    Apache 2.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that enables multiple AI models (Claude, ChatGPT, Gemini) to share and persist context via a local-first vault of markdown files and SQLite index, allowing seamless cross-AI memory.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Local-first MCP server that gives any AI coding agent per-project memory, workflow intelligence, and always-on, lossless token & context optimization.
    37
    18
    3
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AntoniovanDijck/meshmind'

If you have feedback or need assistance with the MCP directory API, please join our Discord server