{
  "markdown": "# airflow-mcp-server: An MCP Server for controlling Airflow 3\n\nmcp-name: io.github.abhishekbhakat/airflow-mcp-server\n\n### MCPHub Certification\n\nThis MCP server is certified by [MCPHub](https://mcphub.com/mcp-servers/abhishekbhakat/airflow-mcp-server). This certification ensures that airflow-mcp-server follows best practices for Model Context Protocol implementation.\n\n\n### Find on Glama\n\n<a href=\"https://glama.ai/mcp/servers/6gjq9w80xr\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/6gjq9w80xr/badge\" />\n</a>\n\n## Overview\nA [Model Context Protocol](https://modelcontextprotocol.io/) server for controlling Airflow via Airflow APIs.\n\n## Demo Video\n\nhttps://github.com/user-attachments/assets/f3e60fff-8680-4dd9-b08e-fa7db655a705\n\n## Setup\n\n### Usage with Claude Desktop\n\n#### Stdio Transport (Default)\n```json\n{\n    \"mcpServers\": {\n        \"airflow-mcp-server\": {\n            \"command\": \"uvx\",\n            \"args\": [\n                \"airflow-mcp-server\",\n                \"--base-url\",\n                \"http://localhost:8080\",\n                \"--auth-token\",\n                \"<jwt_token>\"\n            ]\n        }\n    }\n}\n```\n\n\nSee [`CONFIG.md`](CONFIG.md) for IDE-specific configuration examples across popular MCP clients.\n\n#### HTTP Transport\n```json\n{\n    \"mcpServers\": {\n        \"airflow-mcp-server-http\": {\n            \"command\": \"uvx\",\n            \"args\": [\n                \"airflow-mcp-server\",\n                \"--http\",\n                \"--port\",\n                \"3000\",\n                \"--base-url\",\n                \"http://localhost:8080\",\n                \"--auth-token\",\n                \"<jwt_token>\"\n            ]\n        }\n    }\n}\n```\n\n> **Note:**\n> - Set `base_url` to the root Airflow URL (e.g., `http://localhost:8080`).\n> - Do **not** include `/api/v2` in the base URL. The server will automatically fetch the OpenAPI spec from `${base_url}/openapi.json`.\n> - Only JWT token is required for authentication. Cookie and basic auth are no longer supported in Airflow 3.0.\n\n### Transport Options\n\nThe server supports multiple transport protocols:\n\n#### Stdio Transport (Default)\nStandard input/output transport for direct process communication:\n```bash\nairflow-mcp-server --safe --base-url http://localhost:8080 --auth-token <jwt>\n```\n\n#### HTTP Transport\nUses Streamable HTTP for better scalability and web compatibility:\n```bash\nairflow-mcp-server --safe --http --port 3000 --base-url http://localhost:8080 --auth-token <jwt>\n```\n\n> **Note:** SSE transport is deprecated. Use `--http` for new deployments as it provides better bidirectional communication and is the recommended approach by FastMCP.\n\n### Operation Modes\n\nThe server supports two operation modes:\n\n- **Safe Mode** (`--safe`): Only allows read-only operations (GET requests). This is useful when you want to prevent any modifications to your Airflow instance.\n- **Unsafe Mode** (`--unsafe`): Allows all operations including modifications. This is the default mode.\n\nTo start in safe mode:\n```bash\nairflow-mcp-server --safe\n```\n\nTo explicitly start in unsafe mode (though this is default):\n```bash\nairflow-mcp-server --unsafe\n```\n\n### Tool Discovery Modes\n\nThe server supports two tool discovery approaches:\n\n- **Hierarchical Discovery** (default): Tools are organized by categories (DAGs, Tasks, Connections, etc.). Browse categories first, then select specific tools. More manageable for large APIs.\n- **Static Tools** (`--static-tools`): All tools available immediately. Better for programmatic access but can be overwhelming.\n\nTo use static tools:\n```bash\nairflow-mcp-server --static-tools\n```\n\n### Command Line Options\n\n```bash\nUsage: airflow-mcp-server [OPTIONS]\n\n  MCP server for Airflow\n\nOptions:\n  -v, --verbose      Increase verbosity\n  -s, --safe         Use only read-only tools\n  -u, --unsafe       Use all tools (default)\n  --static-tools     Use static tools instead of hierarchical discovery\n  --base-url TEXT    Airflow API base URL\n  --auth-token TEXT  Authentication token (JWT)\n  --http             Use HTTP (Streamable HTTP) transport instead of stdio\n  --sse              Use Server-Sent Events transport (deprecated, use --http\n                     instead)\n  --port INTEGER     Port to run HTTP/SSE server on (default: 3000)\n  --host TEXT        Host to bind HTTP/SSE server to (default: localhost)\n  --help             Show this message and exit.\n```\n\n### Using Resources\n\nPoint the server at a folder of Markdown guides whenever you want agents to reference local documentation:\n\n```bash\nairflow-mcp-server --base-url http://localhost:8080 --auth-token <jwt> --resources-dir ~/airflow-resources\n```\n\n- Every top-level `.md`/`.markdown` file becomes a read-only resource (`file:///<slug>`) visible in your MCP client.\n- The first `# Heading` in each file (if present) is used as the resource title; otherwise the filename stem is used.\n- Set `AIRFLOW_MCP_RESOURCES_DIR=/path/to/docs` if you prefer environment-based configuration.\n- Update the files on disk and restart the server to refresh the resources list.\n\n### Considerations\n\n**Authentication**\n\n- Only JWT authentication is supported in Airflow 3.0. You must provide a valid `AUTH_TOKEN`.\n\n**Page Limit**\n\nThe default is 100 items, but you can change it using `maximum_page_limit` option in [api] section in the `airflow.cfg` file.\n\n**Transport Selection**\n\n- Use **stdio** transport for direct process communication (default)\n- Use **HTTP** transport for web deployments, multiple clients, or when you need better scalability\n- Avoid **SSE** transport as it's deprecated in favor of HTTP transport\n",
  "bytes": 5580,
  "sha": "5bf7b128a79d110a56cbdb9cfcb35de239a7fbf117e312ef159b7b85204acc74",
  "repo_slug": "abhishekbhakat/airflow-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_abhishekbhakat_airflow_mcp_ser_f3f73b00/readme"
}