Installation

Requirements

  • Python 3.11+
  • An MCP-compatible client (Claude Code, Claude Desktop, Cursor)

Install from PyPI

pip install airflow-unfactor

Or with uv:

uv pip install airflow-unfactor

Install from source (development)

git clone https://github.com/gabcoyne/airflow-unfactor
cd airflow-unfactor
uv sync

Client Configuration

The server runs over stdio — you don't start it manually. Your MCP client launches it.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "airflow-unfactor": {
      "command": "uvx",
      "args": ["airflow-unfactor"]
    }
  }
}

Claude Code

Add to .mcp.json in your project directory:

{
  "mcpServers": {
    "airflow-unfactor": {
      "command": "uvx",
      "args": ["airflow-unfactor"]
    }
  }
}

For global availability, add to ~/.claude/settings.json instead.

Cursor

Add to Cursor's MCP settings:

{
  "mcpServers": {
    "airflow-unfactor": {
      "command": "uvx",
      "args": ["airflow-unfactor"]
    }
  }
}

Development installs: If you cloned the repo and want to use your local copy, replace uvx with uv and add "--directory", "/path/to/airflow-unfactor", "run" before "airflow-unfactor" in the args array.

Verify Installation

Test that the server responds:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | uvx airflow-unfactor

You should see a JSON response with serverInfo.name: "airflow-unfactor" and 7 tools listed.

Optional: Live Prefect Doc Search

search_prefect_docs queries the Prefect documentation server. Enabled by default:

export MCP_PREFECT_ENABLED=true       # default
export MCP_PREFECT_URL="https://docs.prefect.io/mcp"

Set MCP_PREFECT_ENABLED=false to disable.

Troubleshooting

Command not found

If uvx airflow-unfactor fails, verify the package is installed:

pip show airflow-unfactor

MCP client can't connect

  1. Verify the server starts: run the initialize request above
  2. Check the command path in your MCP client config
  3. Make sure you're using uvx (not just airflow-unfactor) — MCP clients don't inherit your shell PATH

Next Steps