Skip to main content

FastApply MCP Server

A streamlined Model Context Protocol server for efficient AI-powered code editing using FastApply. Inspired by opencode-fast-apply's simplicity and partial editing approach.

Overview

FastApply MCP Server provides intelligent code editing through partial file editing, achieving 80-98% token savings compared to full-file approaches. The server uses smart matching to locate and replace code sections automatically, making it ideal for editing large files efficiently.

Key Features

  • Partial File Editing: Edit only the sections you need (50-500 lines recommended)
  • Smart Matching: Automatic exact and normalized whitespace matching
  • XML Safety: Built-in protection against prompt injection
  • Token Efficiency: 80-98% token savings vs full-file editing
  • Binary Detection: Automatic detection and rejection of binary files
  • Atomic Operations: Safe file writes with automatic rollback on failure
  • Clear Error Messages: Actionable suggestions for troubleshooting

Installation

Requirements

  • Python 3.13 or higher
  • FastApply-compatible server (LM Studio, Ollama, or OpenAI-compatible endpoint)

Run directly without installation:

uvx fastapply-mcp

Manual Installation

git clone https://github.com/your-org/fastapply-mcp.git
cd fastapply-mcp

# Using uv
uv sync
source .venv/bin/activate
uv pip install -e .

# Or using pip
pip install -e .

Configuration

Configure the server with just 3 environment variables:

# .env file
FAST_APPLY_URL=http://localhost:1234/v1
FAST_APPLY_MODEL=fastapply-1.5b
FAST_APPLY_API_KEY=optional-api-key

That's it! No complex configuration needed.

MCP Integration

Claude Desktop

Add to your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "fastapply": {
      "command": "uvx",
      "args": ["fastapply-mcp"],
      "env": {
        "FAST_APPLY_URL": "http://localhost:1234/v1",
        "FAST_APPLY_MODEL": "fastapply-1.5b"
      }
    }
  }
}

Manual Installation

{
  "mcpServers": {
    "fastapply": {
      "command": "python",
      "args": ["/path/to/fastapply-mcp/src/fastapply_mcp/main.py"],
      "env": {
        "FAST_APPLY_URL": "http://localhost:1234/v1",
        "FAST_APPLY_MODEL": "fastapply-1.5b"
      }
    }
  }
}

Other MCP Clients

The server implements the standard MCP protocol and works with any compatible client.

Tool: fast_apply_edit

The server provides a single, focused tool for efficient code editing.

Parameters

  • target_filepath (required): Path to the file to edit (relative or absolute)
  • original_code (required): The exact section of code to modify (50-500 lines recommended)
  • code_edit (required): The changes to apply

How It Works

  1. Read the file to get current content
  2. Extract the relevant section (50-500 lines with context)
  3. Call FastApply API with partial content
  4. Smart match finds the section in the full file
  5. Replace the section atomically
  6. Generate diff for verification

Example Usage

{
  "target_filepath": "src/utils.py",
  "original_code": "def parse_config(path):\n    with open(path) as f:\n        return json.load(f)",
  "code_edit": "def parse_config(path):\n    try:\n        with open(path) as f:\n            return json.load(f)\n    except FileNotFoundError:\n        raise ConfigError(f'Config not found: {path}')"
}

Lazy Edit Markers

Use ... existing code ... markers for unchanged sections:

# ... existing code ...
def updated_function():
    return "modified"
# ... existing code ...

This tells the AI to skip regenerating unchanged parts, making edits faster.

Token Efficiency

Partial editing provides massive token savings:

File Size Full File Partial (100 lines) Savings
100 lines 2,500 tokens 500 tokens 80%
500 lines 12,500 tokens 1,000 tokens 92%
1000 lines 25,000 tokens 1,500 tokens 94%
5000 lines 125,000 tokens 2,000 tokens 98%

Smart Matching

The tool uses a two-tier matching system:

1. Exact Match (Priority)

Finds exact string match in the file.

2. Normalized Match (Fallback)

Handles CRLF/LF differences automatically:

  • Normalizes \r\n → \n
  • Normalizes \r → \n
  • Matches whitespace-normalized content

3. Uniqueness Check

Ensures the section appears only once in the file to prevent ambiguous replacements.

XML Safety

Built-in protection against prompt injection:

# User code with XML tags
original_code = "<code>malicious</code>"

# Automatically escaped before API call
# "&lt;code&gt;malicious&lt;/code&gt;"

# Safely processed and unescaped after

All XML special characters (&, <, >, ", ') are automatically escaped and unescaped.

FastApply Backend Options

LM Studio

  1. Install LM Studio from https://lmstudio.ai
  2. Download a FastApply-compatible model
  3. Start the local server (default: http://localhost:1234)
  4. Configure FAST_APPLY_URL=http://localhost:1234/v1

Ollama

# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Pull a FastApply model
ollama pull fastapply-1.5b

# Start the server
ollama serve

Configure FAST_APPLY_URL=http://localhost:11434/v1

OpenAI or Custom Servers

Any OpenAI-compatible API works:

FAST_APPLY_URL=https://api.openai.com/v1
FAST_APPLY_MODEL=gpt-4
FAST_APPLY_API_KEY=sk-...

Security

  • Workspace Isolation: All operations confined to current working directory
  • Path Validation: Prevents directory traversal attacks
  • File Size Limits: 10MB default maximum
  • Binary Detection: Rejects binary files automatically
  • UTF-8 Validation: Ensures proper file encoding
  • Atomic Writes: Safe file operations with rollback

Error Handling

Clear, actionable error messages:

❌ Error: Cannot locate original_code in file (whitespace mismatch detected).

💡 Troubleshooting:
  1. Re-read the file to get current content
  2. Ensure original_code matches exactly (including whitespace)
  3. Provide more context to make the section unique

Troubleshooting

Connection Issues

Verify your FastApply server is running:

curl http://localhost:1234/v1/models

File Not Found

Use the tool only for existing files. For new files, use your MCP client's write tool.

Cannot Locate Section

  • Re-read the file to get current content
  • Ensure whitespace matches exactly (tabs vs spaces)
  • Provide more context to make the section unique

Whitespace Mismatch

The tool handles CRLF/LF differences automatically, but tabs vs spaces must match exactly.

Development

Project Structure

fastapply-mcp/
├── src/
│   └── fastapply_mcp/
│       ├── __init__.py
│       └── main.py          # Single-file implementation (~487 lines)
├── .env.example
├── pyproject.toml
└── README.md

Code Quality

# Format code
ruff format .

# Lint code
ruff check .

# Type checking
mypy src/

# Syntax check
python -m py_compile src/fastapply_mcp/main.py

Design Philosophy

This implementation follows these principles:

  1. Do one thing well - Focus on efficient file editing
  2. Trust the client - MCP client handles undo, concurrency, etc.
  3. Optimize for common case - Partial editing is 10x more efficient
  4. Clear errors - Help users fix problems quickly
  5. No premature optimization - Remove unused features

Performance

Original Approach (Full File)

  • Read: 5000 lines
  • Send to API: 125,000 tokens
  • Process: ~30 seconds
  • Cost: High

Simplified Approach (Partial)

  • Read: 5000 lines (send only 100)
  • Send to API: 2,000 tokens
  • Process: ~3 seconds
  • Cost: 98% cheaper

Contributing

Contributions are welcome! Please:

  1. Fork the repository and create a feature branch
  2. Write tests for new functionality
  3. Ensure code meets quality standards
  4. Submit a pull request with clear description

License

MIT License - see LICENSE file for details.

Acknowledgments

  • Inspiration: opencode-fast-apply for the partial editing approach
  • MCP Community: For the Model Context Protocol specification
  • FastApply: For the efficient code merging models

Support

  • GitHub Issues: Report bugs and request features
  • Discussions: Ask questions and share ideas
  • Documentation: See inline code comments for implementation details

Metadata

Release files for fastapply-mcp 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapply-mcp 1.1.1
File Size Uploaded Provenance
fastapply_mcp-1.1.1.tar.gz 35.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapply-mcp 1.1.1
File Interpreter ABI Platform
fastapply_mcp-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 46.0 kB

Release files / fastapply_mcp-1.1.1.tar.gz

Download URL fastapply_mcp-1.1.1.tar.gz
Size 35.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0321dd2363d367bf3cd275aeaf5a1c805436f124b7e427eecac317ef9d957299
BLAKE2b-256 checksum
How to use checksums
8bdd41b8ed4da688971d1ac4ead763cd4054ca6b29588b08ff787624d6831b52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 8, 2026.

Transparency log

Release files / fastapply_mcp-1.1.1-py3-none-any.whl

Download URL fastapply_mcp-1.1.1-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00fd93ed2056596e93597f6e7f9f872454a226155b6e4a100eb59b9c1a6ae460
BLAKE2b-256 checksum
How to use checksums
3275377ed56134934799ec7cbf5b86acf588f029f4a8e29e35c7578186fcf8cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 8, 2026.

Transparency log

Security for fastapply-mcp 1.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for fastapply_mcp-1.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page