# DolphinScheduler MCP Server

A Model Context Protocol (MCP) server for Apache DolphinScheduler, allowing AI agents to interact with DolphinScheduler through a standardized protocol.

## Overview

DolphinScheduler MCP provides a FastMCP-based server that exposes DolphinScheduler's REST API as a collection of tools that can be used by AI agents. The server acts as a bridge between AI models and DolphinScheduler, enabling AI-driven workflow management.

## Features

- Full API coverage of DolphinScheduler functionality
- Standardized tool interfaces following the Model Context Protocol
- Easy configuration through environment variables or command-line arguments
- Comprehensive tool documentation

## Installation

```bash
pip install dolphinscheduler-mcp
```

## Configuration

### Environment Variables

- `DOLPHINSCHEDULER_API_URL`: URL for the DolphinScheduler API (default: http://localhost:12345/dolphinscheduler)
- `DOLPHINSCHEDULER_API_KEY`: API token for authentication with the DolphinScheduler API
- `DOLPHINSCHEDULER_MCP_HOST`: Host to bind the MCP server (default: 0.0.0.0)
- `DOLPHINSCHEDULER_MCP_PORT`: Port to bind the MCP server (default: 8089)
- `DOLPHINSCHEDULER_MCP_LOG_LEVEL`: Logging level (default: INFO)

## Usage

### Command Line

Start the server using the command-line interface:

```bash
ds-mcp --host 0.0.0.0 --port 8089
```

### Python API

```python
from dolphinscheduler_mcp.server import run_server

# Start the server
run_server(host="0.0.0.0", port=8089)
```

## Available Tools

The DolphinScheduler MCP Server provides tools for:

- Project Management
- Process Definition Management
- Process Instance Management
- Task Definition Management
- Scheduling Management
- Resource Management
- Data Source Management
- Alert Group Management
- Alert Plugin Management
- Worker Group Management
- Tenant Management
- User Management
- System Status Monitoring

## Example Client Usage

```python
from mcp_client import MCPClient

# Connect to the MCP server
client = MCPClient("http://localhost:8089/mcp")

# Get a list of projects
response = await client.invoke_tool("get-project-list")

# Create a new project
response = await client.invoke_tool(
    "create-project", 
    {"name": "My AI Project", "description": "Project created by AI"}
)
```

## License

Apache License 2.0 