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...
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 filewrite_file
: Write content to a filelist_files
: List files in a directoryfind_in_file
: Find occurrences of a pattern in a file
Edit Tools
format_code
: Format code in a filecomplex_find_replace
: Perform advanced find and replace operationsinteractive_edit_session
: Start an interactive editing session
Hybrid Tools
smart_refactor
: Intelligently refactor code across multiple filesbackup_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 toolsPOST /api/tools/:toolName
- Call a specific toolGET /api/files/:path
- Read file contentPUT /api/files/:path
- Write file contentGET /api/list/:directory
- List files in directoryPOST /api/search
- Search for patterns in filesPOST /api/format
- Format codePOST /api/refactor
- Refactor symbols across filesGET /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