token-filter-mcp
An MCP server that wraps developer tools (shell, file reads, grep, tests, git) and compresses their output to save context window tokens while preserving errors and actionable info.
filtered_shell: Run any shell command with smart/aggressive/passthrough filtering, auto-detecting command type (tests, git, linters, installs) to strip noise and keep errors.
filtered_read: Read files in three modes: full (compact whitespace/license/imports), signatures (declarations only), relevant (focus pattern with ยฑ10 lines context).
filtered_grep: Search regex patterns in directories, results grouped by file/match, deduplicated with [รN] counts, uses ripgrep when available.
smart_test: Execute test commands (Jest/Vitest/pytest/cargo/go) and return only failures with locations, expected vs received, truncated stacks; optional show_passes and coverage.
smart_git: Compact git status/diff/log and action results (commit, push, pull, add, branch) with one-line summaries and filtered hunks.
Smart ADB (in README, not in schema): Android automation via dump/tap/key/type/swipe/long_press/install/logcat operations using locators instead of screenshots.
metrics_summary (README only): Query saved metrics (invocation counts, chars saved, per-tool breakdown) without reading JSONL files.
Configuration: Optional per-project or global JSON config to adjust filtering defaults and per-command overrides.
Filters output from Biome linter, grouping errors by rule and omitting clean files.
Filters output from ESLint linter, grouping errors by rule and omitting clean files.
Provides smart filtering for git operations such as status, diff, log, commit, push, and pull, returning concise summaries.
Supports reading JavaScript files with modes like 'signatures' (only declarations) and 'relevant' (sections matching focus pattern with context).
Filters output from Jest test runner, removing passing tests and displaying only failure details with file location and expected/received values.
Filters output from npm commands, returning a compact summary of packages installed instead of full resolution trees.
Filters output from pytest test runner, showing only test failures with location and expected/received values.
Supports reading Python files with modes like 'signatures' (only declarations) and 'relevant' (sections matching focus pattern with context).
Filters output from Ruff linter, grouping errors by rule and omitting clean files.
Supports reading Rust files with modes like 'signatures' and 'relevant', and filters output from cargo test, showing only test failures.
Supports reading TypeScript files with modes like 'signatures' (only declarations) and 'relevant' (sections matching focus pattern with context).
Filters output from Vitest test runner, showing only test failures with location and expected/received values.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@token-filter-mcprun npm test and show only failures"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐งน token-filter-mcp
Your LLM is wasting 80% of its context window on noise. This fixes that.
An MCP server that sits between your AI coding assistant and its tools, intelligently compressing outputs before they consume your precious context. Longer sessions. Better reasoning. Lower costs.
๐ธ The Problem Nobody Talks About
Every time your AI assistant runs a command, it dumps the entire raw output into its context window:
+ โ src/auth.test.ts (14 tests) โ you don't need this
+ โ src/utils.test.ts (8 tests) โ or this
+ โ src/payments.test.ts (12 tests) โ or this
+ โ src/users.test.ts (10 tests) โ or this
- โ src/orders.test.ts (3 tests) โ THIS is what matters
- โ should validate quantity > 0
- Expected: error
- Received: successThe vast majority of tool output is noise: tests that pass, git headers, resolution trees, progress bars, whitespace. ~80% of what goes into the context window is information the LLM will never act on.
That noise eats your context window, degrades reasoning quality, and costs you money.
Related MCP server: claw-tsaver
โก The Solution
โ Without token-filter-mcp
Context fills up fast
LLM loses track of conversation
Paying for tokens it ignores
Sessions hit context limit early
Reads 14 lines to find 1 failure
โ With token-filter-mcp
Context stays lean
LLM maintains coherence longer
Only paying for useful tokens
Sessions last significantly longer
Reads exactly the failure, acts immediately
token-filter-mcp intercepts every tool output and applies intelligent, context-aware filtering โ returning only what the LLM actually needs to make decisions.
No configuration needed. No changes to your workflow. Just plug it in.
๐ฏ Real Results
Average savings across real-world tool outputs: 60-90% fewer tokens consumed
๐ง How It Works
flowchart LR
A[๐ค LLM Agent] -->|tool call| B[๐งน token-filter-mcp]
B -->|execute| C[๐ป System]
C -->|raw output| B
B -->|filtered output| A
style B fill:#7c3aed,stroke:#5b21b6,color:#fff
style A fill:#2563eb,stroke:#1d4ed8,color:#fff
style C fill:#059669,stroke:#047857,color:#fff1๏ธโฃ Detect โ Identifies what command was run (test runner? git? linter?)
2๏ธโฃ Execute โ Runs the command and captures full output
3๏ธโฃ Filter โ Applies the optimal strategy for that command type
4๏ธโฃ Verify โ Ensures no errors or actionable info was removed
5๏ธโฃ Return โ Sends compressed output to the LLM
๐จ Contextual Detection
The server doesn't blindly truncate. It understands what you ran and applies the right strategy:
It detects... | And does this... |
๐งช Test runners (jest, vitest, pytest, cargo test, go test) | Strips passing tests. Shows only failures with location + expected/received |
๐ | Converts to |
๐ | Removes repeated headers, keeps only hunks with ยฑ3 context |
๐ | One-liner: |
๐ Linters (tsc, eslint, biome, ruff) | Groups errors by rule/file, omits clean files |
๐ฆ Package installs | Returns |
โ Unknown commands | Conservative: deduplicate + truncate to 100 lines |
๐ก๏ธ Zero Information Loss
The #1 design principle: never hide an error.
โ
Lines matching error patterns (FAIL, Error:, TypeError, panic...) โ NEVER removed
โ
Non-zero exit codes โ full error output preserved
โ
Parser can't understand format โ returns raw output
โ
passthrough mode available for when you need everything๐ Installation
Add this to your MCP client config โ that's it:
{
"mcpServers": {
"token-filter": {
"command": "npx",
"args": ["-y", "token-filter-mcp"]
}
}
}npm install -g token-filter-mcp{
"mcpServers": {
"token-filter": {
"command": "token-filter-mcp"
}
}
}๐ Where does the config go?
Client | Config file |
Kiro |
|
Claude Desktop |
|
Cursor |
|
Any MCP client | Wherever it reads |
๐ง 7 Tools, One Purpose
{ "command": "npm test", "filter_level": "normal" }Level | Behavior |
| Smart filtering with sensible defaults |
| 50% additional reduction for tight context budgets |
| Raw output when you need everything (capped at 200KB) |
{ "path": "src/app.ts", "mode": "signatures" }Mode | What it returns |
| Content minus blank blocks, license headers, grouped imports |
| Only declarations โ no implementation bodies |
| Only sections matching |
Supports: TypeScript, JavaScript, Python, Rust, Go
{ "pattern": "useState", "path": "src", "group_by": "file", "max_results": 20 }Results grouped by file, deduplicated, with context lines. Uses ripgrep when available.
{ "command": "npm test" }All pass:
[PASS] 47/47 tests passed (3.2s)Failures:
[PASS] 44/47 tests passed
[FAIL] 3 failures:
1. src/auth.test.ts:42 โ "should refresh token"
Expected: 200
Received: 401
2. src/payments.test.ts:89 โ "should validate 3DS"
TypeError: Cannot read property 'status' of undefined
at processPayment (src/payments.ts:156)Auto-detects: Jest, Vitest, pytest, cargo test, go test
{ "operation": "status" }Operation | What you get |
|
|
| Only hunks with changes, no header spam |
|
|
|
|
|
|
|
|
{ "operation": "dump", "device": "emulator-5554" }Operation | What it does |
| Compact accessibility tree: resource-id, text, clickable, tap-center |
| Resolve |
| Tap raw coordinates (last resort, e.g. a map/canvas view) |
| Symbolic |
| Send text to the focused field |
| Swipe from |
| Long-press a locator ( |
| Install an APK from a local path / remove by package name |
| Recent logcat output pre-filtered to noteworthy lines (error/warning/fatal/assert level, plus known failure patterns) |
Replaces the "screenshot โ vision โ guess coordinates โ tap โ screenshot again" loop with cheap structured text.
{ "tool": "smart_git", "limit": 100 }Aggregates ~/.config/token-filter-mcp/metrics.jsonl (plus rotated history) into invocation count, raw vs filtered chars, overall savings %, and a per-tool breakdown sorted by chars saved โ without reading the JSONL file by hand.
โ๏ธ Configuration (Optional)
Works great out of the box. Customize only if you want to.
{
"defaults": {
"max_output_lines": 100,
"test_show_passes": false,
"git_log_max": 15,
"diff_context_lines": 3,
"dedup_threshold": 3
},
"commands": {
"my-custom-script.sh": { "filter_level": "passthrough" }
},
"metrics": { "enabled": true }
}Same schema. Project config overrides global. Global overrides built-in defaults.
๐ Built-in Observability
When enabled, every invocation is logged to ~/.config/token-filter-mcp/metrics.jsonl:
{
"tool": "smart_test",
"command": "npm test",
"rawChars": 5200,
"filteredChars": 480,
"savingsPercent": 90.7,
"strategy": "test_result_filter",
"filterDurationMs": 3,
"timestamp": "2026-06-30T15:30:00Z"
}Auto-rotated at 5MB, max 5 history files.
What it tracks:
Real savings per tool and command type
Which filters are most effective
Passthrough re-invocations (signal that a filter might be too aggressive)
Query it anytime with the metrics_summary tool instead of reading the JSONL by hand.
๐ก๏ธ Guarantees
Guarantee | Detail |
๐ Zero loss | Errors, test failures, and changes are never filtered out |
โก < 50ms overhead | Filtering adds negligible latency vs raw execution |
๐ช Safe fallback | Unknown commands get conservative treatment, not silence |
๐ No lock-in | Standard MCP protocol โ works with any compliant client |
๐ No network | Everything runs locally over stdio. Your code never leaves your machine |
๐ ๏ธ Development
git clone https://github.com/VMexicano/token-filter-mcp
cd token-filter-mcp
npm install
npm run build
npm test # 57 tests, all passingThe best token is the one you never spend.
Made with ๐ by Victor Mexicano
Available Tools
5 toolsfiltered_grepA
Search for regex patterns in a directory with results grouped by file or match, deduplicated with [รN] prefix. Uses ripgrep when available, falls back to native recursive search.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory path to search in (required) | |
| exclude | No | Glob pattern for files/dirs to exclude (default: node_modules,dist,.git) | |
| include | No | Glob pattern for files to include (default: *) | |
| pattern | Yes | Regex pattern to search for (required) | |
| group_by | No | Group results by file or by match content (default: file) | |
| max_results | No | Maximum number of results to return (default: 20) | |
| context_lines | No | Number of context lines around each match (default: 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It clearly discloses deduplication with '[รN] prefix', grouping behavior, and fallback mechanism from ripgrep to native search. This goes beyond basic tool purpose. However, it does not mention potential performance implications, permissions needed, or encoding/error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The first sentence front-loads the core action and key features. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description explains grouping and deduplication but does not detail the return format (e.g., structure of results, how file paths are presented). It also omits default parameter behaviors for exclude/include/max_results/context_lines beyond the schema. Adequate but has gaps for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description adds meaning beyond schema by explaining deduplication and grouping, which relates to the 'group_by' and 'pattern' parameters. However, it does not add specific details about each parameter (e.g., what 'exclude' globs are defaulted). Baseline 3 is appropriate due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search for regex patterns in a directory' with specific verb ('Search') and resource ('regex patterns in a directory'). It adds distinctive behaviors: grouping, deduplication, and fallback to ripgrep. Sibling tools like filtered_read and filtered_shell have different purposes, making this tool distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool over alternatives. It implies usage for regex searching but offers no guidance on when not to use it or comparisons with sibling tools like filtered_read or filtered_shell. However, the context of sibling tools suggests the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filtered_readA
Read a file with intelligent reduction. Modes: "full" (collapses blanks, licenses, imports), "signatures" (extracts declarations only), "relevant" (focus pattern with ยฑ10 lines context).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Reading mode: full (optimized), signatures (declarations only), or relevant (focus-based) | |
| path | Yes | Absolute or relative path to the file to read | |
| focus | No | Pattern to search for in relevant mode (string or regex) | |
| end_line | No | End line number (1-based, inclusive) for partial reads | |
| start_line | No | Start line number (1-based) for partial reads |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains the three modes and their behaviors (e.g., collapsing blanks for 'full', extracting declarations for 'signatures', focusing with ยฑ10 lines for 'relevant'), but does not mention default behavior when mode is omitted or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first clearly states the purpose, second lists modes. No redundant words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers modes well but does not explain interactions between parameters (e.g., start_line/end_line and modes), default mode if unspecified, or behavior with directories. Given no output schema and 5 parameters, additional context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minor detail beyond the schema (e.g., '+10 lines context' for relevant mode), but the schema already provides good descriptions for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a file with intelligent reduction and lists three distinct modes, making the purpose specific and differentiating it from sibling tools like filtered_grep and filtered_shell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (e.g., 'for reading files with reduction') but does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filtered_shellA
Execute a shell command with intelligent output filtering. Detects command type and applies the optimal filter strategy to reduce token consumption while preserving all actionable information (errors, failures, changes).
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory | |
| command | Yes | Command to execute | |
| timeout_ms | No | Timeout in milliseconds | |
| filter_level | No | Filter aggressiveness |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It discloses the filtering strategy and preservation of actionable info, but fails to mention potential side effects of arbitrary command execution (e.g., destructive changes, required permissions, or security risks). This is a significant gap for a command execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise โ two sentences front-loaded with the core action and key benefit. Every phrase contributes meaning without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and benefit but lacks details on parameter usage (especially filter_level), output format (no output schema), and safety warnings. It is minimally adequate for a 4-parameter tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context about filtering but does not elaborate on the filter_level enum values or how to choose them. It adds some value but not enough to exceed baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a shell command with intelligent output filtering. It specifies the key differentiator (detects command type, applies optimal filter) and distinguishes from siblings like filtered_grep (focused on grep) and smart_git (git-specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for general shell commands with filtering to reduce tokens, but provides no explicit guidance on when to use this tool versus alternatives like filtered_grep or smart_git. No when-not or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_gitA
Execute git operations with compact, optimized output. Supports: status (compact summary), diff (filtered hunks), log (one-line format), and action commands (commit/push/pull/add/branch with minimal confirmation).
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory | |
| args | No | Additional arguments for the git command | |
| operation | Yes | Git operation to execute | |
| filter_level | No | Filter aggressiveness. Use "passthrough" to get the full raw git output without filtering |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides behavioral context: compact output, filtered hunks, one-line log, minimal confirmation. This goes beyond the input schema by describing output formats and confirmation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single paragraph with a clear list of operations. Every sentence adds value, and the key information is front-loaded: 'Execute git operations with compact, optimized output'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the variety of operations and no output schema, the description covers each operation's output format. It could mention more about confirmation prompts or error handling, but overall it is complete enough for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description adds significant meaning: it explains each operation's output style (e.g., 'compact summary' for status, 'filtered hunks' for diff) and notes the filter_level parameter's 'passthrough' for raw output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute git operations with compact, optimized output' and lists specific operations (status, diff, log, commit, etc.), distinguishing this tool from siblings like filtered_shell by emphasizing optimized output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (for git operations needing compact output) by listing supported operations and their formats. However, it does not explicitly exclude usage or mention alternatives, though siblings hint at different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_testA
Execute a test command and return structured, actionable output. Shows only failures by default (name, location, error, expected/received, truncated stack). Detects Jest/Vitest/pytest/cargo-test/go-test automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory | |
| command | Yes | Test command to execute | |
| show_passes | No | Include individual passing tests in output | |
| filter_level | No | Filter aggressiveness. Use "passthrough" to get the full raw test output without filtering | |
| show_coverage | No | Include coverage table if present |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool shows only failures by default, includes fields like expected/received and truncated stack, and auto-detects test frameworks. However, it does not mention whether the command execution is read-only or could have side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences covering purpose, default behavior, and auto-detection. Every word adds value, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no output schema and no annotations, the description provides solid context: default output, auto-detection, and structured format hints. It could be more explicit about return structure, but is adequate for an agent to invoke correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description adds minimal extra parameter context beyond the schema (e.g., default show_passes behavior is implied). As a result, it meets the baseline but does not significantly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a test command and returns structured, actionable output. It specifies default behavior (shows only failures) and lists detected test frameworks, distinguishing it from sibling tools like filtered_grep or smart_git which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for running test commands, but does not explicitly state when to use this tool versus alternatives like filtered_shell for arbitrary commands or when to prefer other tools. The context from sibling names helps but the description lacks explicit usage guidance.
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.
5 tool updates
v1.0.2- First observed
filtered_grep - First observed
filtered_read - First observed
filtered_shell - First observed
smart_git - First observed
smart_test
TDQS
Each tool targets a distinct operation: grep (search), read (file reading), shell (command execution), git (version control), test (test execution). No overlap in purpose.
Tools use two different prefixes: 'filtered_' for grep/read/shell and 'smart_' for git/test. While each group is internally consistent, the mix of prefixes reduces overall consistency.
With 5 tools, the server covers essential development operations without being bloated. Each tool serves a clear, non-redundant purpose.
The tool set covers search, reading, shell execution, git, and testingโcore developer tasks. Minor gaps like file writing or editing are acceptable given the focus on token-efficient inspection.
Maintenance
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
The MCP gateway with an EU-hosted, persistent memory layer that shrinks your token bill.
Multiple MCP tools, persistent graph memory, token-saving data pointers, and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA meta-server that aggregates multiple MCP servers into a single interface, reducing token usage by 98%+ through progressive tool discovery and direct code execution that processes data between tools without consuming context window space.1610Apache 2.0
- AlicenseAqualityCmaintenanceAn MCP server that helps AI agents reduce token usage by compressing, summarizing, and managing conversation/context data more efficiently.11MIT
- AlicenseCqualityAmaintenanceAn MCP server that filters and compresses context by 80-90% before sending to an LLM, using code knowledge graphs and compression.202MIT
- AlicenseAqualityCmaintenanceAn MCP server that reduces AI API costs by up to 97% through token measurement, compression, caching, and pruning, all without changing prompts.101Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/VMexicano/token-filter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server