Validates Codex plugin packages, skills, and MCP server bundles for security, structure, and runtime conformance.
Also known as Esquetta/CodexPluginDoctor, codex-plugin-doctor
- Stars
- 2
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Nov 7, 2026
- License
- MIT
What is CodexPluginDoctor MCP?
CodexPluginDoctor validates Codex plugin packages, skills, and MCP server bundles for security, structure, and runtime conformance.
Summary generated from the project's README
About CodexPluginDoctor MCP server
Validating Codex plugin packages and MCP server bundles for security and structure is what CodexPluginDoctor enables for developers. This command-line interface tool inspects plugin folders containing a .codex-plugin/plugin.json file to ensure they meet specific requirements before deployment. It checks for hard-coded secrets, validates skill wiring, and examines metadata quality to prevent common configuration errors.
Users can perform deep inspections by using the --runtime flag to execute the package's own code and verify the MCP handshake, tools, resources, and prompts. For added safety during runtime testing, the --sandbox docker option isolates local Node.js stdio servers. The tool also supports checking installed plugins via the --installed command and verifying compatibility with clients like Claude Desktop, Cursor, Cline, and Windsurf.
Beyond local checks, it provides functionality for comparing tools and resource templates against a baseline using MCP snapshots. It is designed for integration into CI workflows through GitHub Actions, allowing teams to automate security scorecards and conformance reports during the pull request process.
What you can do with it
- 1Detect hard-coded credentialsIdentify if an MCP server configuration contains sensitive API keys that should be replaced with environment references.
- 2Verify runtime conformanceTest the actual running MCP server to ensure tools, resources, and prompts function according to the protocol.
- 3Check multi-client compatibilityConfirm that an MCP configuration is valid and ready to be used in various desktop AI clients.
Written from the project's README. Every use case is checked against a quote from it.
How to install CodexPluginDoctor MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall CodexPluginDoctor MCP in Claude Code
$ claude mcp add codexplugindoctor -- npx -y codex-plugin-doctorInstall CodexPluginDoctor MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"codexplugindoctor": {
"command": "npx",
"args": [
"-y",
"codex-plugin-doctor"
]
}
}
}Install CodexPluginDoctor MCP in VS Code
.vscode/mcp.json
{
"servers": {
"codexplugindoctor": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"codex-plugin-doctor"
]
}
}
}Install CodexPluginDoctor MCP in VS Code CLI
$ code --add-mcp '{"name":"codexplugindoctor","type":"stdio","command":"npx","args":["-y","codex-plugin-doctor"]}'Install CodexPluginDoctor MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"codexplugindoctor": {
"command": "npx",
"args": [
"-y",
"codex-plugin-doctor"
]
}
}
}Install CodexPluginDoctor MCP in Codex
$ codex mcp add codexplugindoctor -- npx -y codex-plugin-doctorInstall CodexPluginDoctor MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.codexplugindoctor] command = "npx" args = ["-y", "codex-plugin-doctor"]
Install CodexPluginDoctor MCP in Gemini CLI
$ gemini mcp add -s user codexplugindoctor npx -- -y codex-plugin-doctorInstall CodexPluginDoctor MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"codexplugindoctor": {
"command": "npx",
"args": [
"-y",
"codex-plugin-doctor"
]
}
}
}Automated checks
Ran Nov 14, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachableesquetta/codexplugindoctor is public and reachablegithub.com/esquetta/codexplugindoctor ↗Pass
- Package names this repository as its sourcecodex-plugin-doctor names esquetta/codexplugindoctor as sourcenpmjs.com/package/codex-plugin-doctor ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for codex-plugin-doctornpmjs.com/package/codex-plugin-doctor/v/1.92.0#provenance ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-07github.com/esquetta/codexplugindoctor ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from codex-plugin-doctorPass
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubCodex Plugin Doctor
A CLI that checks Codex plugins, skills, and MCP servers before you ship them: the package, its security, and, if you allow it, the running MCP server.
npx codex-plugin-doctor check path/to/plugin
Point it at a folder with .codex-plugin/plugin.json. A plugin with an API key in its
.mcp.json exits with status 1 and this report (recommended commands trimmed):
Codex Plugin Doctor
===================
Status: FAIL
Target: /path/to/plugin
Summary: 1 fail, 0 warn, 1 total
Failures
--------
✖ plugin.security.hard_coded_secret
Message: The MCP server `dangerServer` contains a hard-coded secret-like env value for `OPENAI_API_KEY`.
Impact: Hard-coded credentials inside plugin bundles increase leakage risk and make secure rotation difficult.
Suggested fix: Replace the literal value for `OPENAI_API_KEY` with an environment reference or injected secret outside the package.
Fingerprint: 21da7c75027f0811929d49253412a0f20694d974f141d0421410c89ee29c8b72
Evidence: serverName=dangerServer, configPath=.mcp.json, envKey=OPENAI_API_KEY, envValue=[REDACTED]
Add --runtime to also start the plugin's MCP servers and call them. That runs the
package's own code, so it is opt-in, and --sandbox docker isolates local Node.js stdio
servers. No plugin at hand? npx codex-plugin-doctor check --installed checks the ones
in your Codex plugin cache.
What It Checks
- Package:
.codex-plugin/plugin.json, skill wiring andSKILL.mdmetadata,.mcp.jsonstructure, description quality, hard-coded secrets, and paths that escape the package. - Security (
security .): a scorecard for shell wrappers, encoded commands, remote content piped into a shell, and plain HTTP transports. - Running servers (
--runtime): the MCP handshake, then tools, resources, prompts, and pagination, with a scorecard and a conformance report. - Breaking changes: MCP snapshots compare tools, prompts, and resource templates with a committed baseline, in a pull request comment and in release notes.
- Other clients (
compat . --all --scorecard): whether the MCP config is valid and can be added to Claude Desktop, Cursor, Cline, and Windsurf on this machine. - Remote servers and publishing: opt-in Remote MCP Readiness, MCP Registry Readiness, and an offline public directory preflight.
See the CLI Reference for more commands and examples,
codex-plugin-doctor --help for all of them, and codex-plugin-doctor explain <finding-id> for
what a rule means.
Install
npm install -g codex-plugin-doctor
codex-plugin-doctor self-test
codex-plugin-doctor check .
codex-plugin-doctor check . --runtime
codex-plugin-doctor mcp path/to/mcp-package
GitHub Action
name: Validate Codex plugin
on:
pull_request:
permissions:
contents: read
jobs:
doctor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
persist-credentials: false
- uses: Esquetta/CodexPluginDoctor@v1.92.0
with:
version: "1.92.0"
path: .
runtime: "true"
policy: codex-publish
runtime: "true" runs the package's code, so this job keeps a read-only token.
codex-plugin-doctor init-ci . writes a workflow for you. See
GitHub Action Usage for reports, pull request comments, and
inputs.
Documentation
- CLI Reference
- GitHub Action Usage
- MCP Snapshot
- Release Gating
- Rule Catalog
- Official Plugin Components
- Real-World Validation
- Examples
- Changelog
- All documentation
1.0 Stability
The 1.0 line is the stable compatibility baseline for plugin authors and CI consumers.
- Public JSON schema surfaces and existing rule IDs/default severities are treated as stable through 1.0.
- Runtime probing remains opt-in because it executes package-local MCP servers.
- New features stay additive unless a major version says otherwise.
See the documentation index for architecture, usage, security, and contributor guides.
Contributing
Contributions are welcome. Start with Contributing, the
Security Policy, the Code of Conduct, and the
validation tuning issue template.
npm run release-check runs the release preflight; see
Versioning and Releases.
Support
If this tool saves you time, GitHub stars and sponsorship help signal that the project is worth continuing.
- Star the repository on GitHub.
- Use GitHub Sponsors through the repository funding link.
- Open validation tuning issues for false positives or false negatives.
CodexPluginDoctor MCP questions
How do I add CodexPluginDoctor MCP to Claude Code?
Run claude mcp add codexplugindoctor -- npx -y codex-plugin-doctor in your terminal. Add --scope user to make it available in every project.
How do I add CodexPluginDoctor MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
How can I check if an MCP server has hard-coded secrets?
The tool automatically checks for hard-coded secrets like API keys in the .mcp.json file and will exit with a failure status if any are found.
Can I test the actual running MCP server with this tool?
Yes, by adding the --runtime flag, the tool will start the plugin's MCP servers and call their tools, resources, and prompts to verify conformance.
How do I isolate the running MCP servers during testing?
You can use the --sandbox docker flag to isolate local Node.js stdio servers.
Can I use this tool to check plugins already installed in my cache?
Yes, running npx codex-plugin-doctor check --installed will check the plugins in your Codex plugin cache.