Skip to main content
Glama
keyhoffman

Diff MCP Server

by keyhoffman
README.md
# Diff MCP Server

A Model Context Protocol (MCP) server that provides Claude with powerful text comparison and diffing capabilities. This server allows Claude to definitively answer whether two pieces of text are identical and show detailed differences between them.

## Features

- **Text Comparison**: Compare two text strings and determine if they're identical
- **Detailed Diffing**: Show detailed differences between texts with line-by-line analysis
- **Flexible Options**: Ignore whitespace, case, or line ending differences
- **Edge Case Handling**: Properly handles spaces, line endings, and formatting differences

## Installation

1. Clone this repository
2. Install dependencies:
   ```bash
   npm install
   ```

## Development

Build the TypeScript code:
```bash
npm run build
```

Run in development mode:
```bash
npm run dev
```

## Usage

### Building and Running

1. Build the project:
   ```bash
   npm run build
   ```

2. Run the server:
   ```bash
   npm start
   ```

### MCP Configuration

Add this to your MCP configuration file (e.g., `~/.config/mcp/servers/diff-mcp.json`):

```json
{
  "mcpServers": {
    "diff-mcp": {
      "command": "node",
      "args": ["/path/to/your/diff-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}
```

## Available Tools

### 1. compare_texts

Compares two text strings and returns whether they are identical.

**Parameters:**
- `text1` (string): First text to compare
- `text2` (string): Second text to compare
- `ignoreWhitespace` (boolean, optional): Ignore whitespace differences
- `ignoreCase` (boolean, optional): Ignore case differences
- `ignoreLineEndings` (boolean, optional): Ignore line ending differences

**Returns:**
```json
{
  "identical": true/false,
  "summary": "Texts are identical" or "Texts differ: X additions, Y removals"
}
```

### 2. get_detailed_diff

Provides detailed differences between two text strings with line-by-line analysis.

**Parameters:**
- `text1` (string): First text to compare
- `text2` (string): Second text to compare
- `contextLines` (number, optional): Number of context lines to show around changes
- `ignoreWhitespace` (boolean, optional): Ignore whitespace differences
- `ignoreCase` (boolean, optional): Ignore case differences
- `ignoreLineEndings` (boolean, optional): Ignore line ending differences

**Returns:**
```json
{
  "identical": true/false,
  "differences": [
    {
      "type": "add|remove|equal",
      "value": "text content",
      "lineNumber": 1
    }
  ],
  "summary": "Texts differ: X lines added, Y lines removed"
}
```

## Example Usage

When Claude has access to this MCP server, it can now:

1. **Definitively answer identity questions**: "Are these two files exactly the same?"
2. **Show precise differences**: "What are the exact differences between these texts?"
3. **Handle edge cases**: Properly detect differences in whitespace, line endings, and formatting

## Success Criteria

With this MCP server, Claude can now:
- ✅ Answer "yes, these are 100% identical" or "no, here are the exact differences"
- ✅ Handle edge cases like spaces, line endings, and formatting
- ✅ Provide detailed diff information when texts differ
- ✅ Offer flexible comparison options (ignore whitespace, case, etc.)

## License

MIT