MCP Enhanced Server
Allows deploying the MCP server to Cloudflare Workers, utilizing D1 database for task management and environment variables for configuration.
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., "@MCP Enhanced Serverread the file src/index.ts"
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.
MCP Enhanced Server v2.0.0
Enhanced MCP (Model Context Protocol) Server with full 2025-03-26 specification support:
Tools - With annotations, outputSchema, structuredContent, resource_link
Resources - URI-identified data with subscriptions and list change notifications
Prompts - Templated messages and workflows with argument schemas
Elicitation - Server-initiated user input requests
Tasks - Async long-running operations with progress tracking
Streamable HTTP - Production-ready HTTP transport with session management
Auth - Bearer token authentication for remote deployments
Origin Validation - DNS rebinding attack prevention
Quick Start
npm install
npm run build
npm startRelated MCP server: Advanced MCP HTTP Server
Transport Modes
Stdio (default)
npm startStreamable HTTP
MCP_TRANSPORT=http MCP_PORT=3000 npm startStreamable HTTP with Auth
MCP_TRANSPORT=http MCP_PORT=3000 MCP_AUTH_TOKEN=your-secret-token npm startFeatures
Resources
Resource | URI | Description |
Server Info |
| Server name, version, features |
Config Info |
| Transport, auth, environment |
Project Files |
| Template-based file access |
Prompts
Prompt | Description | Arguments |
| Review code quality | code, language |
| Explain code behavior | code, detail_level |
| Generate unit tests | code, framework |
| Debug code errors | code, error |
Tools
Tool | readOnly | destructive | idempotent | Description |
| ✓ | ✗ | ✓ | Read file contents |
| ✗ | ✓ | ✓ | Write file (overwrites) |
| ✓ | ✗ | ✓ | List directory contents |
| ✗ | ✓ | ✗ | Delete a file |
| ✓ | ✗ | ✓ | Regex search in code |
| ✗ | ✓ | ✗ | Execute shell command |
| ✓ | ✗ | ✓ | Request user confirmation |
| ✓ | ✗ | ✓ | Request user input |
| ✓ | ✗ | ✓ | Get async task status |
| ✗ | ✓ | ✓ | Cancel a running task |
| ✓ | ✗ | ✓ | List all tasks |
| ✗ | ✗ | ✗ | Start batch processing |
| ✓ | ✗ | ✓ | Weather data (structured output) |
| ✓ | ✗ | ✓ | System information (structured output) |
| ✓ | ✗ | ✓ | List resources as resource links |
Environment Variables
Variable | Default | Description |
|
| Transport: |
|
| HTTP port |
|
| HTTP host |
| - | Bearer token for auth (optional) |
Cloudflare Workers Deployment
Live deployment: https://mcp-enhanced-server.catnip-haze.workers.dev
Health:
GET /healthMCP endpoint:
POST /mcp(JSON-RPC 2.0)MCP info:
GET /mcp
See cloudflare/ directory for Workers deployment with D1 database.
cd cloudflare
npm install
wrangler d1 create mcp-enhanced-tasks
# Update database_id in wrangler.toml
wrangler d1 execute mcp-enhanced-tasks --file=src/schema.sql
wrangler deployWorkers Environment Variables
Set via Cloudflare Dashboard or wrangler secret put:
MCP_AUTH_TOKEN- Authentication tokenMCP_ALLOWED_ORIGINS- Comma-separated allowed origins
Architecture
src/
├── index.ts # Main entry, server setup, all features
├── tools/
│ ├── annotations.ts # Tool Annotation type definitions
│ └── registry.ts # Tool registry with Zod validation
├── resources/
│ ├── manager.ts # Resource lifecycle manager
│ └── tools.ts # Resource tools
├── prompts/
│ ├── manager.ts # Prompt lifecycle manager
│ └── builtin.ts # Built-in prompt templates
├── elicitation/
│ ├── manager.ts # Elicitation request/response manager
│ └── tools.ts # Elicitation tools
└── tasks/
├── manager.ts # Async task lifecycle manager
└── tools.ts # Task toolsDebug
npx @modelcontextprotocol/inspector node dist/index.jsAvailable Tools
15 toolsbatch_processB
Start a batch processing task. Returns a task ID for polling.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Array of items to process | |
| operation | Yes | Operation to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is mutable and non-idempotent; description adds that it is asynchronous (returns task ID for polling). However, no details on side effects, rate limits, or required permissions.
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 efficiently conveys purpose and return value. No wasted words.
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; description only says 'Returns a task ID' without format or linking to task_status/task_cancel tools. Lacks details on polling mechanism and cancellation.
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 already has descriptions for both parameters (items, operation) with enum values. Description adds no further semantic information beyond what schema provides.
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 starts a batch processing task and returns a task ID for polling, distinguishing it from sibling tools like task_status (for polling) and task_list (for listing).
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 like run_command or search_code. The description implies asynchronous usage via polling but does not exclude or compare to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_actionARead-onlyIdempotent
Request user confirmation before a destructive or important action.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Description of the action requiring confirmation | |
| details | No | Additional details about the action | |
| riskLevel | No | Risk level of the action |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds context that the action being confirmed is destructive/important, but it does not explain how the confirmation is processed (e.g., blocking, return value).
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, clear sentence with no unnecessary words or information, being maximally concise.
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's simplicity and full schema coverage, the description is adequate but could be improved by mentioning the return value (e.g., whether the confirmation was granted).
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%, so the schema already documents all three parameters. The description adds no additional semantic meaning beyond what the parameter descriptions provide.
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's purpose: requesting user confirmation before a destructive or important action. It distinguishes itself from sibling tools (like file operations or task management) that don't involve user confirmation.
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 destructive/important actions but does not provide explicit guidance on when to use it versus alternatives, nor does it specify 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.
delete_fileADestructive
Delete a file from the local filesystem. DESTRUCTIVE and NON-IDEMPOTENT.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true, readOnlyHint=false, idempotentHint=false. Description repeats 'DESTRUCTIVE and NON-IDEMPOTENT' but adds little beyond that. No contradiction.
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?
One sentence plus two capitalized keywords. No wasted words, 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?
Simple tool with one parameter, full annotation coverage. Description is sufficient for use. Could mention non-recoverability but not necessary.
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 a clear description for 'path'. Description adds no extra parameter detail 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?
Clearly states the action 'delete' and resource 'file from the local filesystem'. Distinguishes from sibling tools like read_file, write_file, list_directory.
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?
Implicitly warns about destructiveness but does not explicitly state when to use or not use. No alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weatherARead-onlyIdempotent
Get current weather data for a location
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | City name or zip code |
Output Schema
| Name | Required | Description |
|---|---|---|
| humidity | Yes | Humidity percentage |
| conditions | Yes | Weather conditions description |
| temperature | Yes | Temperature in celsius |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description ('Get current weather data') aligns with these but adds no additional behavioral context beyond what annotations disclose.
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?
One concise sentence, front-loaded with key action, no unnecessary words or repetition. Every word earns its place.
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 simple tool (1 param, no nested objects, output schema exists), the description is complete. It covers what the tool does and the required input, and the output schema handles return value details.
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 'City name or zip code' description. The tool description adds no extra meaning beyond what the schema already provides for the single 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 verb (Get), resource (weather data), and context (current, for a location). It distinguishes from sibling tools that are file or system 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?
No explicit guidance on when to use or alternatives. The context of sibling tools implies it's for weather queries, but no exclusion criteria or when-not-to-use hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_available_resourcesARead-onlyIdempotent
List all available MCP resources as resource links
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that the output is 'resource links', which is helpful but does not disclose any additional behavioral traits beyond what annotations provide.
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 clear sentence with no wasted words. It is front-loaded with the action and provides the necessary information succinctly.
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 list operation with no parameters and good annotations, the description is complete. It explains the output format ('resource links') even though there is no output schema, and no additional context is needed.
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 tool has no parameters, and schema description coverage is 100%. Per guidelines, baseline for 0 parameters is 4. The description correctly implies no inputs are 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 available MCP resources as resource links' clearly states the action (list), the resource (MCP resources), and the output format (resource links). It distinguishes itself from sibling tools like task_status or file operations, 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 does not provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of prerequisites, exclusions, or context where this tool is preferred over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryARead-onlyIdempotent
List the contents of a directory
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the directory to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint=true, so safety profile is well covered. The description adds no additional behavioral context beyond what's already clear.
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 fluff. Every word earns its place. Ideal conciseness for a simple tool.
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's simplicity, rich annotations, and single parameter, the description is complete. No missing context needed for correct use.
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 has 100% coverage, and the description does not add extra meaning beyond the schema's parameter description ('Absolute path to the directory to list'). Baseline 3 is appropriate.
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 and resource: 'List the contents of a directory'. It is specific and distinguishes from sibling tools like read_file (which reads file content).
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 or avoid this tool versus alternatives. However, the use case is straightforward and implicitly clear from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileARead-onlyIdempotent
Read the contents of a file from the local filesystem
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file to read | |
| encoding | No | File encoding (default: utf-8) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'local filesystem' context but does not disclose any additional behavioral traits such as error handling, path constraints, or encoding defaults beyond what the schema provides. No contradictions with annotations.
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, well-structured sentence with no wasted words. It is front-loaded with the core purpose and is appropriately sized for a simple tool.
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's simplicity (read a file), the rich annotations (readOnlyHint, idempotentHint) and full schema coverage, the description is adequate. No output schema is needed as return values are implied. It could mention the return format or size limits, but overall it is sufficiently complete.
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 has 100% description coverage for both parameters (path and encoding). The description does not add any new meaning beyond what the schema already provides. Baseline 3 is appropriate as the schema does the heavy lifting.
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 'Read the contents of a file from the local filesystem', specifying the action (read), resource (file), and scope (local filesystem). It effectively distinguishes this tool from siblings like write_file, delete_file, and list_directory.
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 no explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when not to use it or comparison to siblings. Usage is implied but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_inputARead-onlyIdempotent
Request additional input from the user during tool execution.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The question to ask the user | |
| choices | No | Available choices when inputType is 'choice' | |
| inputType | Yes | Type of input expected |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds little beyond 'during tool execution', lacking details on side effects, permissions, or user interaction lifecycle. Minimal extra value.
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, front-loaded with core purpose. No wasted words; highly efficient.
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 no output schema and simple purpose, the description is adequate but lacks details on how the user's input is used or what happens next, reducing 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?
Schema coverage is 100%, so baseline 3. Description does not add additional meaning beyond what the schema already provides for the parameters.
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 action (request) and resource (additional input from user), using specific verb and noun. It distinguishes itself from sibling tools like confirm_action, which is for confirmations.
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?
Description implies the tool is for interactive input during tool execution but does not provide explicit when-to-use or when-not-to-use guidance, nor alternatives. Slightly vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_commandBDestructive
Execute a shell command. DESTRUCTIVE operation with side effects.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory for the command | |
| command | Yes | The command to execute | |
| timeout | No | Timeout in milliseconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and idempotentHint=false. The description adds 'DESTRUCTIVE operation with side effects,' which reinforces but does not significantly extend beyond the annotations. It doesn't disclose additional traits like execution environment, permissions, or potential consequences.
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 purpose, second warns about destructiveness. Efficient and front-loaded. Minor improvement possible by structuring with bullet points for clarity, but no wasted text.
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 exists, so the description should clarify return values (e.g., stdout, stderr, exit code). It does not mention what the command returns or how errors are handled. With three parameters and destructive behavior, the description is insufficiently complete.
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 three parameters (cwd, command, timeout). The description does not add any parameter-specific meaning beyond what the schema already provides, so it meets the baseline without adding extra value.
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 a shell command,' which is a specific verb-resource pair. It also highlights the destructive nature, helping distinguish it from sibling tools like read_file or list_directory. However, it doesn't elaborate on the scope (e.g., arbitrary vs. permitted commands).
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. Given siblings like write_file, delete_file, and task_list, the description should indicate that run_command is for executing arbitrary shell commands with side effects, but it does not explicitly state when not to use it or provide criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeBRead-onlyIdempotent
Search for a pattern in code files using regex
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Regex pattern to search for | |
| directory | Yes | Directory to search in | |
| maxResults | No | Maximum number of results | |
| filePattern | No | Glob pattern for file filtering |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds 'using regex' but that is redundant with the schema. It does not disclose additional behavioral traits like whether results are line-based or file-based, or if there are limits on pattern complexity.
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, clear sentence with no unnecessary words. It is front-loaded with the main action. Could be slightly more structured by indicating expected 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?
Without an output schema, the description does not explain what the tool returns (e.g., matching lines, file paths). Given the tool's complexity (4 parameters, regex), this missing information reduces 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?
Schema coverage is 100%, so all parameters are documented in the schema. The description mentions 'using regex' which corresponds to the pattern parameter but adds no further meaning 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 searches for a pattern in code files using regex. It distinguishes from siblings like read_file (reads a file's content) and list_directory (lists files) by focusing on content search. However, it does not specify the output format (e.g., matching lines, file paths).
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 no guidance on when to use this tool versus alternatives like read_file or grep commands. It does not specify prerequisites or scenarios where regex search is appropriate over other methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoBRead-onlyIdempotent
Get system information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uptime | Yes | |
| platform | Yes | |
| nodeVersion | Yes | |
| serverVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which the description does not contradict or expand upon. The description adds no additional behavioral context (e.g., what 'system information' includes or potential performance impact).
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 with no waste. While adequate, it could be slightly more descriptive without being verbose. It is appropriately 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?
Given the tool has no parameters and an output schema is present, the description is minimally adequate. However, it does not clarify what 'system information' encompasses, leaving the agent to infer from the output 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?
There are zero parameters, so schema coverage is 100% by default. The description adds no parameter info, but the baseline for no parameters is 4, as per guidelines.
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 'Get system information' clearly states the verb (get) and resource (system information), which is distinctive among sibling tools like task_status, read_file, etc. It's a specific and unambiguous action.
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. While the tool is simple, the description could include context like 'Use this to retrieve system-level details' to differentiate from other query tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_cancelADestructiveIdempotent
Cancel a running async task
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The task ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and idempotent behavior, but the description adds no new behavioral details beyond stating the action.
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 fluff, 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?
Adequate for a simple tool with one parameter, but lacks details on return value or confirmation of cancellation.
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%, so the description does not need to add parameter semantics; it correctly relies on 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 verb 'cancel' and the resource 'running async task', distinguishing it from sibling tools like task_status and task_list.
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; missing context such as prerequisites or conditions for cancellation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_listARead-onlyIdempotent
List all tasks and their statuses
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that it returns statuses, which is consistent but does not disclose additional behavioral traits like pagination or ordering beyond what annotations imply.
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 with no wasted words. It is front-loaded and directly states the purpose.
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 no parameters, no output schema, and annotations cover safety, the description is complete for its simplicity. It clearly states what the tool does.
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 tool has no parameters, and the schema coverage is 100%. Baseline 4 is appropriate as the description does not need to add parameter details.
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 uses a specific verb 'list' and clearly identifies the resource 'all tasks' and the return information 'their statuses'. It effectively differentiates from sibling tools like 'task_status' and 'read_file' by indicating a broad listing operation.
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 such as 'task_status' for a single task query. The description does not specify any exclusions or context-appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_statusBRead-onlyIdempotent
Get the status of an async task
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The task ID to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive; description adds no further behavioral details (e.g., error handling, status values).
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, front-loaded, but could be expanded with key details 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?
Simple tool with one parameter and no output schema; description covers basic purpose but lacks info on return values or possible statuses.
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 covers 100% of parameters; description does not add extra meaning beyond the schema's description of taskId.
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 name and description clearly state the tool gets the status of an async task, distinguishing it from siblings like task_list and task_cancel.
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; no context about async task lifecycle or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileADestructiveIdempotent
Write content to a file on the local filesystem. DESTRUCTIVE - overwrites existing files.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file to write | |
| content | Yes | Content to write to the file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by specifying that writing overwrites existing files. Annotations already provide destructiveHint, readOnlyHint, and idempotentHint, but the description reinforces the key behavioral trait.
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: one sentence stating purpose plus a clear warning. Every word earns its place.
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 tool with two parameters and no output schema, the description covers the core purpose and critical behavioral note (destructive overwrite). No necessary information is missing.
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 additional semantics beyond the input schema, which already describes both parameters (path and content) with complete coverage. Description does not expand on format or constraints.
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 (Write), resource (file), and location (local filesystem), distinguishing it from sibling tools like read_file and delete_file.
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?
Explicitly warns about destructive behavior (overwrites existing files), providing clear context. Could be improved with explicit alternatives for appending or conditional writing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose, but the presence of get_weather and system_info alongside file and task management tools creates ambiguity about the server's core domain, potentially confusing an agent.
Most tools use a verb_noun pattern (e.g., read_file, list_directory), but several tools like task_status and system_info use noun_noun, breaking the pattern. The mix is readable but inconsistent.
15 tools is a reasonable count, but the inclusion of get_weather and system_info seems extraneous for the implied focus on file and task management, making the set feel slightly over-scoped.
File operations lack create directory, move, and copy; task management lacks a create_task tool (tasks are only created via batch_process). These gaps could cause agent failures in common workflows.
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
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Project management MCP for AI agents with safe task reads and writes.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA secure Model Context Protocol server providing HTTP endpoints for AI agent tool execution, including file system operations, shell commands, and LLM-based code generation.1
- FlicenseNot gradedqualityBmaintenanceAn HTTP-based MCP server that provides filesystem tools and code analysis, enabling LLMs to read, write, list files, and analyze code securely.1
- AlicenseAqualityBmaintenanceProvides LLMs with local filesystem operations (read/write files, list directories) and command execution via MCP, enabling file management and task automation within AI clients.715ISC
- FlicenseBqualityCmaintenanceProvides tools for file system operations and text generation using OpenAI-compatible models via the Model Context Protocol, supporting both stdio and HTTP transports.6
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/21967201/mcp-enhanced-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server