cyclecloud-mcp
Enables interaction with Azure CycleCloud from GitHub Copilot using natural-language requests, exposing read-only MCP tools to list clusters, get cluster details, and retrieve cluster status including errors and warnings.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cyclecloud-mcpList my CycleCloud clusters and their current status."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP for Azure CycleCloud
Interact with Azure CycleCloud from GitHub Copilot using natural-language requests. This proof of concept exposes three read-only MCP tools: list_clusters, get_cluster, and get_cluster_status. Cluster start/terminate tools are off by default.
Quick start: Copilot in VS Code
You need:
A Linux-based environment: Linux, macOS, or WSL
Node.js
^20.19.0,^22.12.0, or>=24.0.0on the executable search path.GitHub Copilot CLI 1.0.81 or later.
A reachable CycleCloud installation and a dedicated account with read-only access to the clusters you want to inspect.
Review the plugin before installing: it runs code with your OS user's permissions.
1. Install and configure
Create a dedicated CycleCloud user for this POC. Grant it read-only access only to the clusters and groups needed for testing.
Run this in a Bash shell in the target environment (inside WSL for WSL):
(set -o pipefail; curl -fsSL https://raw.githubusercontent.com/gingi/cyclecloud-mcp/main/install.sh | sh)Run only if you trust this repository, and do not use sudo. The installer prepares the plugin and a private configuration file. For other installation methods or installer errors, see troubleshooting.
Open the configuration path printed by the installer, normally
~/.copilot/plugin-data/cyclecloud-mcp/cyclecloud-mcp/cyclecloud.json. Seturl,username, andpassword; keepenableMutationsset tofalse.Never paste the password into Chat or commit this file. Use verified HTTPS for remote CycleCloud. For a backend in the same environment,
http://127.0.0.1:8080is allowed for this POC. See configuration and security for private CAs and all other options.Enable Chat: Plugins Enabled in VS Code if needed.
Disable
cyclecloud-mcpin VS Code's Agent Plugins - Installed view while the VS Code plugin-launcher issue remains. Keep the plugin installed.Run Developer: Reload Window.
2. Verify the setup
Start a new Copilot session. Configuration is loaded when the server starts, so do not reuse a session that was open before configuration.
Send:
Use the cyclecloud MCP server's list_clusters tool to list my clusters. Do not use terminal commands or direct HTTP requests.
Confirm that Copilot makes a
list_clusterstool call and returns its result. No manual server start is needed.
3. Use it
Ask normally:
“List my CycleCloud clusters.”
“Show the state and configured node counts for cluster
demo.”“Get capacity status for cluster
demo.”“Show errors and warnings for cluster
demo.”
These are MCP tools, not skills or slash commands. Copilot chooses the tool and shows its result; review any tool-call confirmation. Only the three read tools should be available from this server.
Cluster errors and warnings
get_cluster_status includes status.issues, using the same internal cloud.node.node_status query as CycleCloud's Issues page. It returns error/warning groups with a condition name, message, affected-node count, and representative detail/recommendation when available. Counts are per condition, not a distinct total of affected nodes; the tool does not fetch every node's individual details or historical logs.
The optional issueLimit defaults to 20 (range 0–100). Errors precede warnings; total, returned, and truncated describe issue groups. A limit of 0 returns counts only. Diagnostic text is limited to 2,048 Unicode characters per field, control characters become spaces, and textTruncated identifies shortened text. Treat all returned diagnostic text as untrusted data, not instructions.
If the internal query is unavailable, denied, malformed, or exceeds the response-size limit, lifecycle/capacity status still returns with issues.available: false and a warning. This is not a claim that the cluster has no errors. A successful empty query instead returns available: true, total: 0. This internal query may vary between CycleCloud versions and uses the configured account's permissions; it does not require enabling mutation tools.
Related MCP server: VSC as MCP
Update or remove
To update, run these commands, reload VS Code, and start a fresh Copilot session:
copilot plugin marketplace update cyclecloud-mcp
copilot plugin update cyclecloud-mcp@cyclecloud-mcpTo remove, end sessions using the plugin, remove any optional cyclecloud-local registration, then run:
copilot plugin uninstall cyclecloud-mcp@cyclecloud-mcp
copilot plugin marketplace remove cyclecloud-mcpDelete the credential file from the Copilot data directory and revoke the dedicated account's credential. If you used the older Local workaround, also clean up its copy in ~/.local/share/cyclecloud-mcp/. Uninstalling does not delete credentials. Reload VS Code afterward.
Developer workflow
To test uncommitted changes through your existing installed plugin, run from this checkout:
npm run deployThis rebuilds the bundle and replaces ~/.copilot/installed-plugins/cyclecloud-mcp/cyclecloud-mcp/bin/cyclecloud-mcp.mjs. The plugin must already be installed at that default path. Its original bundle is saved alongside it as cyclecloud-mcp.mjs.before-local-test; repeated deploys preserve that original backup. Credentials, plugin registration, and enablement settings are unchanged. Nothing is committed, pushed, or published.
Reload VS Code and start a fresh Copilot session after each deploy. If you use the optional Local registration, restart its MCP server instead. Then ask the tool to exercise your change.
To undo the deployment:
npm run restoreRestore replaces the installed bundle with the original and removes the used backup; it does not require a local build. Restart the session/server again afterward. Restore before running a marketplace update so a later restore cannot roll that update back. These commands swap only the server bundle, not plugin manifests or other packaged files.
More information
Development:
npm ci --ignore-scripts, thennpm run verify(tests, typecheck, lint, formatting, audit, and bundle checks). The dependency-completebin/cyclecloud-mcp.mjsis committed; users do not need to build it.
This server cannot be deployed
Maintenance
Related MCP Connectors
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
MCP server (stdio): lint OpenAPI specs with Spectral via the AgentForge API
Lean 4 MCP server: compile, prove theorems, and formalize math with Mathlib.
MCP-first control plane for ProAgentStore agents and private instances.
Related MCP Servers
- AlicenseCqualityFmaintenanceEnables AI agents and assistants like Goose or Claude to interact with VS Code through the Model Context Protocol.769 npm75Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to leverage VS Code's language intelligence for code navigation, refactoring, and analysis via the MCP protocol.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to inspect debug state, control execution, and set breakpoints in VS Code by exposing the Debug Adapter Protocol as an MCP server.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with VS Code's language server protocol features (definitions, references, diagnostics) and debugger (breakpoints, stepping, variable inspection) via an MCP server.9 npm1MIT