Skip to main content
Glama

Edit-MCP: Model Context Protocol Server for Microsoft Edit

Edit-MCP is a Model Context Protocol (MCP) server that integrates with Microsoft's Edit tool to provide advanced file editing capabilities to AI systems. It follows a hybrid architecture that combines direct file system operations for performance with Microsoft Edit integration for complex editing tasks.

Overview

The Edit-MCP server acts as a sophisticated coordinator between AI systems and file editing operations. It exposes a standardized MCP interface that allows AI models to:

  • Read and write files

  • Search and replace text

  • Format code

  • Perform complex editing operations

  • Coordinate multi-file edits

  • And more...

Related MCP server: MCP Chat CLI

Architecture

Edit-MCP follows a hybrid architecture with the following components:

1. Core MCP Server

  • Handles MCP protocol communication

  • Routes operations to appropriate subsystems

  • Manages file state and metadata

  • Coordinates between multiple Edit instances

  • Provides caching and optimization

2. File System Manager

  • Performs direct file operations for simple tasks

  • Handles basic CRUD operations

  • Provides text search and simple find/replace

  • Manages file metadata operations

  • Supports batch operations across multiple files

3. Edit Instance Manager

  • Manages Microsoft Edit processes for complex operations

  • Handles complex editing scenarios

  • Coordinates multi-file operations

  • Manages Edit's TUI interactions programmatically

4. Operation Router

  • Decides which subsystem handles each operation

  • Routes simple operations to File System Manager

  • Routes complex operations to Edit Instance Manager

  • Coordinates hybrid operations between both subsystems

Installation

Prerequisites

  • Node.js 16 or higher

  • Microsoft Edit installed and available in your PATH

Install from Source

# Clone the repository
git clone https://github.com/mixelpixx/edit-mcp.git
cd edit-mcp

# Install dependencies
npm install

# Build the project
npm run build

Usage

Starting the Server

You can start the Edit-MCP server using either stdio or HTTP transport:

# Start with stdio transport (for direct integration with AI systems)
npm run stdio

# Start with HTTP transport (for web-based integration)
npm run http

Command Line Options

Usage: edit-mcp [options]

Options:
  -V, --version                output the version number
  -p, --port <port>            Port to listen on for HTTP transport (default: "3000")
  -e, --edit-path <path>       Path to the Edit executable
  -m, --max-instances <number> Maximum number of Edit instances (default: "5")
  -t, --timeout <milliseconds> Timeout for Edit instances in milliseconds (default: "300000")
  -c, --config <path>          Path to configuration file
  -d, --debug                  Enable debug logging
  -s, --stdio                  Use stdio transport instead of HTTP
  -h, --help                   display help for command

Configuration

You can configure Edit-MCP using a JSON configuration file:

{
  "editExecutable": "/path/to/edit",
  "maxEditInstances": 5,
  "instanceTimeout": 300000,
  "simpleOperationThreshold": 1000,
  "complexityFactors": {
    "fileSize": 0.3,
    "operationType": 0.4,
    "contextRequirement": 0.3
  }
}

Available Tools

Edit-MCP provides the following tools:

File System Tools

  • read_file: Read the contents of a file

  • write_file: Write content to a file

  • list_files: List files in a directory

  • find_in_file: Find occurrences of a pattern in a file

Edit Tools

  • format_code: Format code in a file

  • complex_find_replace: Perform advanced find and replace operations

  • interactive_edit_session: Start an interactive editing session

Hybrid Tools

  • smart_refactor: Intelligently refactor code across multiple files

  • backup_and_edit: Create backups of files before editing them

HTTP Transport

Edit-MCP now supports HTTP transport in addition to stdio, allowing remote access and REST API endpoints.

Starting with HTTP Transport

# Start with default HTTP port (3000)
edit-mcp

# Start with custom port
edit-mcp --port 8080

# Start with configuration file
edit-mcp --config config.http.example.json

REST API Endpoints

Health Check

GET /health

JSON-RPC Endpoint

POST /jsonrpc
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "read_file",
    "arguments": {
      "path": "example.txt"
    }
  },
  "id": 1
}

REST API Endpoints

  • GET /api/tools - List available tools

  • POST /api/tools/:toolName - Call a specific tool

  • GET /api/files/:path - Read file content

  • PUT /api/files/:path - Write file content

  • GET /api/list/:directory - List files in directory

  • POST /api/search - Search for patterns in files

  • POST /api/format - Format code

  • POST /api/refactor - Refactor symbols across files

  • GET /api/docs - API documentation

Authentication

Enable API key authentication by setting authEnabled: true in your config:

{
  "authEnabled": true,
  "apiKey": "your-secure-api-key"
}

Include the API key in requests:

  • Header: X-API-Key: your-secure-api-key

  • Query parameter: ?apiKey=your-secure-api-key

CORS Configuration

Configure allowed origins in your config file:

{
  "corsOrigins": ["http://localhost:*", "https://yourdomain.com"]
}

Rate Limiting

Configure rate limiting to prevent abuse:

{
  "rateLimitWindowMs": 900000,  // 15 minutes
  "rateLimitMax": 100           // 100 requests per window
}

Development

Building the Project

# Build the project
npm run build

# Watch for changes and rebuild
npm run watch

Running in Development Mode

# Run with hot reloading
npm run dev

License

MIT

Acknowledgements

  • Microsoft for the Edit tool

  • The Model Context Protocol community

Available Tools

9 tools
backup_and_editB
Destructive

Create backups of files before editing them

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesList of files to backup and edit
operationYesThe edit operation to perform

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, readOnlyHint=false, etc., so the agent knows this is a non-idempotent, destructive write operation. The description adds value by specifying that backups are created before editing, which clarifies the safety mechanism beyond the annotations. However, it doesn't detail behavioral traits like error handling, backup location, or rollback options, which would be useful context.

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

Conciseness5/5

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

The description is a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It's front-loaded with the main action, making it easy for an agent to quickly understand the tool's purpose.

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

Completeness3/5

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

Given the complexity (destructive operation with backups) and lack of output schema, the description is minimally adequate. Annotations cover safety aspects, but the description could better explain the backup process or return values. It meets basic needs but leaves gaps in understanding the full workflow, such as how backups are managed or what happens on failure.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters ('files' and 'operation'). The description implies that 'files' are backed up and edited, and 'operation' is performed, but doesn't add meaning beyond what the schema provides, such as examples of operations or file format constraints. Baseline 3 is appropriate when the schema handles most documentation.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Create backups') and resource ('files'), and distinguishes it from siblings like 'write_file' or 'interactive_edit_session' by emphasizing the backup aspect. However, it doesn't explicitly differentiate from 'smart_refactor' or 'complex_find_replace', which might also involve editing with safety measures.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing write permissions, or compare it to siblings like 'write_file' (which might not create backups) or 'interactive_edit_session' (which might offer more control). This leaves the agent with minimal context for selection.

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

complex_find_replaceB
Destructive

Perform advanced find and replace operations with context awareness

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to perform find and replace on
patternYesRegular expression pattern to search for
replacementYesReplacement text
optionsNoAdditional options for the find and replace operation

TDQS

B3.1/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true, readOnlyHint=false, idempotentHint=false, and openWorldHint=false, which the description doesn't contradict. The description adds value by hinting at 'advanced' and 'context awareness' traits not covered by annotations, such as potential for complex pattern matching or contextual modifications, though it could be more explicit about behaviors like file overwriting or 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.

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. However, it could be more structured by briefly elaborating on 'context awareness' to improve clarity, but it earns high marks for brevity and directness.

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

Completeness3/5

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

Given the tool's complexity (destructive, non-idempotent, 4 parameters including nested objects) and lack of output schema, the description is minimally adequate. It hints at advanced features but doesn't fully explain the scope of 'context awareness' or potential outcomes, leaving gaps for the agent to infer behavior in a mutation-heavy context.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional semantic details about parameters beyond implying 'advanced' operations, which doesn't enhance understanding of 'path', 'pattern', 'replacement', or 'options'. Baseline 3 is appropriate as the schema carries the burden.

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

Purpose3/5

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

The description states the tool performs 'advanced find and replace operations with context awareness', which gives a general purpose but lacks specificity about what makes it 'advanced' or 'context-aware'. It distinguishes from basic siblings like 'find_in_file' by implying more complexity, but doesn't clearly differentiate from 'smart_refactor' or 'interactive_edit_session' which might also involve find/replace with context.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like 'find_in_file', 'smart_refactor', or 'write_file'. It implies advanced capabilities but doesn't specify scenarios, prerequisites, or exclusions, leaving the agent to guess based on the vague 'context awareness'.

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

find_in_fileB
Read-only

Find occurrences of a pattern in a file

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to search in
patternYesRegular expression pattern to search for
contextLinesNoNumber of context lines to include before and after matches (default: 2)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe, non-destructive read operation with limited scope. The description adds minimal behavioral context beyond this, as it doesn't specify details like search behavior (e.g., case sensitivity, multiline matching) or output format, but it doesn't contradict the annotations either.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured for quick comprehension.

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

Completeness3/5

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

Given the tool's moderate complexity (search with regex), lack of output schema, and rich annotations, the description is adequate but incomplete. It covers the basic action but doesn't address output details (e.g., match format, error handling) or advanced usage scenarios, leaving gaps that could hinder the agent in complex contexts.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'path', 'pattern', and 'contextLines' (including a default value). The description adds no additional meaning beyond the schema, such as explaining regex syntax or file path handling, so it meets the baseline for high schema coverage without enhancing parameter understanding.

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

Purpose4/5

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

The description clearly states the verb ('Find') and resource ('occurrences of a pattern in a file'), making the purpose specific and understandable. However, it does not differentiate from sibling tools like 'complex_find_replace' or 'smart_refactor', which might offer similar search capabilities with additional features, so it misses full sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'complex_find_replace' (which might include replacement) and 'smart_refactor' (which could involve refactoring), there is no explicit or implied context for choosing this simpler find tool over others, leaving the agent without usage direction.

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

format_codeB
Idempotent

Format code in a file

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to format
languageNoLanguage of the code (e.g., javascript, python, rust)

TDQS

B3/5.0
Behavior3/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, suggesting safe, repeatable operations. The description adds minimal context by implying it modifies file content (formatting), but doesn't disclose behavioral traits like formatting rules, error handling, or side effects. It doesn't contradict annotations, but adds little beyond them.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly without unnecessary details.

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

Completeness3/5

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

Given the tool's moderate complexity (formatting code), lack of output schema, and rich annotations, the description is minimally adequate. It states the action but omits details like formatting standards, return values, or error cases. With annotations covering safety, it's complete enough for basic use but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'path' and 'language'. The description doesn't add meaning beyond the schema, such as explaining how formatting varies by language or path constraints. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't detract.

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

Purpose3/5

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

The description 'Format code in a file' clearly states the verb ('format') and resource ('code in a file'), but it's vague about what formatting entails (e.g., style rules, indentation) and doesn't distinguish it from siblings like 'smart_refactor' or 'write_file'. It provides a basic purpose but lacks specificity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., file must exist), exclusions (e.g., not for binary files), or comparisons to siblings like 'write_file' for editing or 'smart_refactor' for structural changes. The description offers no usage context.

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

interactive_edit_sessionB
Destructive

Start an interactive editing session for complex edits

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesList of files to edit
instructionsNoInstructions for the editing session

TDQS

B3.2/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true, readOnlyHint=false, openWorldHint=false, and idempotentHint=false, covering safety and idempotency. The description adds value by specifying 'interactive' and 'complex edits,' suggesting a non-automated, involved process, though it doesn't detail session mechanics or side effects. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('Start an interactive editing session') and qualifies it ('for complex edits'). There's no wasted text, making it highly concise and well-structured for quick understanding.

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

Completeness3/5

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

Given the destructive nature (annotations show destructiveHint=true), lack of output schema, and complexity implied by 'interactive' and 'complex edits,' the description is minimally adequate. It covers the purpose but lacks details on session behavior, outcomes, or error handling, which could help the agent use it effectively in context.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'files' and 'instructions.' The description doesn't add meaning beyond the schema, such as explaining file formats or instruction specifics, but it doesn't need to since the schema is comprehensive. Baseline 3 is appropriate as the schema carries the burden.

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

Purpose3/5

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

The description states the action ('Start an interactive editing session') and the scope ('for complex edits'), which provides a basic purpose. However, it doesn't specify what 'interactive' entails or how it differs from sibling tools like 'write_file' or 'smart_refactor', making it somewhat vague rather than clearly distinguishing from alternatives.

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

Usage Guidelines2/5

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

The description implies usage for 'complex edits' but offers no explicit guidance on when to use this tool versus alternatives such as 'write_file' for simple writes or 'smart_refactor' for automated refactoring. There's no mention of prerequisites, exclusions, or specific contexts, leaving the agent with minimal direction.

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

list_filesB
Read-only

List files in a directory

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesPath to the directory to list files from
patternNoPattern to filter files by (e.g., *.txt)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, indicating this is a safe read operation with limited scope. The description adds the basic action of listing files but doesn't provide additional behavioral context such as pagination, sorting, error handling, or performance characteristics. With annotations covering safety and scope, this earns a baseline score for adding minimal value.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable without any unnecessary elaboration.

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

Completeness3/5

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

Given the tool's low complexity (simple listing operation), 100% schema coverage, and annotations providing safety/scope information, the description is adequate but minimal. It doesn't explain return values (no output schema exists) or edge cases, leaving some gaps in completeness for a tool that might need to handle various directory structures.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('directory' and 'pattern') fully documented in the schema. The description mentions 'directory' but doesn't add any semantic details beyond what the schema provides, such as path format examples or pattern usage scenarios. This meets the baseline for when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb 'List' and resource 'files in a directory', making the purpose immediately understandable. However, it doesn't differentiate this tool from potential sibling tools like 'find_in_file' or 'complex_find_replace' that might also involve file operations, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'find_in_file' and 'read_file' available, there's no indication of when listing files is preferred over searching within them or reading their contents. This leaves the agent without contextual usage information.

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

read_fileB
Read-only

Read the contents of a file

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to read
encodingNoEncoding to use when reading the file (default: utf8)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe read operation with deterministic behavior. The description adds no additional behavioral context about permissions, file size limits, error conditions, or return format. With annotations covering the safety profile, a baseline 3 is appropriate as the description doesn't contradict annotations but adds minimal value.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without any wasted words. It's appropriately sized and front-loaded with the essential information.

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

Completeness3/5

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

For a simple read operation with good annotations (readOnlyHint, openWorldHint) and 100% schema coverage, the description is minimally adequate. However, without an output schema and with multiple sibling tools that could cause confusion, the description should ideally provide more context about what exactly gets returned and when to choose this tool over alternatives.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters clearly documented in the schema. The description adds no parameter-specific information beyond what's already in the structured schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

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

Purpose4/5

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

The description clearly states the action ('Read') and resource ('contents of a file'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'find_in_file' or 'list_files' which also involve file reading operations, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'find_in_file' for searching within files and 'list_files' for directory listing, there's no indication of when 'read_file' is the appropriate choice versus these other file-related tools.

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

smart_refactorA
DestructiveIdempotent

Intelligently refactor code by renaming symbols across multiple files

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesList of files to search and refactor
oldNameYesThe symbol name to replace
newNameYesThe new symbol name

TDQS

A3.5/5.0
Behavior4/5

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

Annotations provide key hints: destructiveHint=true (indicating changes), idempotentHint=true (safe to retry), readOnlyHint=false (not read-only), and openWorldHint=false (limited scope). The description adds value by specifying 'intelligently' (implying smart matching) and 'across multiple files' (scope), which aren't covered by annotations. It doesn't contradict annotations, as 'refactor' aligns with destructive and non-read-only hints, and it provides useful context beyond the structured data.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('Intelligently refactor code') and specifies the method ('by renaming symbols across multiple files'). There is no wasted verbiage, and every word contributes to understanding the tool's purpose, making it highly concise and well-structured.

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

Completeness3/5

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

Given the tool's complexity (refactoring across files with destructive changes), annotations cover safety and idempotency, but there's no output schema. The description lacks details on return values, error handling, or what 'intelligently' entails (e.g., language-specific rules). It's adequate as a high-level overview but incomplete for full operational understanding, especially without output information, warranting a mid-range score.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'files', 'oldName', and 'newName'. The description adds minimal semantics by implying 'intelligently' might affect how symbols are matched, but it doesn't elaborate on parameter usage (e.g., file formats, symbol types). Since the schema does the heavy lifting, a baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding beyond what's already documented.

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

Purpose4/5

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

The description clearly states the verb ('refactor') and resource ('code by renaming symbols across multiple files'), making the purpose evident. It distinguishes from siblings like 'format_code' or 'find_in_file' by focusing on intelligent refactoring with symbol renaming across files. However, it doesn't explicitly differentiate from 'complex_find_replace' or 'backup_and_edit', which might have overlapping functionality, preventing a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when-not to use it (e.g., for simple single-file edits) or name specific siblings like 'complex_find_replace' or 'backup_and_edit' as alternatives. Without such context, users might struggle to choose appropriately among the available tools.

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

write_fileB
DestructiveIdempotent

Write content to a file

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the file to write
contentYesContent to write to the file
encodingNoEncoding to use when writing the file (default: utf8)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations provide key behavioral traits: readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds no additional context beyond the basic action, such as overwriting existing files or handling permissions. It does not contradict annotations, but offers minimal value beyond them.

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

Conciseness5/5

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

The description is a single, efficient sentence ('Write content to a file') that is front-loaded and wastes no words. It directly conveys the core action without unnecessary elaboration, making it highly concise and well-structured.

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

Completeness3/5

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

Given the tool's complexity (a destructive write operation), annotations cover safety and idempotency, but there is no output schema. The description is minimal and does not explain return values or error handling, leaving gaps in completeness for a tool that modifies files.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'path', 'content', and 'encoding'. The description does not add any semantic details beyond what the schema provides, such as file path formats or encoding options, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description 'Write content to a file' clearly states the verb ('write') and resource ('file'), making the purpose immediately understandable. However, it does not differentiate from sibling tools like 'backup_and_edit' or 'interactive_edit_session', which might also involve writing to files, so it lacks sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it does not mention when to choose 'write_file' over 'backup_and_edit' for safer edits or 'interactive_edit_session' for complex modifications, leaving the agent without usage context.

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.

  1. 9 tool updates
    • First observedbackup_and_edit
    • First observedcomplex_find_replace
    • First observedfind_in_file
    • First observedformat_code
    • First observedinteractive_edit_session
    • First observedlist_files
    • First observedread_file
    • First observedsmart_refactor
    • First observedwrite_file

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have distinct purposes, such as backup_and_edit for safe modifications and smart_refactor for code restructuring. However, find_in_file and complex_find_replace could be confused, as both involve searching, though the latter adds advanced features like context awareness.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as read_file and format_code. There are no deviations or mixed conventions, making the naming predictable and easy to understand.

Tool Count5/5

With 9 tools, the count is well-scoped for a file editing server, covering essential operations like reading, writing, and advanced edits. Each tool serves a clear purpose without feeling excessive or insufficient for the domain.

Completeness5/5

The toolset provides comprehensive coverage for file editing tasks, including basic CRUD operations (list_files, read_file, write_file), advanced features (smart_refactor, format_code), and safety measures (backup_and_edit). No obvious gaps exist for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers