Codex Project-scoped MCP
Summary: This server provides a read-only status/diagnostic tool for the Local Project MCP bridge.
Report which project
mcp.jsonwas discovered.Show which project MCP servers connected and how many tools they expose.
Provide connection status without returning credentials.
It is read-only, non-destructive, and not open-world; no other tools are exposed in the schema.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Codex Project-scoped MCPUse project_mcp_status to report which project MCP servers are connected."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Local Project MCP for Codex
Install once. Open a project in Codex. Use the MCP servers declared by that project.
This local plugin reads the nearest mcp.json at session startup and exposes its tools through a session-local MCP bridge. There is no Codex launch wrapper, configuration synchronization, scheduled job, or system-wide watcher.
Install
Requires Node.js 22 or newer (including npx), Git, and a Codex CLI with plugin marketplace support. Version 0.163.0 was used for development and integration testing; see tested behavior.
codex plugin marketplace add autobelay/codex-project-scoped-mcp
codex plugin add codex-project-scoped-mcp@autobelay-project-mcpThen start a new Codex session in a project containing mcp.json:
cd /path/to/project
codexAsk: “Use project_mcp_status to report which project MCP servers are connected.” The underlying tools are individually available; the model does not have to call a generic dispatcher.
Local Project MCP is the display name; codex-project-scoped-mcp remains the installation ID. The MCP connection is named local-project-mcp. Forwarded tools include readable MCP titles while retaining their stable routing names. Clients that display raw technical names may still show the routing suffix.
The plugin launches a version-pinned release with npx. Its first launch downloads the bundled executable from this public GitHub repository; subsequent launches use npm's cache. There are no package installation scripts or runtime npm dependencies. Internet access is required for the initial installation. The project's own servers may have additional runtimes and credentials to install.
After rebuilding your machine, repeat the two install commands. Nothing contains a machine-specific project path.
Update and remove
codex plugin marketplace upgrade autobelay-project-mcp
codex plugin add codex-project-scoped-mcp@autobelay-project-mcpStart a new session after updating. Each plugin release pins its executable version, so upgrading the marketplace does not silently change an already-running bridge.
codex plugin remove codex-project-scoped-mcp@autobelay-project-mcp
codex plugin marketplace remove autobelay-project-mcpRelated MCP server: codex-mcp-opencode
Why project-scoped tools?
An MCP connection combines executable behavior with context: which checkout, which credentials, which assets, and which product conventions it should use. That context often belongs to a repository rather than a person or a hosted service.
A global server list loses this relationship. Every project gets irrelevant tools; identical server names can refer to different products; and moving a checkout can invalidate absolute paths. Copying project declarations into another configuration introduces a second representation to maintain.
The repository is already the natural home for its tooling. A manifest can travel with its implementation and evolve alongside the code it understands. Resolve that manifest when the session starts, launch its processes from the manifest directory, and the active checkout supplies the context.
This bridge makes that convention usable by Codex today. It does not require that every MCP client adopt the same configuration file, and it does not turn repository servers into publicly hosted services.
Example: a design assistant that belongs to one application
Imagine a fictional field-notes application. Its design MCP knows the local theme tokens, the component catalogue, unpublished screen references, and the current branch's navigation conventions. A fuller implementation could offer:
read_design_tokens: read the palette, spacing and typography from this checkout.find_screen_references: locate the application's approved screen captures.inspect_component: explain a component's actual variants and constraints.propose_screen: produce a mockup grounded in those local assets.
Its purpose is to understand this application. Making it a public MCP would not make the application-specific assets useful to strangers. A hosted version would need synchronization and access to unpublished files, and could easily see a different revision from the branch being edited. A local server can directly read the relevant checkout. It may still call a remote image provider when explicitly asked; local execution does not imply every operation is offline.
The runnable design-studio example is deliberately smaller: one read-only tool returns fictional tokens, without any network calls or real company material.
git clone https://github.com/autobelay/codex-project-scoped-mcp.git
cd codex-project-scoped-mcp/examples/design-studio
codexAsk: “Use the project-design MCP to read this project's design tokens.” The example's server is already bundled in the repository; no build is needed.
Manifest
At the project root, place mcp.json:
{
"mcpServers": {
"project-design": {
"type": "stdio",
"title": "Project design assistant",
"description": "Use this checkout's design system and screen references.",
"command": "node",
"args": ["tooling/design/server.mjs"],
"env": { "DESIGN_TOKEN_FILE": "tooling/design/tokens.json" }
},
"project-docs": {
"type": "streamable-http",
"url": "https://example.com/mcp",
"headers": { "Authorization": "Bearer ${env:DOCS_TOKEN}" }
}
}
}The HTTPS URL above is illustrative, not a working service. Environment references use ${env:NAME}. Variables must be present in the bridge's environment; Codex may filter inherited variables, so configure forwarding through its MCP env_vars option when needed. The bridge does not read .env files. Do not commit credentials to the manifest.
Discovery starts at the MCP process's session working directory and walks upward to the nearest mcp.json. It stops at a Git checkout root (.git directory or worktree file). A nested checkout does not inherit its parent's manifest. A worktree must contain its own manifest and the assets its servers need; the bridge does not silently switch to the primary checkout. Outside a project, it exposes only its status tool.
Relative command arguments and environment values remain unchanged. Stdio servers run with the manifest's parent directory as cwd, so their own relative file access follows that project. No manifest contents are copied into global Codex config. Each session owns its connections, which close when the session ends. Changes to mcp.json take effect in the next session.
Standards and supported features
Model Context Protocol: uses the official TypeScript SDK for protocol negotiation and JSON-RPC transport. Supports stdio, Streamable HTTP and legacy SSE downstream; presents stdio to Codex.
SEP-2633: implements the practical
mcp.jsonsubset proposed in Standard Client-Side Configuration Format:mcpServers, named servers, transport types, commands, arguments, environment, headers, title and description. This is an evolving proposal, not a finalized universal standard. Interactiveoauthconfiguration is explicitly unsupported.Codex plugins: distributed using the documented
.codex-plugin/plugin.json,.mcp.jsonand.agents/plugins/marketplace.jsoncompatibility format. No lifecycle hooks or modifications to Codex internals.
Tools preserve input/output schemas, annotations, and structured/image/text results. Names include the original server/tool labels and a stable digest to avoid collisions. Server instructions and manifest descriptions accompany tools. Paginated tool lists and tool-list change notifications are supported. Calls forward cancellation and use a five-minute timeout.
Listed resources and prompts are forwarded with namespaced identifiers. Resource templates, subscriptions, completion, sampling, elicitation, interactive OAuth, and experimental task execution are not implemented. The bridge does not advertise these capabilities downstream. A normal tool that returns a job ID and provides polling tools works normally. Do not interpret this package as a transparent proxy for every MCP extension.
Connection attempts are concurrent and bounded to 30 seconds per initialization/list request. A failed server does not hide tools from healthy servers. project_mcp_status reports failure without printing raw credentials, child stderr, headers or transport errors. A disconnected server requires a new session to reconnect. Child stderr is drained and suppressed; diagnose a failing server directly in its checkout. Tool results are forwarded as returned by the server and can contain private data.
Installing the plugin enables execution of commands in discovered project manifests. Use it with repositories whose tooling you trust. The bridge does not sandbox downstream servers or override Codex's tool approval settings. An HTTP server's interactive login in Codex is not automatically shared with the bridge; use configured authenticated headers for those connections.
Codex desktop and the public directory
This repository is a public, Git-backed Codex plugin marketplace. That is distinct from a listing in OpenAI's official Plugin Directory. Installation uses Codex's own marketplace commands.
The compatibility-format MCP entry intentionally omits cwd: local Codex supplies the session directory. The executable is resolved through npx, rather than relying on plugin-path placeholder expansion. The newer portable Agent Plugins format defaults MCP execution to the plugin directory; simply converting the manifest would break project discovery. We retain the documented Codex format until portable plugins have a suitable project-context mechanism.
The CLI and desktop share plugin configuration, but directory handoff must be supplied by a local Codex session. CLI integration is exercised on this repository's tested version; a desktop-specific integration result is not implied. Hosted/cloud threads are not supported.
The package contains no lifecycle hooks. OpenAI currently requires approved-partner allowlisting for public local-MCP submissions, and marks them desktop-only. Marketplace acceptance and support for a dynamically aggregated tool catalogue remain OpenAI's decisions. This project is not an official-directory listing and is not affiliated with OpenAI. See marketplace submission notes, plugin packaging and desktop-only submission.
Standalone use and development
The release tarball also provides a normal MCP executable:
npx --yes --package https://github.com/autobelay/codex-project-scoped-mcp/releases/download/v0.1.2/autobelay-codex-project-scoped-mcp-0.1.2.tgz codex-project-scoped-mcpThis speaks MCP over stdin/stdout; it is not an interactive command. --directory PATH, --manifest PATH and --only server-a,server-b are available for explicit embedding and diagnosis. Normal plugin installation needs none of them.
npm ci
npm run build
npm testThe tests exercise the bundled executable, discovery from subdirectories, worktree and nested-checkout behavior, concurrent project isolation, tool pagination, relative cwd, environment propagation, failed sibling servers, authenticated HTTP, structured results, nested npx execution, resources and prompts. Fixtures contain only synthetic data. Built artifacts are committed so Git marketplace installations do not need dependency installation or a build hook.
MIT licensed. Bundled dependency notices are in THIRD_PARTY_NOTICES.
Available Tools
1 toolproject_mcp_statusLocal Project MCP statusARead-only
Show which project mcp.json Local Project MCP discovered, which servers connected, and how many tools they expose. Does not return credentials.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations handle safety (read-only, non-destructive), the description provides specific behavioral limits by stating what it does *not* reveal ('Does not return credentials'), which is key operational context for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, highly efficient sentence. It front-loads the core functionality and includes the critical safety exclusion, maximizing information density with minimal word count.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there are no input parameters and no output schema, the description is quite complete. It tells the agent exactly what data points will be surfaced (projects, servers, tool counts).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the tool has 0 parameters, the baseline score for parameter semantics (baseline 4) applies. The description does not attempt to describe non-existent parameters, and the schema is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the purpose: to show discovered projects, connected servers, and exposed tools. It is specific and unambiguous, regardless of sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'readOnlyHint' and the description of what it exposes. While it doesn't explicitly state 'when to use,' the warning 'Does not return credentials' serves as an important safety constraint for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.1- First observed
project_mcp_status
TDQS
Scored across 1 tool
With only one tool in the set, there is no possibility of confusion or misselection. The tool has a single, clearly bounded purpose: reporting discovered project MCP config and connection status.
The name project_mcp_status is clear, snake_case, and descriptive. However, it is a noun phrase without an action verb and a single sample cannot establish a predictable verb_noun pattern for the server.
One tool is thin for a server whose name implies project-scoped MCP management. The diagnostic is plausible on its own, but the surface feels under-scoped relative to what the server's title suggests.
The surface is read-only status only: no per-server detail, no listing of individual tool names beyond counts, no reload/refresh of discovered config, and no way to act on the reported state. An agent that needs to inspect or fix MCP configuration will hit a dead end.
Maintenance
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
The MCP server that finds MCP servers. Aggregates Official Registry, Glama, and Smithery.
Repository knowledge graph MCP server for codebase understanding and debugging.
Publish and discover MCP servers via the official MCP Registry. Powered by HAPI MCP server.
Related MCP Servers
- AlicenseAqualityDmaintenanceBridges MCP and LSP to enable semantic code analysis, including go-to-definition, find references, hover info, and function call relationship checks.4ISC
- AlicenseAqualityDmaintenanceA project-local MCP bridge that allows Codex Desktop to plan tasks and OpenCode to execute them within the current project directory, with session reuse and native OpenCode background subagents.41MIT
- AlicenseNot gradedqualityBmaintenanceEnables continuing a local coding task from your own web ChatGPT account by exposing project-scoped read and apply tools over MCP, with no inference API dependency.MIT
- AlicenseNot gradedqualityCmaintenanceEnables ChatGPT and Claude to securely connect to existing Codex sessions across local and remote development hosts via a self-hosted MCP gateway.Apache 2.0