dolphin-mcp-pilot
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DS_URL | Yes | The base URL of the Apache DolphinScheduler server. | |
| DS_USER | No | Username for authentication. | |
| DS_TOKEN | No | API token for authentication. | |
| DS_PASSWORD | No | Password for authentication. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ds_test_connectionA | Test DolphinScheduler login and connectivity. |
| ds_list_projectsA | List all projects. Returns [{id, code, name, description}]. |
| ds_create_projectC | Create a new project. Args: name: Project name description: Optional description |
| ds_rename_projectA | Rename a project. Args: old_name: Current project name new_name: New project name description: Optional new description; keeps the existing one if omitted |
| ds_delete_projectA | Delete an entire project, cascading to all workflows, schedules and instances. This is irreversible - use with caution. |
| ds_list_datasourcesB | List data sources. Args: ds_type: HIVE / MYSQL / POSTGRESQL / SPARK / CLICKHOUSE etc. |
| ds_list_workflowsA | List workflow definitions with pagination, search and exact-match support. v2.0.12: merged ds_list_workflows_simple and ds_get_workflow_by_name.
Args: project_name: Project name page_no: Page number, starting at 1 page_size: Items per page (max recommended 100) search: Fuzzy search keyword (name + description) name: Exact workflow name match use_simple: Use simple-list endpoint when True |
| ds_get_workflowA | Read a single workflow definition (DAG, global params, node coordinates, etc.). Args: project_name: Project name workflow_code: Process-definition code (from ds_list_workflows) compact: Compact mode (default False). When True, returns only metadata and task summary without full taskParams/SQL, greatly reducing token usage. Suitable when you only need to understand DAG structure. |
| ds_create_workflowB | Create a workflow (supports simple SQL mode and complex DAG mode). Mode 1 - Simple SQL (backward compatible):
Mode 2 - Complex DAG:
Args: project_name: Project name name: Workflow name description: Description sql_statements: [Mode 1] SQL, multiple separated by ";;;" datasource_id: [Mode 1] Datasource ID sql_ds_type: [Mode 1] SQL type (HIVE/MYSQL) tasks_json: [Mode 2] Task definition JSON array string relations_json: [Mode 2] Task relation JSON array string schedule: Whether to create a schedule schedule_cron: Quartz 7-field cron expression schedule_start: Schedule start time (defaults to today) schedule_end: Schedule end time (defaults to 2030-12-31) auto_online: Whether to auto-release workflow and schedule |
| ds_release_workflowA | Bring a workflow online or offline. When bringing online (online=True), auto_online_schedule will also re-activate the associated schedule if it was taken offline (DS takes schedules offline when the workflow goes offline). Args: project_name: Project name workflow_code: Process-definition code online: True=online, False=offline auto_online_schedule: Auto-reactivate associated schedule when going online (default True) Returns: { "workflow_code": int, "releaseState": "ONLINE" / "OFFLINE", "schedule_action": str, "schedule_id": int, } |
| ds_run_workflowA | Manually trigger a workflow run (brings it online first). Args: project_name: Project name workflow_code: Process-definition code start_task_names: Optional list of task names to start from (including their downstream tasks). Leave empty to run the entire workflow. Example: ["partition_check"] starts from that task and all its successors. |
| ds_delete_workflowA | Delete workflow(s) by code (takes offline first). Supports single or batch delete. v2.0.12: merged ds_batch_delete_workflows.
Args: project_name: Project name workflow_code: Process-definition code (int for single, list for batch) Returns: Single: {"workflow_code": int, "status": "deleted"} Batch: {"total": int, "deleted": int, "failed": int, "deleted_codes": [...], "failed_details": [...]} |
| ds_update_workflowA | Update workflow definition (PUT method, preserves code, auto-increments version). This is a fallback when ds_modify_workflow_dag cannot handle the change. Supports full task definition override with complete replacement. Args: project_name: Project name workflow_code: Process-definition code task_definitions: Task definition list (list or JSON string) task_relations: Task relation list (list or JSON string) locations: Node coordinates (list or JSON string, default "[]") name: Workflow name (empty = keep original) description: Description (empty = keep original) auto_offline: Auto-offline before update (default True) auto_online: Auto-online after update (default True) |
| ds_get_task_detailA | Read full parameters of a single task (returns only that task, not the whole DAG). Added in v2.0.12 for the "verify a task change took effect" scenario, avoiding pulling a huge DAG payload. Args: project_name: Project name workflow_code: Process-definition code task_name: Task name (exact match) Returns: { "task_code": int, "task_name": str, "task_type": str, "task_params": {...}, # Full taskParams (preStatements/postStatements/sql/script etc.) "description": str, "fail_retry_times": int, "timeout": int, ... } |
| ds_list_workflow_versionsC | List historical versions of a workflow. Args: project_name: Project name workflow_code: Process-definition code page_size: Number of items to return |
| ds_rollback_workflow_versionA | Roll back a workflow to a specific historical version. Args: project_name: Project name workflow_code: Process-definition code version: Target version number (from ds_list_workflow_versions) |
| ds_clone_workflowA | Clone/copy a workflow. Args: project_name: Project name source_workflow_code: Source workflow code new_name: New workflow name description: New workflow description (empty = copy source description) auto_online: Auto-release after cloning Returns: { 'success': True, 'workflow_code': int, # New workflow code 'source_code': int, 'name': str, ... } |
| ds_create_dag_workflowA | Create a generic DAG workflow supporting any task type (SQL/SHELL/PYTHON/DEPENDENT/SUB_PROCESS/HTTP etc.). python3 /public/check_partition.py table_name $[yyyyMMdd-1]", "resource_list": [67], # optional: referenced resource id or path "fail_retry_times": 3}, # optional: retry count on failure |
| ds_modify_workflow_dagA | Modify existing workflow DAG (add/delete/update tasks + adjust dependencies). export PATH=/xxx/bin:$PATH python3 script.py", # or "rawScript" |
| ds_update_task_paramA | Lightweight single-task parameter update — no need to pass full DAG definition. This tool is a convenience wrapper around ds_modify_workflow_dag's update_task, automatically handling the "read → modify → write → online/offline" flow. Use case: Change a single task's SQL/script/name/retry params without constructing a full operations list. Args: project_name: Project name workflow_code: Workflow code task_name: Task name to modify (exact match) updates: Fields to update (flat dict, field names same as update_task's updates) auto_offline: Auto-offline before modification (default True) auto_online: Auto-online after modification (default True) auto_online_schedule: Auto-restore schedule after onlining (default True, v2.0.11) Supported updates fields (snake_case and camelCase both accepted): Common: name, description, fail_retry_times(failRetryTimes), fail_retry_interval(failRetryInterval), timeout, timeout_flag(timeoutFlag), timeout_notify_strategy(timeoutNotifyStrategy), worker_group(workerGroup), task_priority(taskPriority), delay_time(delayTime), flag SQL: sql, datasource_id(datasource), sql_type, sql_type_select(sqlType), pre_statements(preStatements), post_statements(postStatements), local_params(localParams), resource_list(resourceList) SHELL/PYTHON: script(rawScript), resource_list(resourceList), local_params(localParams) ⚠️ Unrecognized fields are reported in the return value's ignored_fields (not silently dropped). Returns: { "workflow_code": int, "task_name": str, "schedule_action": str, "status": "updated", } Examples: # Change a single task's retry params ds_update_task_param( project_name="my_project", workflow_code=21583255237888, task_name="check_partition", updates={"fail_retry_times": 8, "fail_retry_interval": 1} ) |
| ds_list_process_instancesA | List process instances (filter by workflow_code, state). v2.0.12: merged ds_list_workflow_instances.
Troubleshooting / Progress Tracking (v2.0.18): After getting instances, to understand execution details (which tasks running/failed/stuck), use ds_list_task_instances(process_instance_id=, include_full=True) to view task states:
Args: project_name: Project name workflow_code: Process-definition code (0 = no filter, list all instances) state: State filter (FAILURE / SUCCESS / RUNNING_EXECUTION / STOP, empty = no filter) page_size: Number of items to return |
| ds_stop_process_instanceA | Stop a running workflow instance (force kill). |
| ds_pause_process_instanceB | Pause a running workflow instance. |
| ds_resume_process_instanceC | Resume a paused workflow instance. |
| ds_rerun_process_instanceA | Rerun entire workflow instance (from the beginning). |
| ds_rerun_from_failureA | Resume from failed tasks (rerun only failed and pending tasks, skip succeeded ones). |
| ds_delete_process_instanceC | Delete a historical process instance. |
| ds_complement_dataA | Backfill (complement) workflow data for date range or single partition. Recommended usage (v2.0.14):
⚠️ Important (v2.0.19):
Args: project_name: Project name workflow_code: Process-definition code start_date: Start date yyyy-MM-dd (for range backfill) end_date: End date yyyy-MM-dd (for range backfill) partition_date: Single partition yyyy-MM-dd (alternative to start_date+end_date, recommended for clarity) start_task_names: Optional list of task names to start from (backfills these + their downstream tasks) task_depend_type: Dependency type (default TASK_POST: from start tasks forward; TASK_ONLY: start tasks only; TASK_PRE: start tasks + upstream) run_mode: RUN_MODE_SERIAL (default, one at a time) or RUN_MODE_PARALLEL (concurrent) Serial ordering guarantee (v2.0.18): In RUN_MODE_SERIAL, the request is submitted using DS's continuous range fields complementStartDate / complementEndDate, so DS generates instances strictly in ascending day order. Discrete date-list formats (complementScheduleDateList / comma-separated) do not guarantee ordering and are only used as fallbacks. The chosen format is reported in the return value's "format" field ("date_range" / "comma_separated" / "json_list"). Examples: # Single partition (recommended) ds_complement_data(workflow_code=123, partition_date="2024-01-01") |
| ds_list_task_instancesA | List task instances for a process instance (filter by state, optionally include full details). v2.0.18: Added include_full parameter for detailed troubleshooting. Args: project_name: Project name process_instance_id: Process instance ID state: State filter (FAILURE / SUCCESS / RUNNING_EXECUTION, empty = no filter) include_full: When True, returns full taskParams/SQL/script for each task (useful for detailed analysis but consumes more tokens) Returns: List of task instances with: - Basic info: id, name, taskType, state, startTime, endTime, retryTimes - If include_full=True: also includes taskParams (SQL/script/dependency config) |
| ds_get_task_logA | Fetch task execution log (supports pagination). Args: task_instance_id: Task instance ID (from ds_list_task_instances) skip_line_num: Skip first N lines (for pagination) limit: Max lines to fetch (default 1000) Returns: { "task_instance_id": int, "log": str, "line_start": int, "line_count": int, "hint": str } |
| ds_force_task_successA | Force mark a task as success (dangerous — bypasses actual execution). ⚠️ Warning: Use only when task is stuck/failed but you've verified data correctness. This does NOT rerun the task — it only changes the state flag. |
| ds_skip_taskA | Skip a task (mark as success without running). ⚠️ Warning: Use only for non-critical tasks (e.g., notifications). Downstream tasks will proceed as if this task succeeded. |
| ds_get_latest_failure_logA | One-click fetch of all failed task logs from the latest failed instance. Combines 3 common troubleshooting steps (list instances → list tasks → fetch logs). v2.0.10: Added per-step error handling — returns partial diagnostic info even if some steps fail. Args: project_name: Project name workflow_code: Process-definition code log_limit: Lines of log to fetch per failed task (default 500) Returns: { "workflow_code": int, "instance_id": int, # Latest failed instance ID "instance_state": "FAILURE", "start_time": str, "failed_tasks": [ # All failed tasks { "task_instance_id": int, "task_name": str, "task_type": str, "start_time": str, "end_time": str, "log_tail": str # Last log_limit lines } ], "errors": [...] # v2.0.10: Per-step error messages "hint": ... } |
| ds_list_schedulesA | List schedule configurations (optionally filtered by workflow_code). v2.0.12: merged ds_list_schedules_in_project and ds_get_workflow_schedule.
Args: project_name: Project name workflow_code: Process-definition code (0 = no filter) simplify: Return summary dict instead of raw list page_no: Page number page_size: Items per page |
| ds_set_scheduleA | Create a schedule for a workflow (created OFFLINE; activate with ds_online_schedule). v2.0.12: cron is now required (no default) to prevent silent misuse. Args: project_name: Project name workflow_code: Process-definition code cron: Quartz 7-field expression (required, e.g. "0 0 6 * * ? *") start_time: Start time yyyy-MM-dd HH:mm:ss; defaults to today 00:00:00 end_time: End time; defaults to 2030-12-31 23:59:59 |
| ds_online_scheduleC | Activate (bring online) a schedule. |
| ds_offline_scheduleC | Deactivate (take offline) a schedule. |
| ds_delete_scheduleA | Delete a schedule (takes it offline first). |
| ds_update_schedule_cronA | Update only the cron expression of a schedule (keeps all other settings). Flow: read current state → offline if needed → update → re-online (default). v2.0.10: queries the target schedule directly instead of scanning the full list. Args: project_name: Project name schedule_id: Schedule ID (from ds_list_schedules) cron: New Quartz 7-field expression start_time: New start time yyyy-MM-dd HH:mm:ss (keep original if empty) end_time: New end time (keep original if empty) auto_online: Re-activate after update (default True) Returns: { "schedule_id": int, "new_cron": str, "release_state": "ONLINE" | "OFFLINE", "status": "updated", "online_retry_detail": str } |
| ds_list_resourcesA | List resources (files and folders) at a given path. Args: resource_type: Resource type — FILE / UDF / ALL (default, lists both) full_name: Path prefix filter; empty = list everything from root |
| ds_view_resourceA | View resource file content (paginated, text files only). Args: resource_id: Resource ID (from ds_list_resources or ds_get_resource_by_name) skip_line_num: Number of lines to skip limit: Max lines to read |
| ds_get_resource_by_nameA | Find a resource (file or folder) by full path, returning id and metadata. Implementation: uses /resources/list recursive search (avoids /resources/query-by-name due to known DS bug). Args: full_name: Full resource path, e.g. "public/test.py" or "scripts" resource_type: Resource type, default FILE |
| ds_download_resourceA | Download a resource file (supports binary, e.g. jar, zip). Args: resource_id: Resource ID save_to: Optional local save path (accessible to MCP server process). If empty, returns base64-encoded content. Returns: If save_to provided: {"resource_id", "saved_to", "size"} Otherwise: {"resource_id", "size", "content_base64"} |
| ds_create_folderA | Create a folder in the resource area. Args: name: Folder name (no path prefix, e.g. "scripts") current_dir: Parent directory path, default root "/" resource_type: FILE or UDF |
| ds_online_create_fileA | Create a text file inline (no upload required). Args: file_name: Filename without extension (e.g. "my_script") suffix: File extension without dot (e.g. "py" / "sh" / "sql") content: Text content to write current_dir: Parent directory path, default root "/" description: File description resource_type: FILE or UDF |
| ds_upload_fileA | Upload a file to the resource area (supports binary, e.g. jar / zip). Two ways to provide file content: Method 1: local_path — path to a file accessible by the MCP server process Method 2: file_name + file_content_base64 — base64-encoded content Args: local_path: Local file path (Method 1) file_name: Filename with extension (Method 2) file_content_base64: Base64-encoded file content (Method 2) current_dir: Parent directory path, default root "/" resource_type: FILE or UDF |
| ds_update_resource_contentA | Update resource file content (text files only). ⚠️ Changes take effect immediately. Workflows referencing this script will use the new version on their next execution. Args: resource_id: Resource ID content: New file content description: Update note (optional) |
| ds_rename_resourceA | Rename a resource file or folder. ⚠️ Warning: DS may implement rename as delete + recreate, which changes the resource_id. If this resource is referenced by workflow tasks, the reference will become invalid after renaming. Check references with ds_list_workflows before proceeding. Args: resource_id: Resource ID new_name: New name (filename or folder name only, no path prefix) description: Description resource_type: FILE or UDF |
| ds_delete_resourceA | Delete a resource (file or folder). ⚠️ Warning: Deletion is irreversible. Resources referenced by workflow tasks will cause those tasks to fail on next execution. DS behavior: Deleting a non-empty folder returns error 20018. Use recursive=True to delete children first, then the folder. Args: resource_id: Resource ID recursive: Delete children recursively (for folders, default False) Returns: {"resource_id", "status", "deleted_children"} |
| ds_monitor_mastersA | Check DS master node status (verify scheduler is alive). |
| ds_monitor_workersA | Check DS worker node status (verify task executors are alive). |
| ds_list_usersA | List all DS users (useful for debugging workflow user_id foreign key issues). |
| ds_list_tenantsA | List all tenants (useful for debugging workflow tenant_id foreign key issues). |
| ds_raw_getA | Pass GET through to DolphinScheduler API (path must start with /, excluding the /dolphinscheduler prefix). |
| ds_raw_deleteC | Pass DELETE through to DolphinScheduler API. |
| ds_raw_postA | Pass POST through to DolphinScheduler API. Args: path: API path (starting with /) form_data_json: form-urlencoded params as a JSON string (choose one) json_body_json: JSON body as a JSON string (choose one) |
| ds_raw_putC | Pass PUT through to DolphinScheduler API. |
| ds_helpA | Interactive guide to DolphinScheduler MCP tools. Call without arguments to see all categories, or pass a category name to view tools and workflows for that category. Available categories:
Args: category: Category name (empty string returns all categories) Returns: If category is empty: overview with tool counts If category is specified: {category, name, tools, workflow, hint} |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/iflytek/dolphin-mcp-pilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server