Skypilot
FreeNot checkedMCP server for SkyPilot that lets LLMs manage cloud clusters, jobs, and storage through the Model Context Protocol.
About
MCP server for SkyPilot that lets LLMs manage cloud clusters, jobs, and storage through the Model Context Protocol.
README
MCP server for SkyPilot. Lets LLMs manage cloud clusters, jobs, and storage through the Model Context Protocol.
Built with fastmcp v3.
Demo
https://github.com/user-attachments/assets/ce90b863-b186-4673-a247-63fb84483a35
Setup
Requires Python 3.10+.
# Claude Code
claude mcp add --transport stdio --scope project skypilot -- \
uvx --from git+https://github.com/alex000kim/skypilot-mcp skypilot-mcp
# With a remote SkyPilot API server
claude mcp add --transport stdio --scope project \
--env SKYPILOT_API_SERVER_ENDPOINT=http://your-server:46580 \
skypilot -- \
uvx --from git+https://github.com/alex000kim/skypilot-mcp skypilot-mcp
For Claude Desktop, add to your MCP config:
{
"mcpServers": {
"skypilot": {
"command": "uvx",
"args": ["--from", "git+https://github.com/alex000kim/skypilot-mcp", "skypilot-mcp"]
}
}
}
Using in your own repos
This repo includes a .mcp.json file. Copy it into any repo that contains SkyPilot task YAMLs, and coding agents (Claude Code, Cursor, Windsurf, etc.) working in that repo will automatically have access to all SkyPilot MCP tools — launching clusters, submitting jobs, checking status, and more — without any manual setup.
cp .mcp.json /path/to/your-skypilot-project/
Tools
Clusters
| Tool | Description |
|---|---|
skypilot_cluster_status |
List clusters and their statuses |
skypilot_cluster_launch |
Launch a cluster from a task YAML |
skypilot_cluster_exec |
Run a task on an existing cluster |
skypilot_cluster_stop |
Stop a cluster (preserves disk) |
skypilot_cluster_start |
Restart a stopped cluster |
skypilot_cluster_down |
Tear down a cluster |
skypilot_cluster_autostop |
Set idle autostop timer |
skypilot_cluster_endpoints |
Get cluster endpoint URLs |
Jobs (on a cluster)
| Tool | Description |
|---|---|
skypilot_job_queue |
List jobs on a cluster |
skypilot_job_status |
Get status of specific jobs |
skypilot_job_cancel |
Cancel jobs |
skypilot_job_logs |
Get job log snapshot (last N lines) |
Managed Jobs (auto-recovery, spot)
| Tool | Description |
|---|---|
skypilot_managed_job_launch |
Launch a managed job |
skypilot_managed_job_queue |
List managed jobs (with sorting/pagination) |
skypilot_managed_job_cancel |
Cancel managed jobs |
skypilot_managed_job_logs |
Get managed job log snapshot |
Worker Pools
| Tool | Description |
|---|---|
skypilot_pool_apply |
Create or update a worker pool |
skypilot_pool_status |
Get pool statuses |
skypilot_pool_down |
Delete worker pool(s) |
skypilot_pool_logs |
Get pool log snapshot |
Services (Sky Serve)
| Tool | Description |
|---|---|
skypilot_serve_up |
Launch a service |
skypilot_serve_update |
Update service config (rolling/blue-green) |
skypilot_serve_down |
Tear down service(s) |
skypilot_serve_status |
Get service statuses |
skypilot_serve_logs |
Get service log snapshot |
skypilot_serve_terminate_replica |
Terminate a specific replica |
Volumes
| Tool | Description |
|---|---|
skypilot_volume_apply |
Create or register a volume (PVC, RunPod) |
skypilot_volume_ls |
List volumes |
skypilot_volume_delete |
Delete volumes |
DAG Optimization & Validation
| Tool | Description |
|---|---|
skypilot_optimize |
Find best cloud/region/instance for a task |
skypilot_validate |
Validate a task config without launching |
Log Downloads
| Tool | Description |
|---|---|
skypilot_download_logs |
Download cluster job logs locally |
skypilot_managed_job_download_logs |
Download managed job logs |
skypilot_serve_download_logs |
Download service logs |
skypilot_pool_download_logs |
Download pool logs |
skypilot_tail_provision_logs |
Get cluster provisioning logs |
skypilot_tail_autostop_logs |
Get cluster autostop hook logs |
Infrastructure
| Tool | Description |
|---|---|
skypilot_check |
Verify cloud credentials |
skypilot_enabled_clouds |
List enabled clouds |
skypilot_list_accelerators |
List available GPUs/TPUs |
skypilot_list_accelerator_counts |
List accelerator availability counts |
skypilot_kubernetes_node_info |
Get K8s node resources |
skypilot_realtime_gpu_availability |
Real-time K8s GPU availability |
skypilot_kubernetes_label_gpus |
Label K8s GPU nodes for SkyPilot |
skypilot_status_kubernetes |
Get all SkyPilot resources in K8s |
skypilot_local_up / _down |
Manage local K8s cluster |
skypilot_ssh_up / _down |
Manage SSH node pools |
skypilot_realtime_slurm_gpu_availability |
Real-time Slurm GPU availability |
skypilot_slurm_node_info |
Get Slurm node resources |
Storage & Cost
| Tool | Description |
|---|---|
skypilot_storage_ls |
List storage objects |
skypilot_storage_delete |
Delete a storage object |
skypilot_cost_report |
Get cluster cost reports |
API Server
| Tool | Description |
|---|---|
skypilot_api_info |
API server health and version |
skypilot_api_status |
List pending API requests |
skypilot_api_cancel |
Cancel API requests |
skypilot_get_request |
Wait for a request to complete |
skypilot_api_start / _stop |
Start or stop the API server |
skypilot_api_server_logs |
Get API server logs |
skypilot_api_login / _logout |
Authenticate with remote API server |
Config & Utilities
| Tool | Description |
|---|---|
skypilot_reload_config |
Reload ~/.sky/config.yaml |
skypilot_workspaces |
List workspaces |
skypilot_dashboard |
Open SkyPilot dashboard |
skypilot_jobs_dashboard |
Open managed jobs dashboard |
How it works
Long-running operations (launch, exec, stop, down, start, etc.) return a request_id immediately. Use skypilot_get_request with that ID to poll for the result. Read-only operations like status, queue, and cost_report block and return results directly.
The server uses SkyPilot's sync Python SDK. fastmcp runs sync tools in a threadpool, so nothing blocks the event loop.
API server configuration
The MCP server connects to whatever SkyPilot API server your environment is configured for:
- Local (default): SkyPilot auto-starts a local API server on first use
- Remote: Set
SKYPILOT_API_SERVER_ENDPOINTenv var or configure~/.sky/config.yaml
Development
git clone https://github.com/alex000kim/skypilot-mcp
cd skypilot-mcp
uv sync --extra dev
uv run pre-commit install
uv run pytest
Run the server locally:
# stdio (default)
uv run skypilot-mcp
# HTTP
uv run skypilot-mcp --transport http --port 8000
Installing Skypilot
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/alex000kim/skypilot-mcpFAQ
Is Skypilot MCP free?
Yes, Skypilot MCP is free — one-click install via Unyly at no cost.
Does Skypilot need an API key?
No, Skypilot runs without API keys or environment variables.
Is Skypilot hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Skypilot in Claude Desktop, Claude Code or Cursor?
Open Skypilot on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Skypilot with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
