Connects Claude to Martin Fowler's catalog of 71+ refactorings through a language-agnostic architecture. You get five tools: list available refactorings by category, preview changes before applying them, execute refactorings on your codebase, inspect code structure at class or method level, and analyze for code smells. Targets are specified with native conventions like `src/order.py::Order::calculate_total#L10-L15`. Currently supports Python through the molting-cli backend with Ruby, Java, and Go planned. Useful when you want programmatic refactoring suggestions and execution instead of manual restructuring, or when working through technical debt systematically. Output uses TOON format for token efficiency.
An MCP (Model Context Protocol) server that exposes Martin Fowler's refactoring catalog to LLMs through a pluggable, language-agnostic architecture.
# Using uvx (recommended)
uvx mcp-refactoring
# Using pip
pip install mcp-refactoring
# Using pipx
pipx install mcp-refactoring
molting-cli for Python)Install the Python backend:
pip install molting-cli
Add to your Claude Desktop config:
{
"mcpServers": {
"refactoring": {
"command": "uvx",
"args": ["mcp-refactoring"]
}
}
}
List available refactorings with their parameter contracts.
list_refactorings(language="python", category="composing_methods")
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 a refactoring to the codebase.
apply_refactoring(
refactoring="rename-method",
target="src/order.py::Order::calc",
params={"new_name": "calculate_total"}
)
Get structural information about code.
inspect_structure(path="src/order.py", depth="method")
Analyze code for smells and suggest refactorings.
analyze_code(path="src/order.py", smells=["long-method"])
Each language uses its native conventions:
src/order.py::Order::calculate_total # Method
src/order.py::Order::calculate_total#L10-L15 # Line range
src/order.py::Order # Class
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
Based on Martin Fowler's catalog:
# 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/
MIT License - see LICENSE for details.