server-commands-rtk
An MCP server for executing shell commands with automatic RTK-based token reduction (~90%), persistent caching, and comprehensive execution logging.
run_process: Execute shell commands with optional RTK auto-filtering, configurable working directory, timeout, description, and per-call cache bypass. Supports streaming output to avoidmaxBufferlimitations.get_cache_stats: View cache hit/miss counts and total cached entries.clear_command_cache: Wipe all persistently cached command results.cached_commands: List all cached command keys with timestamps.execution_log: Retrieve the last N entries from the append-only JSONL execution log, including metadata like duration, exit code, and RTK filtering status. Supports historical archives.list_archives: List all rotated execution log archive files.write_file: Write files using base64-encoded content to safely handle special characters that could break JSON serialization.resolve_uri: Resolvescheme://pathURIs to absolute file paths using a TOML config or environment variable.
Click on "Deploy 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., "@server-commands-rtklist files in current directory"
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.
commands-rtk
MCP server that executes shell commands via MCP tools - with streaming spawn, automatic RTK token reduction, persistent caching, and full execution logging.
Streaming spawn - uses
spawn(notexec), nomaxBufferceiling, pipes stdout/stderr directlyAuto-RTK - transparently wraps commands with RTK for ~90% token reduction
Timeout + cancellation -
AbortControllercancels stream collection immediately,SIGKILLterminates process treePersistent cache - results cached in
~/.local/share/state/commands-rtk/command-cache.jsonacross sessionsExecution logger - append-only JSONL with auto-rotation, gzip compression, archive listing
Safe file writes -
write_filewith base64 content avoids JSON serialization breakage on special charactersURI resolver -
resolve_uriresolvesscheme://pathto absolute file paths via shared TOML config
Includes
✅ License - This repository contains a LICENSE file
✅ Prompts - This MCP Server includes prompts users can invoke
✅ Resources - This MCP Server includes resources for attaching and managing context data
Related MCP server: Whisper CLI MCP Server
Requirements
Node.js 24+ (ESM,
"type": "module"in package.json)rtk CLI - install via
`curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh`
Installation
npx (no install)
npx commands-rtk # Run MCP server (downloads on demand)
npx commands-rtk setup # Apply one-time patches (rtk fix, etc.)npm (global install)
npm install -g commands-rtk
commands-rtk setup # One-time patch setupFrom source
git clone https://github.com/Ev3lynx727/server-commands-rtk.git
cd server-commands-rtk
npm install
npm run build
npm run setup # One-time patch setup (rebuilds rtk from source if needed)npx (no install, MCP client config)
{
"mcpServers": {
"commands-rtk": {
"command": "npx",
"args": ["commands-rtk"],
"env": {}
}
}
}First run: Run
npx commands-rtk setuponce before first use to apply one-time patches.
Global install (MCP client config)
{
"mcpServers": {
"commands-rtk": {
"command": "commands-rtk",
"args": [],
"env": {}
}
}
}OpenCode
{
"mcp": {
"commands-rtk": {
"type": "local",
"command": ["node", "/path/to/commands-rtk/dist/index.js"],
"enabled": true,
"timeout": 60000
}
}
}Tools
Tool | Description |
| Execute a shell command with RTK auto-filtering |
| Show cache hit/miss counts and entry count |
| Wipe all cached command results |
| List all cached command keys and timestamps |
| Read execution log entries, optionally from archives |
| List rotated |
| Write a file from base64 content (safe for special characters) |
| Resolve |
Schema
How commands-rtk processes an MCP tool call:
The flow: server.ts receives tools/call → Zod.parse() validates → executor.ts spawns with rtk prefix → result cached + logged → JSON-RPC response returned.
Usage
// Auto-RTK (default) - ~90% token reduction
run_process({command: "ls -la"})
// Bypass RTK filtering entirely
run_process({command: "ls -la"})
// Explicitly enable/disable RTK
run_process({command: "ls -la"})
// Override default timeout (60s) per call
run_process({command: "sleep 30", timeout_ms: 5000})
// Set working directory and attach metadata
run_process({
command: "npm test",
cwd: "/path/to/project",
description: "run unit tests",
model_used: "claude-sonnet-4",
timeout_ms: 30000
})
// Force cache bypass
run_process({command: "npm install", clear_cache: true})execution_log
// Tail last 100 entries
execution_log({limit: 100})
// Include rotated archives for full history
execution_log({limit: 500, include_archives: true})write_file
MCP tool parameters are JSON-serialized. Content with quotes, backticks, or long special-character strings can break the JSON framing. Use write_file with base64 encoding:
write_file({
path: "/tmp/output.txt",
content_b64: "SGVsbG8gV29ybGQ="
})resolve_uri
resolve_uri({uri: "headquarters://."})
// { scheme: "headquarters", relativePath: ".", absolutePath: "/home/ev3lynx/headquarters" }
resolve_uri({uri: "datasets://train/run-001.parquet"})
// { scheme: "datasets", relativePath: "train/run-001.parquet", absolutePath: "/home/ev3lynx/datasets/memory-graph/train/run-001.parquet" }Schemes are loaded from ~/.config/uri-resolver/config.toml (primary) with MCP_RESOURCE_ROOTS as fallback. scheme://. resolves to the base directory.
list_archives
list_archives()
// Returns: { archives: ["file1.jsonl.gz", ...], count: 7 }Configuration (rtk-hook.toml)
Section | Key | Default | Description |
|
|
| Default per-command timeout (overridable per call) |
|
|
| Max stdout/stderr collected per command |
|
|
| Entries kept in active log before rotation |
|
|
| Max rotated archive files retained |
|
|
| Compress rotated logs with gzip |
|
|
| Window for deduplicating identical commands |
Example:
[execution]
timeout_ms = 60000
max_buffer_mb = 10
max_log_entries = 1000
max_archives = 50
compress_archives = true
[cache]
debounce_ms = 2000State Files
All runtime state lives under ~/.local/share/state/commands-rtk/:
~/.local/share/state/commands-rtk/
├── command-cache.json # Persistent command cache
└── execution-log.jsonl # Append-only execution logCreated automatically on first run (mkdirSync with recursive: true).
Cache
File:
command-cache.json- persistent JSON, survives server restartKey: SHA-256 hash of
(command + cwd)Stats: Hit/miss counters via
get_cache_statsFlush: Written to disk on every mutation + on SIGTERM/SIGINT
Execution Log
File:
execution-log.jsonl- append-only, one JSON object per lineRotation: When
max_log_entriesreached, half of entries archived. Rotated files land alongside the active log asexecution-log-{timestamp}.jsonl.gzPer-entry metadata:
timestamp,key,command,rtk_filtered,rtk_rewritten,cached,success,exitCode,duration_ms,error_type,stdout/stderr,stdout_lines/stderr_lines,model_used
MCP Resources & URI Resolution
Resource templates and URI resolution share a unified scheme registry loaded from two sources (TOML wins):
Primary:
~/.config/uri-resolver/config.toml— shared with the standalone uri-resolver MCP serverFallback:
MCP_RESOURCE_ROOTSenv var — for deployment-specific overrides
export MCP_RESOURCE_ROOTS='{"headquarters": "~/headquarters"}'Each scheme registers a resource template {scheme}://{path} and is queryable via the resolve_uri tool. Path traversal is denied via startsWith() guard.
Response Format
All tools return JSON:
{
"cached": false,
"key": "sha256-hash",
"command": "echo hello",
"result": {
"success": true,
"stdout": "hello\n",
"stderr": "",
"exitCode": 0,
"duration_ms": 12,
"error_type": null
},
"rtk_filtered": true,
"rtk_rewritten": true
}Error types: timeout, not_found (ENOENT), permission_error (EACCES/EPERM), memory_error (ENOMEM), unknown_error.
Timeout returns exitCode: 124 with message in stderr.
Token Savings
Command | Raw Tokens | RTK Tokens | Savings |
| ~25,000 | ~3,000 | 88% |
| ~50,000 | ~5,000 | 90% |
| ~15,000 | ~500 | 97% |
| ~5,000 | ~200 | 96% |
Environment Variables
Variable | Required | Description |
| No | Custom server root (defaults to directory containing |
| No | Override for |
| No | JSON object mapping scheme names to directory paths (fallback, TOML config is primary) |
| No | Log level ( |
Credit
This project would not work without RTK — the Rust token reducer that filters shell command output for ~90% token savings.
License
MIT
Available Tools
8 toolscached_commandsA
List all cached commands
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It describes a simple read operation with no side effects, which is transparent enough. However, it does not disclose potential behaviors like pagination, data freshness, or access restrictions.
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 (3 words) and front-loaded with the key action and resource. Every word earns its place with zero fluff.
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 parameter-free listing tool, the description is adequate. It tells the agent exactly what the tool does. However, given no output schema or annotations, a bit more context about the return format or scope (e.g., 'all' cached commands) would enhance completeness.
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?
The input schema is empty and coverage is 100%, so the baseline is 4. The description implies no filtering, consistent with the schema. No additional parameter information is needed.
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 'List all cached commands' specifies a clear verb ('List') and resource ('cached commands'), making the tool's purpose immediately obvious. It naturally distinguishes from sibling tools like 'clear_command_cache' and 'get_cache_stats'.
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?
No guidance is provided on when to use this tool versus alternatives like 'get_cache_stats' or 'clear_command_cache'. The description gives no context about prerequisites, conditions, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_command_cacheB
Clear all cached commands
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states the action ('clear') but does not disclose potential side effects (e.g., does it affect running processes? Is it reversible? Are there permission requirements?). This is insufficient for a destructive operation.
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 a single sentence, front-loaded with the core action. It is appropriately concise but could be slightly expanded with context without becoming too long.
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 simplicity (no parameters, no output schema, no annotations), the description is minimally adequate. However, it lacks context about what 'cached commands' are, the scope of clearing (e.g., global or per-session), and whether it affects other tools like 'cached_commands' or 'execution_log'.
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?
There are no parameters, and schema coverage is 100%. The description does not need to add parameter details. It provides the action, which is sufficient for a parameterless tool.
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 'Clear all cached commands' uses a specific verb ('clear') and resource ('cached commands'), clearly indicating the action and scope. It distinguishes from sibling tools like 'cached_commands' (which likely reads or lists cache) and 'get_cache_stats' (which provides statistics).
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?
No guidance on when or when not to use the tool. No mention of prerequisites, side effects, or alternatives. For instance, it might be used after command changes or to free memory, but this is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execution_logC
Get execution log (last N entries, optionally including archives)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| include_archives | No | Include rotated archive files for full history |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so description must convey behavioral traits. It only states 'Get' (read-only) and the option to include archives. No mention of idempotency, access control, rate limits, or potential performance impact of large logs. Minimal disclosure.
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—one sentence fragment conveying core purpose. It is front-loaded and avoids fluff. However, it could be slightly more structured without adding length.
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?
Without an output schema, the description should explain return format or structure. It does not. Additionally, it lacks behavior details (e.g., ordering, default limit). Given the tool's simplicity, more context is needed for proper usage.
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 50% (only include_archives has schema description). The tool description adds explanation for 'limit' (last N entries) and clarifies 'include_archives' (optionally), though the latter is redundant. It provides adequate but not exceptional value beyond the schema.
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?
Description clearly states verb 'Get' and resource 'execution log' with options. It provides a general sense of the tool's purpose, though it could be more specific about the log context (e.g., system vs. process). It partially distinguishes from sibling 'list_archives' by focusing on logs.
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?
No explicit guidance on when to use this tool vs alternatives (e.g., list_archives for archive files). No context about prerequisites or scenarios. The description implies basic usage but fails to set usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cache_statsC
Get cache statistics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description implies a read-only operation but does not explicitly state it. No details on side effects or prerequisites.
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?
Extremely concise (two words), but lacks detail on return value and usage context. Could be slightly expanded without losing conciseness.
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?
No output schema and no description of what statistics are returned. Incomplete for a tool that produces output.
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?
No parameters exist (100% schema coverage), so the description adds no parameter information but is not required to.
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?
Description clearly states the tool retrieves cache statistics, distinguishing it from sibling tools like cached_commands and clear_command_cache. However, it does not specify what type of statistics (e.g., hit rate, size).
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?
No guidance on when to use this tool versus alternatives. The description gives no context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_archivesA
List all rotated log archive files for dataset pipeline
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description is minimal. It does not disclose behavioral traits such as side effects, permissions, or rate limits. The description only states the basic function.
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?
Single sentence, no wasted words. Front-loaded with the main action and resource.
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 is adequate for a simple tool with no parameters and no output schema. However, it lacks detail on what the archive files are or what the output looks like, leaving some ambiguity.
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?
There are no parameters, so schema coverage is 100%. The description adds no param info, but none is needed. Baseline for 0 params is 4.
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 action (list) and the resource (rotated log archive files) with a specific context (for dataset pipeline). It distinguishes from sibling tools which focus on caching and execution.
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?
No guidance on when to use this tool versus alternatives. The description implies usage for listing archives, but no exclusions or context for 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.
resolve_uriA
Resolve a scheme:// URI to an absolute file path. Uses schemes registered via MCP_RESOURCE_ROOTS env var (headquarters://, vaults://, etc.). scheme://. resolves to the base directory.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | URI to resolve, e.g. headquarters://docs/api.md or vaults://. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses key behaviors: resolves to absolute paths, uses registered schemes, and special handling of 'scheme://.' for the base directory. It does not cover error cases or missing schemes, but is adequate for the tool's simplicity.
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 with no wasted words. The most important information is front-loaded, making it easy to parse quickly.
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 tool has only one parameter, no output schema, and low complexity, the description is complete enough. It explains purpose, usage dependency, and edge case (dot for base directory).
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 description coverage is 100%, providing a baseline of 3. The description adds value by giving explicit examples and the special case of 'scheme://.', which enhances understanding beyond the schema.
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 resolves a scheme:// URI to an absolute file path, using a specific verb and resource. It distinguishes itself from siblings which are about commands, cache, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context about when to use (to resolve URIs) and mentions the dependency on MCP_RESOURCE_ROOTS env var. However, it does not explicitly state when not to use or provide alternatives, though siblings are unrelated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_processC
Run shell command. Auto-prefixed with rtk for token minimization (60-90% savings).
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| command | Yes | ||
| model_used | No | Model name that executed this command (for training metadata) | |
| timeout_ms | No | Per-command timeout in milliseconds (overrides server default) | |
| clear_cache | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It mentions auto-prefixing but omits critical details such as whether commands are destructive, output handling, failure modes, or permission requirements. The token saving claim is useful but insufficient.
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 short at two sentences and front-loaded with the action. However, it sacrifices necessary detail for brevity. It is efficient but incomplete, resulting in a mediocre conciseness score.
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 6 parameters, no output schema, and no annotations, the description is severely inadequate. It does not cover parameter meanings, return values, error states, or interaction with sibling tools. The description fails to provide a complete understanding of the tool's capabilities.
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 description coverage is only 33% (2 of 6 parameters have descriptions). The tool description adds no parameter context, leaving most parameters (cwd, command, clear_cache, description) completely unexplained. This is a significant gap.
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 'Run shell command' as a specific verb and resource. While it does not explicitly differentiate from sibling tools like cached_commands or execution_log, the core action is unambiguous.
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 mentions auto-prefixing with rtk for token savings, which is a usage hint, but it provides no guidance on when to use this tool versus alternatives like cached_commands or resolve_uri. No context on prerequisites or best practices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileA
Write a file with base64-encoded content. Use this instead of write/filesystem_write_file when content contains special chars that break JSON serialization.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to output file | |
| content_b64 | Yes | Base64-encoded file content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key behavioral trait of base64 encoding and handling special characters. However, it does not mention other behaviors like overwriting existing files or required permissions, which are reasonable expectations for a file write 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?
Two sentences with no wasted words. The first sentence states the action, the second provides usage guidance. Efficient and 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 simple file write tool with no output schema, the description is complete. It explains what it does, how to use it, and when to prefer it over an alternative. The two parameters are fully described in the schema.
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 both parameters. The description adds context about why base64 encoding is used, which enhances understanding beyond the schema. However, the schema already clearly describes the parameters, so the description adds moderate additional meaning.
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 explicitly states 'Write a file with base64-encoded content.' It clearly identifies the verb (write), resource (file), and distinguishing feature (base64 encoding). It also distinguishes from the sibling tool 'write/filesystem_write_file' by mentioning special character handling.
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 provides explicit guidance: 'Use this instead of write/filesystem_write_file when content contains special chars that break JSON serialization.' This clearly states when to use this tool and offers a specific alternative.
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.
4 tool updates
v0.2.3- Changed
execution_log1 field changed- added
Input schema / properties / include_archivesAdded value: +{ + "default": false, + "description": "Include rotated archive files for full history", + "type": "boolean" +}
- Added
list_archives - Added
resolve_uri - Changed
run_process3 fields changed- added
Input schema / properties / timeout_msAdded value: +{ + "description": "Per-command timeout in milliseconds (overrides server default)", + "type": "number" +} - removed
Input schema / properties / use_rawRemoved value: -{ - "default": false, - "description": "Run raw command without RTK filtering (bypasses auto-RTK)", - "type": "boolean" -} - removed
Input schema / properties / use_rtk_filterRemoved value: -{ - "default": true, - "description": "Auto-wrap with RTK for token-minimized output (default: true)", - "type": "boolean" -}
6 tool updates
v0.2.0- First observed
cached_commands - First observed
clear_command_cache - First observed
execution_log - First observed
get_cache_stats - First observed
run_process - First observed
write_file
TDQS
Scored across 8 tools
Each tool targets a distinct action or resource: cache listing/clearing/stats, log retrieval/archives, URI resolution, process execution, and file writing. No overlapping purposes.
All tool names use consistent snake_case and follow a verb_noun pattern (e.g., list_archives, run_process, write_file). No mixed conventions.
8 tools is well-scoped for a command server utility set. Each tool serves a clear need without excess or deficiency.
Covers core operations (run, write, cache management, logging, URI resolution). Minor gap: no tool to delete or manipulate archive files, but core workflows are covered.
Maintenance
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
- MoneMeeOAuthcom.monemee
Remote MCP server for creating and selling digital products via MoneMee. It lets AI agents create, publish, and sell digital products such as e-books, AI prompt packs, software, courses without a human touching a dashboard. Docs: https://monemee.com/mcp Sign up on Monemee to get a token.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceGive hands to AI. MCP server to run shell commands securely, auditably, and on demand.105GPL 3.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides shell command execution and OpenAI Whisper transcription capabilities for audio files.1MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables coding agents to execute and manage long-running shell commands asynchronously with capabilities for process monitoring, interaction, and lifecycle management.713MIT
- FlicenseBqualityDmaintenanceAn MCP server that enables users to execute arbitrary shell commands on their local machine and receive the output. It provides a terminal tool for running system commands through MCP-compatible clients using the Python SDK.1-