From 04e874705b76709ced2e420fcfcc36ef7b72859e Mon Sep 17 00:00:00 2001 From: nesh Date: Thu, 2 Jul 2026 15:15:19 -0700 Subject: [PATCH 1/5] Add OAuth MCP config for Codex --- .codex-plugin/plugin.json | 8 +++- .mcp.json | 12 ++++++ README.md | 8 ++++ skills/render-debug/SKILL.md | 6 ++- skills/render-deploy/SKILL.md | 4 +- skills/render-mcp/SKILL.md | 38 +++++++++---------- .../render-mcp/references/troubleshooting.md | 22 ++++++----- .../references/mcp-setup.md | 33 ++++++---------- skills/render-monitor/SKILL.md | 6 ++- 9 files changed, 78 insertions(+), 59 deletions(-) create mode 100644 .mcp.json diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 7fcb654..adfe948 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "render", - "version": "0.1.0", + "version": "0.1.0+codex.20260702184329", "description": "Skills for deploying, debugging, monitoring, and migrating apps on Render.", "author": { "name": "Render", @@ -19,13 +19,17 @@ "debugging" ], "skills": "./skills/", + "mcpServers": "./.mcp.json", "interface": { "displayName": "Render", "shortDescription": "Deploy, debug, monitor, and migrate apps on Render.", "longDescription": "Provides skills for deploying apps with Blueprints, debugging failed deploys, monitoring service health and metrics, building Render Workflows, and migrating from Heroku.", "developerName": "Render", "category": "Developer Tools", - "capabilities": ["Interactive", "Write"], + "capabilities": [ + "Interactive", + "Write" + ], "websiteURL": "https://render.com/", "privacyPolicyURL": "https://render.com/privacy", "termsOfServiceURL": "https://render.com/terms", diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..3b3c636 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,12 @@ +{ + "mcpServers": { + "render": { + "type": "http", + "url": "https://mcp.render.com/mcp", + "oauth_resource": "https://mcp.render.com/mcp", + "oauth": { + "client_id": "codex" + } + } + } +} diff --git a/README.md b/README.md index d6fdb24..ddc4036 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Use Render from Codex to deploy apps, validate `render.yaml`, debug failed deplo ## What you get - Bundled Render skills for deployment, debugging, monitoring, migrations, and workflows +- OAuth-enabled Render MCP server for Codex, surfaced by the plugin manifest - A helper script at `scripts/validate-render-yaml.sh` for `render blueprints validate` - Plugin metadata and assets for Codex installation @@ -59,6 +60,7 @@ Use the plugin to: - Deploy a project to Render - Validate and troubleshoot `render.yaml` +- Use Render MCP tools after completing Render OAuth in Codex - Debug failed deploys and check service status - Work through common setup and migration tasks @@ -68,6 +70,12 @@ Good first prompts: - `Help me validate my render.yaml for Render.` - `Debug a failed Render deployment.` +## Render MCP in Codex + +This plugin declares the hosted Render MCP server in `.mcp.json` with the pre-registered Codex OAuth client id. After installing or updating the plugin, Codex can connect to `https://mcp.render.com/mcp` and prompt for Render OAuth when MCP tools are first used. + +No `RENDER_API_KEY` or `codex mcp add` command is needed for the plugin-provided MCP connection. Manual API-key setup is still useful for other AI tools or when using the Render CLI fallback. + ## Set up the Render CLI Many Render workflows depend on the Render CLI. diff --git a/skills/render-debug/SKILL.md b/skills/render-debug/SKILL.md index cda03fc..f26053a 100644 --- a/skills/render-debug/SKILL.md +++ b/skills/render-debug/SKILL.md @@ -30,7 +30,7 @@ Activate this skill when: **CLI (fallback):** `render --version` - use if MCP tools unavailable -**Authentication:** For MCP, use an API key (set in the MCP config or via the `RENDER_API_KEY` env var, depending on tool). For CLI, verify with `render whoami -o json`. +**Authentication:** In Codex, the Render plugin provides OAuth for MCP. For manual MCP clients, use a Render API key. For CLI, verify with `render whoami -o json`. **Workspace:** `get_selected_workspace()` or `render workspace current -o json` @@ -40,7 +40,9 @@ Activate this skill when: If `list_services()` fails, set up the Render MCP server. For detailed per-tool walkthroughs, see **render-mcp**. -**Quick setup:** Add the Render MCP server to your AI tool's MCP config: +**Codex plugin setup:** Install or update the Render plugin, complete Render OAuth when prompted, then retry `list_services()` in a new thread. + +**Manual MCP setup:** Add the Render MCP server to your AI tool's MCP config: - **URL:** `https://mcp.render.com/mcp` - **Auth header:** `Authorization: Bearer ` - **API key:** `https://dashboard.render.com/u/*/settings#api-keys` diff --git a/skills/render-deploy/SKILL.md b/skills/render-deploy/SKILL.md index 7f69da3..a04bbf2 100644 --- a/skills/render-deploy/SKILL.md +++ b/skills/render-deploy/SKILL.md @@ -115,7 +115,9 @@ If not installed, offer to install: If `list_services()` fails, set up the Render MCP server. For detailed per-tool walkthroughs, see **render-mcp**. -**Quick setup:** Add the Render MCP server to your AI tool's MCP config: +**Codex plugin setup:** Install or update the Render plugin, complete Render OAuth when prompted, then retry `list_services()` in a new thread. + +**Manual MCP setup:** Add the Render MCP server to your AI tool's MCP config: - **URL:** `https://mcp.render.com/mcp` - **Auth header:** `Authorization: Bearer ` - **API key:** `https://dashboard.render.com/u/*/settings#api-keys` diff --git a/skills/render-mcp/SKILL.md b/skills/render-mcp/SKILL.md index 2b10472..1dcc458 100644 --- a/skills/render-mcp/SKILL.md +++ b/skills/render-mcp/SKILL.md @@ -7,7 +7,7 @@ description: >- fails, the user asks about Render MCP setup, or an action skill needs MCP but it's not connected yet. Trigger terms: MCP, Render MCP, list_services, MCP setup, MCP server, - API key, Bearer token, mcp.render.com, workspace selection. + OAuth, API key, Bearer token, mcp.render.com, workspace selection. license: MIT compatibility: Render MCP server (hosted at mcp.render.com) metadata: @@ -36,12 +36,24 @@ Action skills (render-deploy, render-debug, render-monitor) use MCP tools for th |----------|-------| | URL | `https://mcp.render.com/mcp` | | Transport | HTTP (streamable) | -| Auth | Bearer token (Render API key) | -| API key page | `https://dashboard.render.com/u/*/settings#api-keys` | +| Auth | OAuth in Codex plugin with pre-registered client id `codex`; bearer token for manual clients | +| API key page | `https://dashboard.render.com/u/*/settings#api-keys` for manual fallback | | Docs | `https://render.com/docs/mcp-server` | ## Setup by Tool +### Codex + +1. Install or update the Render plugin in Codex. + +2. Start a new thread after installation so Codex loads the plugin-provided MCP server from `.mcp.json`. + +3. When Codex prompts for Render access, complete the Render OAuth flow. + +4. Verify with `list_services()`. + +No `RENDER_API_KEY` or `codex mcp add` command is needed for the plugin-provided MCP connection. The plugin config uses the same client id as `--oauth-client-id codex`. + ### Cursor 1. Get an API key from the [Render Dashboard](https://dashboard.render.com/u/*/settings#api-keys) @@ -75,24 +87,6 @@ claude mcp add --transport http render https://mcp.render.com/mcp --header "Auth 3. Restart Claude Code, then verify with `list_services()` -### Codex - -1. Get an API key from the [Render Dashboard](https://dashboard.render.com/u/*/settings#api-keys) - -2. Set the key in your shell: - -```bash -export RENDER_API_KEY="" -``` - -3. Add the MCP server: - -```bash -codex mcp add render --url https://mcp.render.com/mcp --bearer-token-env-var RENDER_API_KEY -``` - -4. Restart Codex, then verify with `list_services()` - ### Other Tools For tools not listed above, use the generic HTTP MCP configuration: @@ -191,6 +185,8 @@ Optional: `httpLatencyQuantile` (0.5, 0.95, 0.99), `httpPath` (filter by endpoin | Mistake | Fix | |---------|-----| | Wrong URL (using SSE endpoint) | Use `https://mcp.render.com/mcp` (not `/sse`) | +| Codex plugin installed but tools unavailable | Start a new thread so Codex reloads plugin MCP tools | +| OAuth prompt does not appear in Codex | Reinstall or update the Render plugin, then retry in a new thread | | Expired or invalid API key | Generate a new key from Dashboard > Account Settings > API Keys | | Wrong workspace selected | Run `list_workspaces()` and switch to the correct one | | Using MCP to create image-backed services | Not supported — use Dashboard or API for prebuilt Docker images | diff --git a/skills/render-mcp/references/troubleshooting.md b/skills/render-mcp/references/troubleshooting.md index 778b932..ed623e1 100644 --- a/skills/render-mcp/references/troubleshooting.md +++ b/skills/render-mcp/references/troubleshooting.md @@ -6,7 +6,7 @@ **Cause:** MCP server not configured in the AI tool. -**Fix:** Follow the setup instructions in the main SKILL.md for your specific tool (Cursor, Claude Code, Codex). After adding the config, restart the tool. +**Fix:** Follow the setup instructions in the main SKILL.md for your specific tool. In Codex, install or update the Render plugin and start a new thread. For manual MCP clients, add the config and restart the tool. ### "Connection refused" or timeout @@ -30,17 +30,18 @@ ### "Unauthorized" or 401 -**Cause:** Missing, invalid, or expired API key. +**Cause:** Missing or expired OAuth authorization in Codex, or a missing, invalid, or expired API key in manual clients. **Fix:** -1. Generate a new API key: `https://dashboard.render.com/u/*/settings#api-keys` -2. Update the key in your tool's MCP config -3. Restart the tool -4. Verify with `list_services()` +1. In Codex, reinstall or update the Render plugin, then complete the Render OAuth prompt in a new thread. +2. For manual clients, generate a new API key: `https://dashboard.render.com/u/*/settings#api-keys` +3. Update the key in your tool's MCP config. +4. Restart the tool. +5. Verify with `list_services()`. ### "Forbidden" or 403 -**Cause:** API key doesn't have access to the requested resource, or wrong workspace. +**Cause:** OAuth authorization or API key does not have access to the requested resource, or the wrong workspace is selected. **Fix:** - Check the active workspace with `get_selected_workspace()` @@ -64,9 +65,10 @@ ### Codex -- Requires `RENDER_API_KEY` env var to be set in the shell where Codex runs -- Added via: `codex mcp add render --url https://mcp.render.com/mcp --bearer-token-env-var RENDER_API_KEY` -- If the env var is not set when Codex starts, MCP auth fails +- Uses the Render plugin's `.mcp.json` entry for `https://mcp.render.com/mcp` +- Uses the pre-registered OAuth client id `codex` +- Complete the Render OAuth prompt when Codex requests access +- Start a new thread after installing or updating the plugin so MCP tools reload ## Workspace Issues diff --git a/skills/render-migrate-from-heroku/references/mcp-setup.md b/skills/render-migrate-from-heroku/references/mcp-setup.md index 1effdef..1ec00c4 100644 --- a/skills/render-migrate-from-heroku/references/mcp-setup.md +++ b/skills/render-migrate-from-heroku/references/mcp-setup.md @@ -4,13 +4,23 @@ The Render MCP server is recommended for direct service creation and automated v ## Render MCP Server (Recommended) -Hosted at `https://mcp.render.com/mcp` (recommended, auto-updates). Requires a Render API key from [Account Settings](https://dashboard.render.com/u/*/settings#api-keys). +Hosted at `https://mcp.render.com/mcp` (recommended, auto-updates). The Render Codex plugin uses OAuth for this server with the pre-registered client id `codex`. Manual MCP clients can still use a Render API key from [Account Settings](https://dashboard.render.com/u/*/settings#api-keys). Alternative: run locally via Docker or binary (see [Render MCP docs](https://render.com/docs/mcp-server)). Source: [render-mcp-server](https://github.com/render-oss/render-mcp-server) **Detecting the user's tool:** Infer the AI tool from this skill's install path (`~/.cursor/skills/` = Cursor, `~/.claude/skills/` = Claude Code, `~/.codex/skills/` = Codex). If the path doesn't match a known tool, ask the user which tool they're using, then follow the matching section below. +### Codex + +1. Install or update the Render plugin in Codex. + +2. Start a new thread after installation so Codex loads the plugin-provided MCP server from `.mcp.json`. + +3. Complete the Render OAuth flow when Codex prompts for access. + +4. Retry `list_services()`. + ### Cursor 1. Get a Render API key: @@ -48,25 +58,6 @@ claude mcp add --transport http render https://mcp.render.com/mcp --header "Auth 3. Restart Claude Code, then retry `list_services()`. -### Codex - -1. Get a Render API key: -``` -https://dashboard.render.com/u/*/settings#api-keys -``` - -2. Set it in your shell: -```bash -export RENDER_API_KEY="" -``` - -3. Add the MCP server with the Codex CLI: -```bash -codex mcp add render --url https://mcp.render.com/mcp --bearer-token-env-var RENDER_API_KEY -``` - -4. Restart Codex, then retry `list_services()`. - ### Other Tools If using another AI tool, direct the user to the [Render MCP docs](https://render.com/docs/mcp-server) for that tool's setup steps and install method. @@ -99,4 +90,4 @@ After configuring, test your connections: - Ask: "List my Render services" — should return services via Render MCP (required) - Ask: "List my Heroku apps" — should return apps via Heroku MCP (optional) -If Render MCP fails, check your API key and restart your MCP client. If Heroku MCP is not configured, the migration skill still works — it reads local project files and asks you to provide config var values manually. +If Render MCP fails in Codex, reinstall or update the Render plugin and retry in a new thread. For manual clients, check your API key and restart your MCP client. If Heroku MCP is not configured, the migration skill still works — it reads local project files and asks you to provide config var values manually. diff --git a/skills/render-monitor/SKILL.md b/skills/render-monitor/SKILL.md index 1a8469e..eb71a6e 100644 --- a/skills/render-monitor/SKILL.md +++ b/skills/render-monitor/SKILL.md @@ -29,7 +29,7 @@ Activate this skill when users want to: **CLI (fallback):** `render --version` - use if MCP tools unavailable -**Authentication:** For MCP, use an API key (set in the MCP config or via the `RENDER_API_KEY` env var, depending on tool). For CLI, verify with `render whoami -o json`. +**Authentication:** In Codex, the Render plugin provides OAuth for MCP. For manual MCP clients, use a Render API key. For CLI, verify with `render whoami -o json`. **Workspace:** `get_selected_workspace()` or `render workspace current -o json` @@ -39,7 +39,9 @@ Activate this skill when users want to: If `list_services()` fails, set up the Render MCP server. For detailed per-tool walkthroughs, see **render-mcp**. -**Quick setup:** Add the Render MCP server to your AI tool's MCP config: +**Codex plugin setup:** Install or update the Render plugin, complete Render OAuth when prompted, then retry `list_services()` in a new thread. + +**Manual MCP setup:** Add the Render MCP server to your AI tool's MCP config: - **URL:** `https://mcp.render.com/mcp` - **Auth header:** `Authorization: Bearer ` - **API key:** `https://dashboard.render.com/u/*/settings#api-keys` From 7e27621f0037e9f1fbe75491c3e4f9ec31d4166c Mon Sep 17 00:00:00 2001 From: nesh Date: Mon, 6 Jul 2026 15:10:52 -0700 Subject: [PATCH 2/5] =?UTF-8?q?Drop=20skill-doc=20edits=20=E2=80=94=20shar?= =?UTF-8?q?ed=20docs=20live=20in=20render-oss/skills?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The skills/ directory is synced from render-oss/skills, so per-plugin edits there get overwritten on the next sync. Keep only the plugin's own .mcp.json, manifest, and README; the OAuth wording lives in the shared skills. Co-Authored-By: Claude Opus 4.8 (1M context) --- skills/render-debug/SKILL.md | 6 +-- skills/render-deploy/SKILL.md | 4 +- skills/render-mcp/SKILL.md | 38 ++++++++++--------- .../render-mcp/references/troubleshooting.md | 22 +++++------ .../references/mcp-setup.md | 33 ++++++++++------ skills/render-monitor/SKILL.md | 6 +-- 6 files changed, 57 insertions(+), 52 deletions(-) diff --git a/skills/render-debug/SKILL.md b/skills/render-debug/SKILL.md index f26053a..cda03fc 100644 --- a/skills/render-debug/SKILL.md +++ b/skills/render-debug/SKILL.md @@ -30,7 +30,7 @@ Activate this skill when: **CLI (fallback):** `render --version` - use if MCP tools unavailable -**Authentication:** In Codex, the Render plugin provides OAuth for MCP. For manual MCP clients, use a Render API key. For CLI, verify with `render whoami -o json`. +**Authentication:** For MCP, use an API key (set in the MCP config or via the `RENDER_API_KEY` env var, depending on tool). For CLI, verify with `render whoami -o json`. **Workspace:** `get_selected_workspace()` or `render workspace current -o json` @@ -40,9 +40,7 @@ Activate this skill when: If `list_services()` fails, set up the Render MCP server. For detailed per-tool walkthroughs, see **render-mcp**. -**Codex plugin setup:** Install or update the Render plugin, complete Render OAuth when prompted, then retry `list_services()` in a new thread. - -**Manual MCP setup:** Add the Render MCP server to your AI tool's MCP config: +**Quick setup:** Add the Render MCP server to your AI tool's MCP config: - **URL:** `https://mcp.render.com/mcp` - **Auth header:** `Authorization: Bearer ` - **API key:** `https://dashboard.render.com/u/*/settings#api-keys` diff --git a/skills/render-deploy/SKILL.md b/skills/render-deploy/SKILL.md index a04bbf2..7f69da3 100644 --- a/skills/render-deploy/SKILL.md +++ b/skills/render-deploy/SKILL.md @@ -115,9 +115,7 @@ If not installed, offer to install: If `list_services()` fails, set up the Render MCP server. For detailed per-tool walkthroughs, see **render-mcp**. -**Codex plugin setup:** Install or update the Render plugin, complete Render OAuth when prompted, then retry `list_services()` in a new thread. - -**Manual MCP setup:** Add the Render MCP server to your AI tool's MCP config: +**Quick setup:** Add the Render MCP server to your AI tool's MCP config: - **URL:** `https://mcp.render.com/mcp` - **Auth header:** `Authorization: Bearer ` - **API key:** `https://dashboard.render.com/u/*/settings#api-keys` diff --git a/skills/render-mcp/SKILL.md b/skills/render-mcp/SKILL.md index 1dcc458..2b10472 100644 --- a/skills/render-mcp/SKILL.md +++ b/skills/render-mcp/SKILL.md @@ -7,7 +7,7 @@ description: >- fails, the user asks about Render MCP setup, or an action skill needs MCP but it's not connected yet. Trigger terms: MCP, Render MCP, list_services, MCP setup, MCP server, - OAuth, API key, Bearer token, mcp.render.com, workspace selection. + API key, Bearer token, mcp.render.com, workspace selection. license: MIT compatibility: Render MCP server (hosted at mcp.render.com) metadata: @@ -36,24 +36,12 @@ Action skills (render-deploy, render-debug, render-monitor) use MCP tools for th |----------|-------| | URL | `https://mcp.render.com/mcp` | | Transport | HTTP (streamable) | -| Auth | OAuth in Codex plugin with pre-registered client id `codex`; bearer token for manual clients | -| API key page | `https://dashboard.render.com/u/*/settings#api-keys` for manual fallback | +| Auth | Bearer token (Render API key) | +| API key page | `https://dashboard.render.com/u/*/settings#api-keys` | | Docs | `https://render.com/docs/mcp-server` | ## Setup by Tool -### Codex - -1. Install or update the Render plugin in Codex. - -2. Start a new thread after installation so Codex loads the plugin-provided MCP server from `.mcp.json`. - -3. When Codex prompts for Render access, complete the Render OAuth flow. - -4. Verify with `list_services()`. - -No `RENDER_API_KEY` or `codex mcp add` command is needed for the plugin-provided MCP connection. The plugin config uses the same client id as `--oauth-client-id codex`. - ### Cursor 1. Get an API key from the [Render Dashboard](https://dashboard.render.com/u/*/settings#api-keys) @@ -87,6 +75,24 @@ claude mcp add --transport http render https://mcp.render.com/mcp --header "Auth 3. Restart Claude Code, then verify with `list_services()` +### Codex + +1. Get an API key from the [Render Dashboard](https://dashboard.render.com/u/*/settings#api-keys) + +2. Set the key in your shell: + +```bash +export RENDER_API_KEY="" +``` + +3. Add the MCP server: + +```bash +codex mcp add render --url https://mcp.render.com/mcp --bearer-token-env-var RENDER_API_KEY +``` + +4. Restart Codex, then verify with `list_services()` + ### Other Tools For tools not listed above, use the generic HTTP MCP configuration: @@ -185,8 +191,6 @@ Optional: `httpLatencyQuantile` (0.5, 0.95, 0.99), `httpPath` (filter by endpoin | Mistake | Fix | |---------|-----| | Wrong URL (using SSE endpoint) | Use `https://mcp.render.com/mcp` (not `/sse`) | -| Codex plugin installed but tools unavailable | Start a new thread so Codex reloads plugin MCP tools | -| OAuth prompt does not appear in Codex | Reinstall or update the Render plugin, then retry in a new thread | | Expired or invalid API key | Generate a new key from Dashboard > Account Settings > API Keys | | Wrong workspace selected | Run `list_workspaces()` and switch to the correct one | | Using MCP to create image-backed services | Not supported — use Dashboard or API for prebuilt Docker images | diff --git a/skills/render-mcp/references/troubleshooting.md b/skills/render-mcp/references/troubleshooting.md index ed623e1..778b932 100644 --- a/skills/render-mcp/references/troubleshooting.md +++ b/skills/render-mcp/references/troubleshooting.md @@ -6,7 +6,7 @@ **Cause:** MCP server not configured in the AI tool. -**Fix:** Follow the setup instructions in the main SKILL.md for your specific tool. In Codex, install or update the Render plugin and start a new thread. For manual MCP clients, add the config and restart the tool. +**Fix:** Follow the setup instructions in the main SKILL.md for your specific tool (Cursor, Claude Code, Codex). After adding the config, restart the tool. ### "Connection refused" or timeout @@ -30,18 +30,17 @@ ### "Unauthorized" or 401 -**Cause:** Missing or expired OAuth authorization in Codex, or a missing, invalid, or expired API key in manual clients. +**Cause:** Missing, invalid, or expired API key. **Fix:** -1. In Codex, reinstall or update the Render plugin, then complete the Render OAuth prompt in a new thread. -2. For manual clients, generate a new API key: `https://dashboard.render.com/u/*/settings#api-keys` -3. Update the key in your tool's MCP config. -4. Restart the tool. -5. Verify with `list_services()`. +1. Generate a new API key: `https://dashboard.render.com/u/*/settings#api-keys` +2. Update the key in your tool's MCP config +3. Restart the tool +4. Verify with `list_services()` ### "Forbidden" or 403 -**Cause:** OAuth authorization or API key does not have access to the requested resource, or the wrong workspace is selected. +**Cause:** API key doesn't have access to the requested resource, or wrong workspace. **Fix:** - Check the active workspace with `get_selected_workspace()` @@ -65,10 +64,9 @@ ### Codex -- Uses the Render plugin's `.mcp.json` entry for `https://mcp.render.com/mcp` -- Uses the pre-registered OAuth client id `codex` -- Complete the Render OAuth prompt when Codex requests access -- Start a new thread after installing or updating the plugin so MCP tools reload +- Requires `RENDER_API_KEY` env var to be set in the shell where Codex runs +- Added via: `codex mcp add render --url https://mcp.render.com/mcp --bearer-token-env-var RENDER_API_KEY` +- If the env var is not set when Codex starts, MCP auth fails ## Workspace Issues diff --git a/skills/render-migrate-from-heroku/references/mcp-setup.md b/skills/render-migrate-from-heroku/references/mcp-setup.md index 1ec00c4..1effdef 100644 --- a/skills/render-migrate-from-heroku/references/mcp-setup.md +++ b/skills/render-migrate-from-heroku/references/mcp-setup.md @@ -4,23 +4,13 @@ The Render MCP server is recommended for direct service creation and automated v ## Render MCP Server (Recommended) -Hosted at `https://mcp.render.com/mcp` (recommended, auto-updates). The Render Codex plugin uses OAuth for this server with the pre-registered client id `codex`. Manual MCP clients can still use a Render API key from [Account Settings](https://dashboard.render.com/u/*/settings#api-keys). +Hosted at `https://mcp.render.com/mcp` (recommended, auto-updates). Requires a Render API key from [Account Settings](https://dashboard.render.com/u/*/settings#api-keys). Alternative: run locally via Docker or binary (see [Render MCP docs](https://render.com/docs/mcp-server)). Source: [render-mcp-server](https://github.com/render-oss/render-mcp-server) **Detecting the user's tool:** Infer the AI tool from this skill's install path (`~/.cursor/skills/` = Cursor, `~/.claude/skills/` = Claude Code, `~/.codex/skills/` = Codex). If the path doesn't match a known tool, ask the user which tool they're using, then follow the matching section below. -### Codex - -1. Install or update the Render plugin in Codex. - -2. Start a new thread after installation so Codex loads the plugin-provided MCP server from `.mcp.json`. - -3. Complete the Render OAuth flow when Codex prompts for access. - -4. Retry `list_services()`. - ### Cursor 1. Get a Render API key: @@ -58,6 +48,25 @@ claude mcp add --transport http render https://mcp.render.com/mcp --header "Auth 3. Restart Claude Code, then retry `list_services()`. +### Codex + +1. Get a Render API key: +``` +https://dashboard.render.com/u/*/settings#api-keys +``` + +2. Set it in your shell: +```bash +export RENDER_API_KEY="" +``` + +3. Add the MCP server with the Codex CLI: +```bash +codex mcp add render --url https://mcp.render.com/mcp --bearer-token-env-var RENDER_API_KEY +``` + +4. Restart Codex, then retry `list_services()`. + ### Other Tools If using another AI tool, direct the user to the [Render MCP docs](https://render.com/docs/mcp-server) for that tool's setup steps and install method. @@ -90,4 +99,4 @@ After configuring, test your connections: - Ask: "List my Render services" — should return services via Render MCP (required) - Ask: "List my Heroku apps" — should return apps via Heroku MCP (optional) -If Render MCP fails in Codex, reinstall or update the Render plugin and retry in a new thread. For manual clients, check your API key and restart your MCP client. If Heroku MCP is not configured, the migration skill still works — it reads local project files and asks you to provide config var values manually. +If Render MCP fails, check your API key and restart your MCP client. If Heroku MCP is not configured, the migration skill still works — it reads local project files and asks you to provide config var values manually. diff --git a/skills/render-monitor/SKILL.md b/skills/render-monitor/SKILL.md index eb71a6e..1a8469e 100644 --- a/skills/render-monitor/SKILL.md +++ b/skills/render-monitor/SKILL.md @@ -29,7 +29,7 @@ Activate this skill when users want to: **CLI (fallback):** `render --version` - use if MCP tools unavailable -**Authentication:** In Codex, the Render plugin provides OAuth for MCP. For manual MCP clients, use a Render API key. For CLI, verify with `render whoami -o json`. +**Authentication:** For MCP, use an API key (set in the MCP config or via the `RENDER_API_KEY` env var, depending on tool). For CLI, verify with `render whoami -o json`. **Workspace:** `get_selected_workspace()` or `render workspace current -o json` @@ -39,9 +39,7 @@ Activate this skill when users want to: If `list_services()` fails, set up the Render MCP server. For detailed per-tool walkthroughs, see **render-mcp**. -**Codex plugin setup:** Install or update the Render plugin, complete Render OAuth when prompted, then retry `list_services()` in a new thread. - -**Manual MCP setup:** Add the Render MCP server to your AI tool's MCP config: +**Quick setup:** Add the Render MCP server to your AI tool's MCP config: - **URL:** `https://mcp.render.com/mcp` - **Auth header:** `Authorization: Bearer ` - **API key:** `https://dashboard.render.com/u/*/settings#api-keys` From 2a7c964b2c3e9e0b1f8d79967579977d0e8ece43 Mon Sep 17 00:00:00 2001 From: nesh Date: Mon, 6 Jul 2026 15:34:34 -0700 Subject: [PATCH 3/5] Remove oauth_resource from Codex .mcp.json Codex derives the OAuth resource from the server URL; also setting oauth_resource makes it send the resource parameter twice, which the server rejects with invalid_target ("only a single resource parameter is supported"). Co-Authored-By: Claude Opus 4.8 (1M context) --- .mcp.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.mcp.json b/.mcp.json index 3b3c636..6f0330f 100644 --- a/.mcp.json +++ b/.mcp.json @@ -3,7 +3,6 @@ "render": { "type": "http", "url": "https://mcp.render.com/mcp", - "oauth_resource": "https://mcp.render.com/mcp", "oauth": { "client_id": "codex" } From 1cdcd66b17540712e26b6271cb67a9fbc11904ff Mon Sep 17 00:00:00 2001 From: Sriganesh Navaneethakrishnan Date: Fri, 10 Jul 2026 14:42:26 -0700 Subject: [PATCH 4/5] Add ChatGPT app mapping --- .app.json | 8 ++++++++ .codex-plugin/plugin.json | 3 ++- README.md | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .app.json diff --git a/.app.json b/.app.json new file mode 100644 index 0000000..7e60eab --- /dev/null +++ b/.app.json @@ -0,0 +1,8 @@ +{ + "apps": { + "render": { + "id": "asdk_app_6a4ed9a64074819193a650ea05fd8c3b", + "required": true + } + } +} diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index adfe948..b95a12c 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "render", - "version": "0.1.0+codex.20260702184329", + "version": "0.1.0+codex.20260710214040", "description": "Skills for deploying, debugging, monitoring, and migrating apps on Render.", "author": { "name": "Render", @@ -20,6 +20,7 @@ ], "skills": "./skills/", "mcpServers": "./.mcp.json", + "apps": "./.app.json", "interface": { "displayName": "Render", "shortDescription": "Deploy, debug, monitor, and migrate apps on Render.", diff --git a/README.md b/README.md index ddc4036..0a3989a 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Use Render from Codex to deploy apps, validate `render.yaml`, debug failed deplo - Bundled Render skills for deployment, debugging, monitoring, migrations, and workflows - OAuth-enabled Render MCP server for Codex, surfaced by the plugin manifest +- Required ChatGPT app mapping for the hosted Render connector - A helper script at `scripts/validate-render-yaml.sh` for `render blueprints validate` - Plugin metadata and assets for Codex installation @@ -76,6 +77,10 @@ This plugin declares the hosted Render MCP server in `.mcp.json` with the pre-re No `RENDER_API_KEY` or `codex mcp add` command is needed for the plugin-provided MCP connection. Manual API-key setup is still useful for other AI tools or when using the Render CLI fallback. +## ChatGPT app mapping + +This plugin also declares the Render ChatGPT app in `.app.json` so the plugin package can distribute the app mapping with the Render skills. The hosted app backend remains the Render MCP service at `https://mcp.render.com/mcp`; public ChatGPT availability still follows the normal app review and publishing flow. + ## Set up the Render CLI Many Render workflows depend on the Render CLI. From d961e35cf6398fe524bd4d5eafd367efcbb18c53 Mon Sep 17 00:00:00 2001 From: Sriganesh Navaneethakrishnan Date: Fri, 10 Jul 2026 14:54:00 -0700 Subject: [PATCH 5/5] Bump plugin version to 0.2.0 --- .codex-plugin/plugin.json | 2 +- CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index b95a12c..e617f75 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "render", - "version": "0.1.0+codex.20260710214040", + "version": "0.2.0", "description": "Skills for deploying, debugging, monitoring, and migrating apps on Render.", "author": { "name": "Render", diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..aaea9cb --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +## 0.2.0 - 2026-07-10 + +- Add Codex plugin MCP configuration for the hosted Render MCP server. +- Configure Codex OAuth to use the pre-registered `codex` client ID. +- Add the required Render ChatGPT app mapping for connector distribution. +- Document the Codex MCP and ChatGPT app packaging behavior.