Skip to main content
Glama
README.md
# 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

```bash
# 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:

```bash
# 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:

```json
{
  "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

```bash
# 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
```bash
GET /health
```

#### JSON-RPC Endpoint
```bash
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:

```json
{
  "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:

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

### Rate Limiting

Configure rate limiting to prevent abuse:

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

## Development

### Building the Project

```bash
# Build the project
npm run build

# Watch for changes and rebuild
npm run watch
```

### Running in Development Mode

```bash
# Run with hot reloading
npm run dev
```

## License

MIT

## Acknowledgements

- Microsoft for the Edit tool
- The Model Context Protocol community

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