Skip to main content
Glama
jim788e
by jim788e

sitepilot-mcp

sitepilot-mcp is the local transport and credential adapter for a WordPress site running the SitePilot MCP plugin. WordPress remains the policy-enforcement point: this package forwards the site's live tools/list and tools/call surface and does not register independent tools or safety policy.

Quick start

Requires Node.js 22 or later and an HTTPS WordPress site with SitePilot MCP 0.4.8 or later.

npx sitepilot-mcp login --url https://wordpress.example --scopes site:read
npx sitepilot-mcp init --client cursor --profile wordpress-example

Restart the client after init. Application Password login is the default; add --oauth for OAuth 2.1 with PKCE. Saved secrets live in ~/.config/sitepilot/profiles.json, are written with mode 0600 where the OS supports it, and are referenced—not copied—by generated client configuration.

The quick start intentionally resolves the current npm release. The generated client configuration does not: init writes the exact installed package version (for example, sitepilot-mcp@0.1.6) so a client restart cannot silently change the executable.

Run directly without a saved profile:

npx sitepilot-mcp --profile wordpress-example --transport http --port 8770

The HTTP transport binds to loopback and serves /mcp. Clients that support remote MCP and OAuth discovery can instead connect directly to https://wordpress.example/wp-json/sitepilot-mcp/v2/mcp without this package.

Related MCP server: AgentLinkWP

Client setup

init merges the sitepilot entry into an existing configuration and creates one pristine .bak copy before the first edit. Later runs preserve that original backup. It never writes a credential into a client file.

The primary compatibility matrix covers five independent coding-agent products: Claude Code, Codex, Cursor, Antigravity CLI, and Windsurf. Google replaced Gemini CLI with Antigravity CLI; its executable is agy. Antigravity IDE and Claude Desktop remain supported secondary installation targets and are verified separately rather than counted as additional products.

Client

Configuration

Operating rules

Restart instruction

Claude Code (primary)

.mcp.json

CLAUDE.md

Restart the Claude Code session

Codex (primary)

.codex/config.toml

AGENTS.md

Trust the project so Codex loads project-scoped configuration; restart the session; verify with /mcp

Cursor (primary)

.cursor/mcp.json

.cursorrules

Developer: Reload Window

Antigravity CLI (primary; agy alias)

.agents/mcp_config.json

AGENTS.md

Restart agy; verify with /mcp

Antigravity IDE

~/.gemini/config/mcp_config.json

.agents/rules/sitepilot.md

Refresh MCP servers; start a new Agent session

Claude Desktop

platform Claude config

Site playbooks

Quit and reopen Claude Desktop

Windsurf (primary)

~/.codeium/windsurf/mcp_config.json

AGENTS.md

Reload Window

Use --client major for the Owner-approved five-product primary set, or --client all to include Antigravity IDE and Claude Desktop. Clients without an independent installation marker are reported as skipped. SitePilot writes each client's documented local and remote field shape rather than treating the formats as interchangeable. Use --remote for native Streamable HTTP plus OAuth discovery:

npx sitepilot-mcp init --client codex --remote --url https://wordpress.example

That writes only the HTTPS MCP URL and transport. The npm command and local profile reference are omitted. The WordPress plugin also advertises editable site playbooks through prompts/list; bodies are fetched lazily with prompts/get, labelled as untrusted site-authored instructions, and never grant scope or approval.

Claude Code uses OAuth discovery when no scopes are supplied. To cap its request deliberately, pass init --client claude-code --remote --scopes site:read,content:write; the generated string-form oauth.scopes value is a ceiling, not a hint. Antigravity CLI and IDE accept only the documented URL-only remote shape; their documented oauth object is for client credentials and has no scope field. SitePilot therefore enforces their least-privilege default at the WordPress authorization server: a dynamically registered client that omits RFC 7591 scope is registered with site:read, and any broader authorization request is reduced to that ceiling before consent and token issue. Clients that intentionally need more authority must include the desired space-separated scope in Dynamic Client Registration. The npm adapter does this during login --oauth; its generated Antigravity configuration remains URL-only. init --scopes is rejected for every client except Claude Code because the other generated formats do not encode an equivalent ceiling. For Claude Code, when --profile names a saved credential and --scopes is omitted, init reuses that profile's granted scopes only if its normalized site URL matches the requested remote URL; a mismatch stops before any client configuration is written.

Zed, Cline, Warp, Continue, OpenCode, VS Code with Copilot, and other standards-compatible clients can use the same exact-version stdio command or canonical remote URL. They are generic MCP compatibility targets until their own real-install acceptance run is recorded; they are not silently counted as passed by the five-client matrix.

Commands

sitepilot-mcp login --url <url> [--oauth] [--scopes a,b] [--label text]
sitepilot-mcp logout --profile <name>
sitepilot-mcp init --client claude-code|claude-desktop|codex|cursor|agy|antigravity-cli|antigravity-ide|windsurf|major|all (--profile <name> | --remote --url <url>)
sitepilot-mcp init --client claude-code --remote (--profile <name> | --url <url>) [--scopes a,b]
sitepilot-mcp doctor --url <url>
sitepilot-mcp tools --url <url> [--json]
sitepilot-mcp call <tool> --input @plan.json [--dry-run]

Common flags: --profile, --api-version v1|v2, --timeout, --read-only, --allow-tier 0|1|2|3, and --version.

For migration compatibility, the former gemini and gemini-cli selections map to antigravity-cli; new documentation and generated output use agy/antigravity-cli.

Ambiguous family aliases are rejected: use claude-code or claude-desktop, and antigravity-cli/agy or antigravity-ide.

--read-only and --allow-tier are local ergonomics that avoid unwanted attempts. They are not a security boundary. WordPress capabilities, bounded credential scopes, risk classification, approvals, optimistic concurrency, auditing, and rollback remain authoritative in the plugin.

Before forwarding execute-change or rollback-change, the client performs one additional get-change-status call so it can enforce the local --allow-tier preference. The requested mutation and its arguments are otherwise forwarded unchanged; WordPress remains authoritative.

Run sitepilot-mcp doctor to distinguish insecure HTTP, unreachable REST, missing or inactive plugin, stripped authorization headers, invalid or revoked credentials, and insufficient scopes.

License

Apache-2.0. The WordPress plugin is licensed separately under AGPL-3.0-or-later.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP-compatible AI agents to securely manage multiple self-hosted WordPress sites, including content editing, theme management, and maintenance operations with fine-grained permission controls.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage WordPress sites by providing tools for posts, media, users, plugins, menus, widgets, comments, options, and system administration over the MCP protocol, with support for application passwords and OAuth 2.1.
    GPL 2.0
  • A
    license
    B
    quality
    C
    maintenance
    Enables MCP-compatible clients to securely operate a WordPress site through a signed REST API, managing plugins, content, themes, menus, media, users, WooCommerce, Elementor, audits, and allowlisted WP-CLI commands.
    58
    74 npm
    MIT