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 and readOnlyHint=false, so the agent knows this is a non-idempotent write operation. The description adds value by specifying that backups are created before editing, which clarifies safety behavior beyond the annotations. However, it lacks details on backup location, edit rollback options, or error handling, limiting its transparency.

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 any wasted words. It is front-loaded with the main action, making it easy for an agent to quickly grasp 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 destructive nature (annotations show destructiveHint=true) and lack of output schema, the description is minimally adequate. It covers the backup-and-edit process but omits critical details like what the edit operation entails, how backups are stored, or success/failure outcomes, which could hinder an agent's ability to use it effectively in complex scenarios.

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 input schema fully documents the parameters ('files' and 'operation'). The description implies that 'files' are backed up and edited, and 'operation' defines the edit, but adds no extra semantic details beyond what the schema provides, such as file format constraints or operation types, meeting 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 clearly states the tool's purpose with a specific verb ('Create backups') and resource ('files'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'write_file' or 'interactive_edit_session', which might also involve file modifications, 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. It doesn't mention prerequisites, such as needing existing files to edit, or specify scenarios where this is preferred over direct editing tools like 'write_file' or 'smart_refactor', leaving 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 already indicate this is a destructive, non-idempotent, non-read-only operation, but the description adds value by specifying 'advanced' and 'context awareness', hinting at behavioral traits like intelligent pattern matching or contextual replacements. However, it doesn't detail what 'context awareness' entails or any rate limits/permissions.

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. It avoids redundancy but could be slightly more informative without sacrificing brevity.

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, 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 'context awareness' or behavioral implications, leaving gaps for an AI agent to infer usage.

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 doesn't add meaning beyond the schema, such as explaining how 'context awareness' relates to the 'options' parameter or providing examples. Baseline 3 is appropriate since 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'.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description mentions 'context awareness' but doesn't specify what contexts trigger its use over simpler tools like 'find_in_file' or more complex ones like 'smart_refactor'. No prerequisites or exclusions are provided.

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 declare readOnlyHint=true and openWorldHint=false, indicating a safe, read-only operation with limited scope. The description adds minimal behavioral context beyond this, as it doesn't specify details like error handling, performance, or output format. It doesn't contradict annotations, but with annotations covering safety, the description adds little extra value, meeting the baseline for tools with good annotation coverage.

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 any wasted words. It is front-loaded and appropriately sized for a simple search tool, making it easy for an agent to parse quickly.

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 search with 3 parameters), good annotations (read-only, closed-world), and no output schema, the description is minimally adequate. It covers the basic action but lacks details on output format or error cases, which could be helpful for the agent. It meets the minimum viable standard without being fully comprehensive.

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 all parameters (path, pattern, contextLines). The description adds no additional meaning beyond the schema, such as explaining regex capabilities or context line behavior. Given high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to due to the schema's completeness.

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 the resource 'occurrences of a pattern in a file', making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'complex_find_replace' or 'smart_refactor', which might have overlapping search functionalities, so it lacks sibling differentiation for 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. With siblings like 'complex_find_replace' for replacement operations or 'smart_refactor' for code-specific searches, there is no indication of context, exclusions, or prerequisites, leaving the agent to infer usage based on tool names alone.

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.3/5.0
Behavior3/5

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

Annotations cover key behavioral traits: readOnlyHint=false (implies mutation), idempotentHint=true (safe to retry), destructiveHint=false (non-destructive). The description adds minimal context beyond this, only implying it modifies file content. It doesn't disclose additional behaviors like formatting rules, error handling, or side effects (e.g., backup creation). With annotations providing a solid baseline, the description adds some value but lacks depth.

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 extremely concise at four words, front-loading the core purpose without any fluff. Every word earns its place: 'Format' specifies the action, 'code' the target, 'in a file' the scope. It's efficiently structured for quick comprehension, though this brevity contributes to gaps in other dimensions.

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 with two parameters), annotations provide good behavioral coverage, but there's no output schema. The description is minimal, lacking details on return values, error conditions, or formatting standards. It's adequate as a starting point but incomplete for confident use, especially without output schema to compensate.

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 both parameters (path and language). The description adds no parameter-specific information beyond what the schema provides. It implies both parameters are used but doesn't explain their interaction (e.g., language might be inferred from path). Baseline 3 is appropriate given the schema does all 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 'Format code in a file' clearly states the action (format) and resource (code in a file), making the purpose immediately understandable. It distinguishes from siblings like 'write_file' or 'smart_refactor' by focusing specifically on formatting rather than writing or refactoring. However, it doesn't explicitly differentiate from all siblings (e.g., 'backup_and_edit' might also involve formatting), keeping it at 4 rather than 5.

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 (e.g., file must exist), when-not-to-use scenarios (e.g., for non-code files), or direct alternatives among siblings like 'smart_refactor' for more complex code changes. This leaves the agent with minimal context for tool selection.

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

interactive_edit_sessionC
Destructive

Start an interactive editing session for complex edits

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

TDQS

C2.8/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., covering safety and mutability. The description adds minimal context by implying interactivity and complexity, but doesn't detail session behavior, side effects, or constraints like timeouts. It doesn't contradict annotations, so it's adequate but not rich.

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, concise sentence that front-loads the core action. It's efficient with no wasted words, though it could be more informative. It earns its place but leaves room for improvement in clarity.

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

Completeness2/5

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

Given the tool's complexity (interactive session with destructive hints) and lack of output schema, the description is incomplete. It doesn't explain what the session entails, return values, or error handling. Annotations help, but more context is needed for effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents the 'files' and 'instructions' parameters. The description adds no extra meaning beyond implying 'complex edits' might relate to 'instructions', but this is vague. 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's purpose as 'Start an interactive editing session for complex edits', which includes a verb ('Start') and resource ('interactive editing session'), but it's vague about what constitutes 'complex edits' and doesn't differentiate from siblings like 'smart_refactor' or 'backup_and_edit'. 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?

The description offers no guidance on when to use this tool versus alternatives. It doesn't mention scenarios, prerequisites, or exclusions, leaving the agent to infer usage from the name alone. With siblings like 'write_file' and 'smart_refactor', this gap is significant.

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 a safe, non-destructive operation with limited scope. The description adds minimal behavioral context beyond this, such as implying directory-based listing, but doesn't detail aspects like pagination, error handling, or return format. 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 with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without redundancy or 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), high schema coverage, and annotations covering safety and scope, the description is minimally adequate. However, with no output schema, it doesn't explain return values like file list format or error cases, leaving gaps for an agent to infer behavior.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters ('directory' and 'pattern'). The description adds no additional meaning beyond what the schema provides, such as explaining pattern syntax or directory path conventions. Baseline 3 is appropriate as the schema handles parameter documentation adequately.

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 'List files in a directory' clearly states the verb ('List') and resource ('files'), specifying the scope ('in a directory'). It distinguishes from siblings like 'read_file' or 'find_in_file' by focusing on listing rather than reading or searching content, though it doesn't explicitly mention 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. It doesn't mention when to prefer 'list_files' over 'find_in_file' for filtering or 'complex_find_replace' for more advanced operations, nor does it specify prerequisites like directory existence or permissions.

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 limited scope. The description adds no behavioral context beyond what annotations provide - no information about permissions needed, error handling, file size limitations, or return format. With annotations covering the safety profile, a baseline 3 is appropriate.

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 states the core functionality without any wasted words. It's appropriately sized for a simple read operation and gets straight to the point with no 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?

For a simple read operation with good annotations (readOnlyHint, openWorldHint) and complete schema coverage, the description is minimally adequate. However, without an output schema and with multiple sibling file tools, more context about return format and differentiation from alternatives would be helpful. The description meets basic requirements but leaves 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 both parameters ('path' and 'encoding') fully documented in the schema. The description adds no additional parameter information beyond what the schema already provides. When schema coverage is this complete, the baseline score is 3 even without parameter details 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' that 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 simple file reading is appropriate versus these other file-related operations.

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

smart_refactorB
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

B3.3/5.0
Behavior3/5

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

Annotations cover key traits (destructive, idempotent, not read-only, closed-world), so the description adds value by specifying 'renaming symbols across multiple files' and implying intelligence in refactoring. However, it lacks details on error handling, side effects, or rate limits, which would enhance transparency beyond annotations.

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 key details ('renaming symbols across multiple files') without unnecessary words, 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 (destructive refactoring across files) and lack of output schema, the description is adequate but incomplete. It covers the basic operation but omits details on return values, error cases, or advanced usage, leaving gaps for an AI agent to handle effectively.

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%, fully documenting the three parameters. The description adds minimal semantics by implying 'files' are searched and refactored, but doesn't provide extra details like file format constraints or symbol scope, aligning with 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 clearly states the action ('intelligently refactor code by renaming symbols') and resource ('across multiple files'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'complex_find_replace' or 'backup_and_edit', which might offer similar 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 prerequisites, exclusions, or compare to siblings like 'complex_find_replace' for similar tasks, leaving the agent to infer usage context without explicit direction.

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

write_fileA
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

A3.5/5.0
Behavior4/5

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

Annotations indicate this is a destructive, non-read-only, non-open-world, idempotent operation. The description adds value by specifying 'write content to a file', which implies mutation and potential overwriting, aligning with the destructive hint. However, it does not elaborate on details like file creation if non-existent or error handling, leaving some behavioral aspects uncovered.

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, front-loaded sentence ('Write content to a file') that efficiently conveys the core action without unnecessary words. Every part earns its place, 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 tool's complexity as a destructive write operation with no output schema, the description is minimally adequate. It covers the basic action but lacks details on return values, error cases, or interactions with siblings, leaving gaps in completeness for safe agent invocation.

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?

With 100% schema description coverage, the input schema fully documents parameters like 'path', 'content', and 'encoding' with default values. The description does not add any semantic details beyond this, such as path format examples or encoding options, so it meets the baseline without compensating further.

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 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. It does not mention scenarios like overwriting existing files, creating new ones, or when to prefer other tools like 'backup_and_edit' for safer edits, leaving usage context implied at best.

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

Tool Schema Changelog

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

  1. 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
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

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mixelpixx/microsoft-edit-mcp'

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