chat-mcp
Allows Codex to perform code reviews and analysis through ChatGPT by automating a connected Chrome tab to send selected code/diffs and retrieve answers.
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., "@chat-mcpreview my changes"
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.
chat-mcp
A local Codex plugin for code reviews and analysis through your ChatGPT account in Chrome.
1. Install
Requires Codex, Node.js 22+, Git, Chrome 116+, and a ChatGPT account.
git clone https://github.com/phykn/chat-mcp.git
cd chat-mcp
npm run setupSetup registers the local Codex plugin with its MCP tools and usage skill, and prepares the Chrome extension.
Related MCP server: chatgpt-mcp
2. Connect Chrome
Open
chrome://extensionsand turn on Developer mode.Click Load unpacked and select the extension folder printed by setup.
ChatGPT opens and connects automatically. Sign in and select Chat if shown.
Keep the connected tab open. It reconnects after Chrome restarts. While waiting for a response, Chat MCP selects this tab so ChatGPT can finish rendering. Keep Chrome visible and the PC awake while requests run. After a screen lock or sleep, restore the screen and retry the same request to retrieve its answer.
3. Use it
Start a new Codex task and say:
Use Chat MCP to review my changes.
Codex can also invoke it automatically during development tasks.
Update
Run git pull and npm run setup in the project folder, then start a new Codex task. The connected extension updates automatically.
Usage notice
For individual development workflows, not bulk collection or multi-user service hosting. This project is not affiliated with OpenAI.
Browser automation may conflict with service terms and lead to account restrictions or suspension. You are responsible for complying with applicable terms and policies, including for personal use.
Selected code, diffs, and prompts are sent to ChatGPT. Only share content you are authorized to disclose; exclude credentials and confidential information.
License
MIT. Provided without warranty; see the license for limitations of liability.
Available Tools
4 toolschatgpt_askA
Delegate design comparisons, difficult debugging, or lengthy analysis to ChatGPT. Pass file paths for local context collection. Call once and wait; retry uncertain outcomes with the same request_id and identical inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| repo_path | No | ||
| request_id | Yes | ||
| context_paths | No | ||
| conversation_handle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It meaningfully discloses retry/idempotency semantics ('same request_id and identical inputs') and that file paths are used for local context collection. It stops short of explaining output shape, failure modes, or cancellation, but the provided behavior is genuinely useful.
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?
Three sentences with no filler; each sentence contributes a distinct piece of information: purpose, context collection, and retry behavior. The most important decision-relevant content is front-loaded.
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?
For a five-parameter tool with no output schema and no annotations, the description covers high-level use cases, local context collection, and retry behavior. However, it omits what the response looks like, how repo_path and conversation_handle affect execution, and how this relates to chatgpt_cancel. It is workable but has notable gaps.
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?
Schema description coverage is 0%, so the description must compensate for the five parameters. It partially explains file paths/context collection and request_id's role in retries, but it leaves prompt, repo_path, and conversation_handle semantically unexplained. The compensation is insufficient for the parameter count.
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 opens with a specific action ('Delegate') and names the resource (ChatGPT), followed by concrete task categories: design comparisons, difficult debugging, and lengthy analysis. It is clear about the tool's purpose but does not explicitly contrast it with sibling tools like review_with_chatgpt or chatgpt_cancel.
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?
It provides concrete scenarios where the tool is appropriate and gives actionable guidance: 'Call once and wait; retry uncertain outcomes with the same request_id and identical inputs.' It does not state when not to use it or point to alternatives, so it lacks explicit exclusions but still gives clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chatgpt_cancelA
Cancel this request’s owned generation or clear its unchanged unsent draft. Returns cancel_requested while its worker handles cancellation.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return value ('cancel_requested'), the asynchronous nature ('while its worker handles cancellation'), and the precise targets of the operation. It doesn't state irreversibility or failure modes, but for a cancellation tool this is solid coverage.
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?
Two short sentences, front-loaded with the action verb 'Cancel', and the second sentence adds the return value and async status without fluff. Every word earns its place.
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?
For a single-parameter tool with no output schema, the description covers the action, the scope conditions, the return value, and the async behavior. It omits error cases or what happens when there is no owned generation, but these are minor for this level of complexity.
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?
The schema provides only a bare request_id with length constraints and no description. The description anchors that parameter by saying 'this request's owned generation' and 'unchanged unsent draft', giving the agent meaningful semantic context about what request_id identifies and compensating for the 0% schema coverage.
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 opens with 'Cancel' and specifies two concrete actions: canceling an owned generation or clearing an unchanged unsent draft. This is a specific verb+resource pairing that clearly sets it apart from siblings like chatgpt_ask, chatgpt_health, and review_with_chatgpt.
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?
The description explicitly defines the scope of use: only an owned generation or an unchanged unsent draft, which gives clear contextual grounding. It does not name alternatives or when-not-to-use cases, but the sibling tool names make the cancellation context self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chatgpt_healthARead-only
Check once before the first request. Returns ready and a next_action for setup, connection, or recovery; no chat content is exposed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, indicating a safe read operation. The description adds valuable behavioral context: it returns 'ready' and a 'next_action' for setup/connection/recovery, and it explicitly states that no chat content is exposed. This goes beyond the annotation and clarifies what the agent can expect from the call, covering the tool's behavior without contradicting the read-only hint.
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, compact sentence that front-loads the most important instruction ('Check once before the first request') and then states the return value and a key limitation. There is no waste or redundancy; every phrase earns its place.
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?
For a zero-parameter, read-only health check, the description is largely complete. It tells the agent when to call, what it returns (ready and next_action), and what it does not return (chat content). The only minor gap is the lack of detail on the possible values of 'next_action' or error conditions, but given the tool's simplicity and the presence of readOnlyHint, this is acceptable. The description is sufficient for an agent to call it correctly.
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?
The tool has zero parameters, and the schema coverage is 100% (trivially). The description does not need to explain any parameters. Baseline for no parameters is 4, and there is nothing to add. The description's mention of return values is separate from parameter semantics.
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 states a specific action (check) on a specific resource (health), and clarifies it returns ready and next_action for setup/connection/recovery. It also explicitly notes no chat content is exposed, which differentiates it from sibling chat tools like chatgpt_ask and review_with_chatgpt. The verb and scope are unambiguous.
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?
The description gives a clear when-to-use instruction: 'Check once before the first request.' This implies it is a one-time preflight check. It does not explicitly mention alternatives or when-not-to-use, but the context of siblings (ask, review, cancel) makes it obvious this is the health/readiness gate, not a chat or operation tool. The guidance is sufficient for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_with_chatgptB
Use first for substantial code reviews and once after non-trivial implementation. Collect the diff and matching file contents directly from repo_path; no need to paste code. Narrow paths for focused reviews. Return actionable findings.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | ||
| scope | Yes | ||
| base_ref | No | ||
| question | No | ||
| repo_path | Yes | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations or output schema are present, so the description carries the full transparency burden. It adds useful operational behavior: the tool 'collect[s] the diff and matching file contents directly from repo_path' and the agent should 'not paste code.' It also says the tool will 'return actionable findings.' Still, it does not disclose side effects, external call behavior, latency, failure modes, or output structure.
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 four short sentences with no filler. It front-loads the usage rule, then gives an operational note, a scoping tip, and the expected output type. Every sentence earns its place.
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?
For a six-parameter tool with zero schema coverage and no output schema, the description is too thin. It covers the overall workflow and timing, but leaves important invocation details undocumented: what each scope value means, what base_ref is for, how question/request_id are used, and what 'actionable findings' look like structurally.
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?
Schema description coverage is 0%, so the description must compensate for the six parameters, but it only maps to two of them: 'repo_path' (collect directly from repo_path) and 'paths' (narrow paths). The key parameters 'scope', 'base_ref', 'question', and 'request_id' are left unexplained, including the meaning of the scope enum values.
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 clearly identifies the tool as the primary option for 'substantial code reviews' and says it returns 'actionable findings', so an agent can tell it is a review-focused ChatGPT tool. It does not explicitly distinguish it from siblings like chatgpt_ask, but the review-specific language and the name make the purpose unambiguous.
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?
The description gives explicit timing guidance: 'Use first for substantial code reviews and once after non-trivial implementation.' It also advises to 'narrow paths for focused reviews.' However, it never states when not to use it or what alternative tools to prefer, stopping short of full routing guidance.
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.
4 tool updates
v0.1.0- First observed
chatgpt_ask - First observed
chatgpt_cancel - First observed
chatgpt_health - First observed
review_with_chatgpt
TDQS
Scored across 4 tools
The tools are mostly distinct: health checks, cancelations, general questions, and code reviews each have clear roles. There is mild overlap between chatgpt_ask and review_with_chatgpt for code-related inquiries, but their descriptions give enough separation.
Naming is readable and consistently lowercase snake_case, but the pattern is mixed: chatgpt_ask, chatgpt_health, and chatgpt_cancel use a chatgpt_ prefix, while review_with_chatgpt places the verb first and the service as a suffix. This is a minor but noticeable inconsistency.
Four tools are well-scoped for a ChatGPT integration: ask, review, health, and cancel cover the core workflow without redundancy or bloat. The count feels appropriate for the server's purpose.
The set covers the essential interaction lifecycle: health check, general ask, code review, and cancellation. Minor gaps exist, such as no explicit session/history inspection tool, but agents can likely accomplish their main goals with these tools.
Maintenance
Related MCP Connectors
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Connect Claude or ChatGPT to your LinkedIn inbox. Research contacts and draft replies for review.
Connect Google Analytics to ChatGPT. Query GA4 data in plain English and get instant insights.
Related MCP Servers
- AlicenseCqualityFmaintenanceConnects AI assistants like Claude to the Codex CLI for code analysis, editing, and execution. Supports file references with @ syntax, sandboxed code execution with approval workflows, and structured code changes for automated refactoring and documentation.841 npm179MIT
- AlicenseNot gradedqualityAmaintenanceBridges Cursor IDE Agent with ChatGPT Web for external reasoning, research, and review.13 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables Codex to consult ChatGPT Web through a dedicated Chrome profile as a read-only reviewer and senior advisor, providing second opinions on code, tests, designs, and proposed fixes.12-
- AlicenseNot gradedqualityCmaintenanceEnables Codex to consult ChatGPT Web through a dedicated Chrome session, acting as a read-only reviewer and senior advisor for code, tests, and designs.MIT