smartcloud-mcp is a Model Context Protocol (MCP) server. It lets an AI assistant, such as Claude Code, Cursor or VS Code’s Copilot agent, check and explain smartcloud configs by calling the same code as the action and the CLI, rather than guessing at them.
Why connect it: an assistant editing .github/smartcloud.yml can validate its change before suggesting it, explain why a check failed from the rule id, and check each commit message before committing, so its commits pass the commits check first time.
Every tool only reads. dry_run runs through the dry-run layer, so it lists the writes a run would make and never makes them. There is no doctor tool; run smartcloud doctor for that.
Connect it
The server speaks MCP over stdio. It needs Node 24 or later.1
Add it to your client
Most clients read an Claude Code reads
mcpServers map. From the first v2 release the server ships in the @resnovas/smartcloud npm package:.mcp.json
.mcp.json in the repository root; Cursor reads .cursor/mcp.json. With Claude Code you can also run claude mcp add smartcloud -- npx -y -p @resnovas/smartcloud smartcloud-mcp.Before that release, build it from a checkout (pnpm install && pnpm nx run @resnovas/smartcloud-mcp:build) and use "command": "node", "args": ["/path/to/smartcloud/apps/mcp/dist/main.js"].2
Give it a token (optional)
Tools that read GitHub (
dry_run, plan_settings, and validating a config with extends) use GITHUB_TOKEN, or the token of the signed-in GitHub CLI (gh auth login). The token is resolved only when a tool needs GitHub, so validating a config without extends works offline.3
Ask for it
Start the server from the repository you work in, since
config paths are read relative to it. Then ask, for example:- “Validate
.github/smartcloud.ymlwith smartcloud.” - “Explain the smartcloud finding
AI-02and how to fix it.” - “Dry-run smartcloud on pull request 42 of my-org/my-repo with my local config.”
- “Check this commit message with smartcloud before you commit.”
Tools
event is one of schedule, push or workflow_dispatch. An empty features list runs every feature, as leaving it out does. Without config or configText, dry_run and plan_settings read the repository’s config from its default branch, as the action does.
Local config files
dry_run and plan_settings take the config to use in one of two ways:
configText: the config itself, YAML or JSON. Prefer this: the server reads nothing from disk.config: a path to a config file. The server reads it only when the path is relative, resolves inside the directory the server was started in (after following symlinks), and names a regular file. Any other path is refused with a tool error, and nothing is read.