Skip to main content

MCP server exposing Martin Fowler's refactoring catalog to LLMs

Project description

mcp-refactoring

An MCP (Model Context Protocol) server that exposes Martin Fowler's refactoring catalog to LLMs through a pluggable, language-agnostic architecture.

Features

  • 71+ Refactorings: Full implementation of Martin Fowler's refactoring catalog
  • Pluggable Architecture: Support for multiple languages (Python first, Ruby/Java/Go planned)
  • Safe by Default: Preview mode shows changes before applying
  • LLM-Optimized: TOON output format for token efficiency

Installation

# Using uvx (recommended)
uvx mcp-refactoring

# Using pip
pip install mcp-refactoring

# Using pipx
pipx install mcp-refactoring

Requirements

  • Python 3.10+
  • A language backend (e.g., molting-cli for Python)

Install the Python backend:

pip install molting-cli

Claude Desktop Configuration

Add to your Claude Desktop config:

{
  "mcpServers": {
    "refactoring": {
      "command": "uvx",
      "args": ["mcp-refactoring"]
    }
  }
}

Available Tools

list_refactorings

List available refactorings with their parameter contracts.

list_refactorings(language="python", category="composing_methods")

preview_refactoring

Preview what changes a refactoring would make (dry-run).

preview_refactoring(
    refactoring="extract-method",
    target="src/order.py::Order::calculate#L10-L15",
    params={"name": "calculate_tax"}
)

apply_refactoring

Apply a refactoring to the codebase.

apply_refactoring(
    refactoring="rename-method",
    target="src/order.py::Order::calc",
    params={"new_name": "calculate_total"}
)

inspect_structure

Get structural information about code.

inspect_structure(path="src/order.py", depth="method")

analyze_code

Analyze code for smells and suggest refactorings.

analyze_code(path="src/order.py", smells=["long-method"])

Target Specification

Each language uses its native conventions:

Python

src/order.py::Order::calculate_total        # Method
src/order.py::Order::calculate_total#L10-L15  # Line range
src/order.py::Order                         # Class

Configuration

Create ~/.mcp-refactoring/config.toml:

[backends.python]
enabled = true
command = "molting"

[backends.ruby]
enabled = false
command = "molting-rb"

Environment variable overrides:

MCP_REFACTORING_PYTHON_COMMAND=/path/to/molting
MCP_REFACTORING_PYTHON_ENABLED=true

Refactoring Categories

Based on Martin Fowler's catalog:

  • Composing Methods: extract-method, inline-method, etc.
  • Moving Features: move-method, extract-class, etc.
  • Organizing Data: encapsulate-field, replace-type-code, etc.
  • Simplifying Conditionals: decompose-conditional, guard-clauses, etc.
  • Simplifying Method Calls: rename-method, add-parameter, etc.
  • Dealing with Generalization: pull-up-method, extract-interface, etc.

Development

# Clone the repository
git clone https://github.com/marshally/mcp-refactoring.git
cd mcp-refactoring

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Run linter
ruff check .

# Run type checker
mypy src/

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_refactoring-0.1.1.tar.gz (33.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_refactoring-0.1.1-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file mcp_refactoring-0.1.1.tar.gz.

File metadata

  • Download URL: mcp_refactoring-0.1.1.tar.gz
  • Upload date:
  • Size: 33.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcp_refactoring-0.1.1.tar.gz
Algorithm Hash digest
SHA256 bca103928aa7af25a077d3a9eefd798903a3532350c7f3c460038aa4b18a50d1
MD5 95ca3396dee5b4c9456b23a7a082c622
BLAKE2b-256 42570521743a9cb3ac77e5f0098d6fdbfd41cb7577d45c4e43c4a24d9a9a2cca

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_refactoring-0.1.1.tar.gz:

Publisher: python-publish.yml on marshally/mcp-refactoring

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_refactoring-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_refactoring-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 12d9e651b15629fb8eab56b934775204eca7832dfedb7217d322a33a5ee956db
MD5 35d23087d8c9988195df738fc7419bda
BLAKE2b-256 96010993dc2ec11026a87883ec6e1e723c018623126c952b867c9d7c9e46b483

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_refactoring-0.1.1-py3-none-any.whl:

Publisher: python-publish.yml on marshally/mcp-refactoring

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page