Skip to content

Add marketplace listing assets and fix execute destructive hint - #815

Merged
cursor[bot] merged 2 commits into
mainfrom
cursor/marketplace-listings-9021
Jul 20, 2026
Merged

cursor[bot] merged 2 commits into
mainfrom
cursor/marketplace-listings-9021

Conversation

@kentcdodds

@kentcdodds kentcdodds commented Jul 20, 2026 •

Copy link
Copy Markdown
Owner

Keeps the durable pieces for Official MCP Registry publishing and corrects the public execute tool annotation. One-off ChatGPT/Cursor form packaging files are not committed.

What’s included

  • server.json for remote MCP publish (io.github.kentcdodds/kody → https://heykody.dev/mcp)
  • GitHub Actions workflow to publish via OIDC (Publish MCP Registry)
  • execute destructiveHint: true (was incorrectly false)

Not in this PR

  • chatgpt-app-submission.json and Cursor plugin manifests — form-only; already emailed / usable outside the repo

Reviewer notes

  • After merge: Actions → Publish MCP Registry → Run workflow (or local mcp-publisher login github && publish)
  • Wait for the annotation change to deploy before ChatGPT Scan Tools
System recap — extends existing primitives (medium risk)

Change

Corrects the public MCP execute tool’s destructive annotation and adds Official MCP Registry publish manifests/workflow.

Primitives

Primitive Classification Why
MCP endpoint (/mcp) extends execute tool annotation contract changes (destructiveHint: true) for host/directory review accuracy

Risk

Medium — annotation change affects how hosts/reviewers classify side effects of execute; registry files are additive.

Flow

flowchart LR
  Host[MCP host / directory] --> MCP["/mcp tools"]
  MCP --> Search[search read-only]
  MCP --> Execute[execute mutating / open-world / destructive]
  Registry[Official MCP Registry] --> ServerJson[server.json remotes]
  ServerJson --> Prod["heykody.dev/mcp"]
Loading

Invariants

  • Per-user isolation unchanged
  • No new capability surface; only metadata/distribution packaging plus one tool annotation
Open in Web Open in Cursor 

Summary by CodeRabbit

  • New Features
    • Added support for connecting Kody through MCP-compatible clients, including Cursor and ChatGPT.
    • Published server metadata and remote connection details for easier setup and discovery.
    • Added ChatGPT app capabilities for searching available tools and executing authorized actions.
  • Improvements
    • Actions that may modify data are now clearly identified as potentially destructive.
  • Automation
    • Added automated publishing of the MCP server listing when changes are released.

Prepare Official MCP Registry publishing (server.json + OIDC workflow),
Cursor plugin manifests, and chatgpt-app-submission.json. Mark execute as
destructive because sandboxed modules can delete data or trigger irreversible
outbound actions.
@coderabbitai

coderabbitai Bot commented Jul 20, 2026 •

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds Cursor and MCP client manifests, a ChatGPT app submission specification, destructive-action metadata for execute, an MCP server manifest, and GitHub Actions automation for MCP Registry publication.

Changes

MCP distribution and registration

Layer / File(s) Summary
MCP endpoint manifests
.cursor-plugin/plugin.json, mcp.json
Adds Cursor plugin metadata and MCP client configuration for the hosted Kody endpoint.
ChatGPT app contract
packages/worker/src/mcp/tools/execute.ts, chatgpt-app-submission.json
Marks execute as potentially destructive and defines ChatGPT tool metadata, behavioral tests, and negative test cases.
MCP Registry publication
server.json, .github/workflows/publish-mcp-registry.yml
Defines the remote MCP server and automates OIDC-authenticated publication on qualifying pushes or manual dispatches.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: marketplace listing assets plus the execute tool destructive hint fix.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cursor/marketplace-listings-9021

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kody-bot
kody-bot marked this pull request as ready for review July 20, 2026 22:46
@github-actions

github-actions Bot commented Jul 20, 2026 •

Copy link
Copy Markdown
Contributor

🔎 Preview deployed: https://kody-pr-815.kody-a99.workers.dev

Worker: kody-pr-815
D1: kody-pr-815-db
KV: kody-pr-815-oauth-kv

Mocks:

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/publish-mcp-registry.yml (1)

32-34: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Pin mcp-publisher to v1.8.0
latest makes the download non-deterministic and can break the workflow when the upstream release changes. Switch the URL to .../releases/download/v1.8.0/....

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/publish-mcp-registry.yml around lines 32 - 34, Update the
mcp-publisher download URL in the workflow’s installation command to use the
fixed GitHub release path for v1.8.0 instead of releases/latest, while
preserving the existing platform and architecture filename handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/publish-mcp-registry.yml:
- Around line 26-27: Update the actions/checkout step in the Checkout workflow
action to set persist-credentials to false, preventing the GitHub token from
being stored in local git configuration while leaving the existing checkout
behavior unchanged.

---

Nitpick comments:
In @.github/workflows/publish-mcp-registry.yml:
- Around line 32-34: Update the mcp-publisher download URL in the workflow’s
installation command to use the fixed GitHub release path for v1.8.0 instead of
releases/latest, while preserving the existing platform and architecture
filename handling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 160a24a4-eba2-4f34-ab5b-5571f560a2fc

📥 Commits

Reviewing files that changed from the base of the PR and between e516d07 and 9daaa02.

📒 Files selected for processing (6)
  • .cursor-plugin/plugin.json
  • .github/workflows/publish-mcp-registry.yml
  • chatgpt-app-submission.json
  • mcp.json
  • packages/worker/src/mcp/tools/execute.ts
  • server.json

Comment on lines +26 to +27
- name: Checkout
uses: actions/checkout@v6.0.2

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check the latest release version of actions/checkout
gh api repos/actions/checkout/releases/latest --jq .tag_name

Repository: kentcdodds/kody

Length of output: 160


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow =="
git ls-files .github/workflows/publish-mcp-registry.yml
echo
cat -n .github/workflows/publish-mcp-registry.yml | sed -n '1,220p'

echo
echo "== checkout release tag existence =="
gh api repos/actions/checkout/releases/tags/v6.0.2 --jq '{tag_name, name, draft, prerelease, published_at}'

echo
echo "== checkout tag ref =="
gh api repos/actions/checkout/git/refs/tags/v6.0.2 --jq '{ref, object_type: .object.type, object_sha: .object.sha}'

Repository: kentcdodds/kody

Length of output: 1742


Prevent credential persistence in the checkout step.

actions/checkout stores the GitHub token in local git config by default. Set persist-credentials: false here since this workflow doesn’t need git auth later.

🧰 Tools
🪛 zizmor (1.26.1)

[warning] 26-27: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/publish-mcp-registry.yml around lines 26 - 27, Update the
actions/checkout step in the Checkout workflow action to set persist-credentials
to false, preventing the GitHub token from being stored in local git
configuration while leaving the existing checkout behavior unchanged.

Source: Linters/SAST tools

Drop the ChatGPT submission JSON and Cursor plugin packaging files. Keep
server.json, the registry publish workflow, and the execute annotation fix.
@cursor
cursor Bot merged commit 29bf808 into main Jul 20, 2026
5 checks passed
@cursor
cursor Bot deleted the cursor/marketplace-listings-9021 branch July 20, 2026 23:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants