--- title: "Set Up Saddle MCP" url: "https://plugpress.co/docs/mcp-setup.md" canonical: "https://plugpress.co/docs/mcp-setup/" published: "2026-08-26" modified: "2026-08-26" author: "Fahim" tags: - "Saddle" --- # Set Up Saddle MCP **Saddle turns your WordPress site into an MCP server, so an AI app you already use can work on it directly** — writing posts, editing pages, designing layouts with real editor blocks, organising media. Everything runs inside your own WordPress; no third-party server sits in between. Setup is the same shape for every app: Saddle issues a sign-in key for that app alone and writes the whole config for you. Find your app below. ## Before you start - A WordPress site with the [Saddle plugin](/docs/what-is-saddle/) installed, activated and up to date. - **HTTPS**, for every app except Codex — which connects from your own computer and works on local and private sites too. - An administrator account on the site. ## Connect your app Every app starts the same way: in your WordPress dashboard go to **Saddle → Apps**, click **Connect an app**, and choose it from the list. ![Saddle connect wizard in WordPress showing the Choose app step with Claude, ChatGPT, Claude Code, Cursor, Gemini CLI, VS Code and Any MCP app](https://plugpress.co/wp-content/uploads/2026/07/saddle-connect-wizard-choose-app.png) **Copy the setup before you close the wizard.** The key is shown once — Saddle keeps only its name and last four characters — and backing out early revokes it. If you lose it, use **Rotate key** on the app’s row. ### Claude Code One command. Paste it into a terminal and press Enter: ``` claude mcp add saddle-your-site --scope user --transport http https://your-site.com/wp-json/saddle/v1/mcp --header "Authorization: Basic PASTE-YOUR-KEY-HERE" ``` It uses `--scope user`, so the connection saves to your user profile and works from any folder on your computer. ### Claude The desktop app launches MCP servers as local programs, so it bridges to your site with `mcp-remote` — which means it needs [Node.js](https://nodejs.org/) installed. ``` { "mcpServers": { "saddle-your-site": { "command": "npx", "args": [ "-y", "mcp-remote", "https://your-site.com/wp-json/saddle/v1/mcp", "--header", "Authorization: Basic PASTE-YOUR-KEY-HERE" ] } } } ``` In Claude, open **Settings → Developer → Edit Config**, paste, save, then restart the app. ### ChatGPT **ChatGPT reaches your site in two completely different ways, and it is worth getting this straight before you start.** Since OpenAI merged Codex into the desktop app, one app holds Chat, Work and Codex — but they connect by opposite routes. |   | Connector *web only* | Codex *app + terminal* | | --- | --- | --- | | **Who fetches your site** | OpenAI’s servers | **Your own computer** | | **Where you set it up** | ChatGPT on the web only | `~/.codex/config.toml` | | **Sign-in** | OAuth — you approve it on your own site | A pasted key, like every other app | | **Needs public HTTPS** | Yes | **No** | | **Works on a local or private site** | No | **Yes** | | **Can it change your site?** | Only on Business, Enterprise or Edu | **Yes, on any plan** | **What your ChatGPT plan allows, as of August 2026.** Connecting a custom MCP server works on Plus and Pro, but OpenAI currently limits *write* actions to Business, Enterprise and Edu workspaces — [its own documentation](https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt) says Pro users “can connect MCPs with read/fetch permissions” only. So on Plus or Pro, a connector will read your site and refuse to change it, however you set your access level. **That limit is at ChatGPT’s end, not your site’s, and no Saddle setting lifts it.** If you are on Plus or Pro and want ChatGPT to edit anything, use [Codex](/docs/mcp-setup/#codex) instead — it takes a pasted key and none of this applies to it. To set up the connector: 1. Choose **ChatGPT** in the connect wizard. If sign-in is still off, the wizard offers a **Turn on sign-in** button — one click. (If your site can’t offer sign-in yet, the card names what’s missing: HTTPS or pretty permalinks.) 2. In ChatGPT **on the web**, open **Settings → Apps → Advanced Settings** and turn on **Developer mode**. On Business, Enterprise and Edu an admin has to allow it first, under **Workspace Settings → Permissions & Roles → Connected Data**. 3. Go to **Apps → Create**. Enter the address Saddle showed you, choose **OAuth** as the authentication method, then click **Scan Tools** and wait for the scan to finish — you’ll complete the sign-in prompt during it. Then click **Create**. 4. Approve it on your own site. **The consent screen asks how much the app may do — if you want ChatGPT to edit anything, pick Reading & writing or Managing the site.** This is the single most common reason a connection ends up able to read but not change anything. 5. On Business, Enterprise and Edu the app lands as a **draft** under **Workspace settings → Apps → Drafts**, and an admin must **publish** it before the rest of the workspace can use it. ``` Address: https://your-site.com/wp-json/saddle/v1/mcp Authentication: OAuth (leave client ID and secret blank) ``` **The connector is web only.** OpenAI does not support MCP apps on mobile, and the desktop app has no form for creating one. Why the connector needs OAuth at all, and what that does and doesn’t expose, is covered in [OAuth Sign-In](/docs/oauth-sign-in/). ### Codex Codex takes an ordinary pasted key — no OAuth, nothing to approve, and none of the connector’s plan limits — and the `codex` terminal command reads the same file as Codex in the ChatGPT app, so setting it up once covers both. Open `~/.codex/config.toml`, create it if it isn’t there, paste the block at the end, and save: ``` [mcp_servers.saddle-your-site] url = "https://your-site.com/wp-json/saddle/v1/mcp" http_headers = { Authorization = "Basic YOUR-KEY" } startup_timeout_sec = 30 ``` Restart the ChatGPT app afterwards so Codex re-reads the file. The `startup_timeout_sec` line gives your site room to answer the first request — shared hosting is often slower than Codex’s default allows, and without it a slow site looks like a broken key. ### Cursor ``` { "mcpServers": { "saddle-your-site": { "url": "https://your-site.com/wp-json/saddle/v1/mcp", "headers": { "Authorization": "Basic PASTE-YOUR-KEY-HERE" } } } } ``` Open **Settings → MCP → Add new server** and paste it — or save it as `.cursor/mcp.json` in your project to share the connection with that workspace. **That file contains a working key**, so don’t commit it to a public repository; for anything shared, prefer Cursor’s global settings. ### Gemini CLI ``` gemini mcp add --scope user --transport http saddle-your-site https://your-site.com/wp-json/saddle/v1/mcp --header "Authorization: Basic PASTE-YOUR-KEY-HERE" ``` Paste it into a terminal and press Enter. As with Claude Code, `--scope user` means it works from any folder. ### VS Code For GitHub Copilot in **agent mode** — MCP tools aren’t available to normal Copilot chat. Note that VS Code uses `servers`, not `mcpServers`, and needs an explicit type: ``` { "servers": { "saddle-your-site": { "type": "http", "url": "https://your-site.com/wp-json/saddle/v1/mcp", "headers": { "Authorization": "Basic PASTE-YOUR-KEY-HERE" } } } } ``` Save it as `.vscode/mcp.json` in your project, then open the Command Palette, run **MCP: List Servers**, and start the Saddle server. Add the file to `.gitignore` rather than committing it. ### Any other MCP app Saddle runs a standard [Model Context Protocol](https://modelcontextprotocol.io) server, so any app supporting remote MCP servers can connect — not just the ones named above. If your app asks for the pieces separately, these are the three facts it needs: | Field | Value | | --- | --- | | **Server URL** | `https://your-site.com/wp-json/saddle/v1/mcp` | | **Transport** | HTTP (streamable) | | **Header** | `Authorization: Basic` followed by the key from the wizard | If your app rejects the standard `mcpServers` shape, try the VS Code shape above — some clients use `servers` and require `"type": "http"`. If it can’t send custom headers at all, use OAuth instead: it’s the same flow ChatGPT’s connector uses, and it works for any OAuth-capable client. ## Verify the connection Whichever app you connected, ask it: ``` What can you see on my WordPress site? ``` It should report your site name, WordPress version and content counts. The app also appears in **Saddle → Apps** as soon as its first call arrives, where you can rotate its key, change its access level, or disconnect it. A useful habit: ask *“how many tools do you have for my site?”* The number tells you at a glance whether everything is working. ## What you can do next Whatever you allow. Saddle starts every site at **Just reading** — it can look, and change nothing, until you raise the level on the [Permissions](/docs/permissions-access-levels/) screen. Every deletion goes through a [preview-and-confirm approval](/docs/safe-deletions/) at any level. Some things to try once you’ve raised it: - *“Draft a post about our new pricing, save it as a draft for me to review.”* - *“Build a landing page for the spring sale using my theme’s own styles.”* - *“Find every image on the site with no alt text and write one for each.”* - *“What changed on my site this week?”* ## It didn’t connect — what now? Open **Saddle → Apps → Connection details & health** and click **Test the endpoint**. That runs a real MCP call against your own site and reports how many tools answered, which separates an app-side problem from a site-side one. The two usual causes are a server that strips the `Authorization` header — there’s a one-click fix — and a key that was rotated. Both are covered in [Troubleshooting and FAQ](/docs/troubleshooting/). Two app-specific traps: Claude needs valid JSON and Node.js installed, and VS Code needs `servers` rather than `mcpServers`. ### The ChatGPT connector specifically The connector has failure modes no other app has. None of these affect Codex, which is the reliable way in when the connector defeats you. - **It can read but can’t change anything, and the access level is already right.** Check your plan first — writes need Business, Enterprise or Edu, as above. On Plus or Pro this is not fixable on your side; use Codex. - **There’s nowhere to add a custom app.** ChatGPT hides them until **Developer mode** is on, under **Settings → Apps → Advanced Settings**. On Business, Enterprise and Edu a workspace admin has to allow it first, and creation only works on the web. - **Nobody else in the workspace can use it.** On Business, Enterprise and Edu a newly created app is a **draft** until an admin publishes it from **Workspace settings → Apps → Drafts**. - **ChatGPT says your site “does not implement OAuth”.** Either sign-in isn’t actually on, or a page cache is still serving the “not found” responses from before you turned it on — purge the cache, then delete and recreate the app. - **“Discoverable: Too slow”.** ChatGPT waits only a few seconds for your site to hand over its sign-in details and reports a site that misses that window as not supporting sign-in at all. **Saddle → Settings → Sign-in for ChatGPT** tells you when this is happening. Page caching usually fixes it. - **“Discoverable: Maybe not”.** Some hosts block any address beginning with a dot (`/.well-known/`). Ask your host to allow those URLs. - **Your site isn’t public.** The connector can’t reach a local or password-protected site. OpenAI offers a Secure MCP Tunnel for this, but Codex is simpler — it connects from your own computer. - **The tool list is stale after you changed something.** ChatGPT freezes an app’s tools when it is approved. Changes on your site are not picked up until the app is refreshed, or on a workspace plan, until an admin refreshes its actions. ## FAQ ### Can I connect several WordPress sites at once? Yes. Each site’s wizard generates its own server name, so they show up as separate servers rather than overwriting each other. ### Can I use ChatGPT’s connector on my phone? No. OpenAI supports MCP apps on the web only — not on mobile, and not in the desktop app’s own settings. Codex is the exception: it reads a file on a specific computer, so each machine needs its own `config.toml` entry. ### Can I use this on a local site, like Local or MAMP? With Codex, yes — it connects from your own computer, so a site only your machine can see is fine. The ChatGPT connector can’t: OpenAI’s servers have to reach your site over the public internet. ### Is turning on OAuth a security risk? It publishes sign-in *details*, not access. No app can do anything until you approve it on the consent screen, and what you grant is capped by your site’s access level. Turn it off again whenever you like. ### Does anything go through PlugPress’s servers? No. The sign-in service runs entirely on your site and there is no relay, ever. With the ChatGPT connector, OpenAI’s servers fetch what you approve them to fetch. Every other app connects from your own computer straight to your site. ### How do I disconnect an app? Click **Disconnect** on its row in **Saddle → Apps**. The key stops working immediately and no other app is affected. ## Related guides - [Getting started with Saddle](/docs/getting-started/) - [Permissions and access levels](/docs/permissions-access-levels/) - [OAuth sign-in: how it works and why it’s off by default](/docs/oauth-sign-in/) - [Editing content and design with AI](/docs/editing-content-and-design/) - [Troubleshooting and FAQ](/docs/troubleshooting/)