Files
chatgpt-mcp/AGENT_HANDOFF.md
T

5.9 KiB

AGENT_HANDOFF.md

Completed

Phase 0 — Repository Setup

  • Repository skeleton (TASK 0.1)
  • package.json with dependencies (TASK 0.2)

Phase 1 — Core Utilities

  • Configuration loader (src/config/env.js) — TASK 1.1
  • Secret redaction utility (src/utils/redact.js) — TASK 1.2
  • Context budget utility (src/utils/context-budget.js) — TASK 1.3
  • Safe logging helper (src/utils/logging.js) — TASK 1.4

Phase 2 — OpenAI Integration

  • OpenAI client wrapper (src/openai/client.js) — TASK 2.1
  • Response builder (src/openai/responses.js) — TASK 2.2
  • Error handling and edge cases (tests) — TASK 2.3

Phase 3 — Tool Inputs and Prompts

  • Zod input validation schemas (src/tools/schemas.js, tests) — TASK 3.1
  • Base prompt template (src/prompts/base.js, tests) — TASK 3.2
  • ask_chatgpt prompt builder (src/prompts/ask-chatgpt.js, tests) — TASK 3.3
  • review_plan prompt builder (src/prompts/review-plan.js, tests) — TASK 3.4
  • review_code prompt builder (src/prompts/review-code.js, tests) — TASK 3.5
  • debug_issue prompt builder (src/prompts/debug-issue.js, tests) — TASK 3.6
  • architecture_review prompt builder (src/prompts/architecture-review.js, tests) — TASK 3.7

Next Phase

Phase 4 - Tool Handlers

Build the MCP tool handlers that:

  1. Register each tool with the MCP server.
  2. Validate input using schemas.js.
  3. Call the appropriate prompt builder.
  4. Send the prompt to OpenAI via responses.js.
  5. Return structured advisory output to Claude Code.

Completed (Phase 4)

All five MCP tool handlers are complete:

Handler File Tests
handleAskChatGpt src/tools/ask-chatgpt.js 27
handleReviewPlan src/tools/review-plan.js 28
handleReviewCode src/tools/review-code.js 28
handleDebugIssue src/tools/debug-issue.js 28
handleArchitectureReview src/tools/architecture-review.js 28

Total: 139 orchestration-only tests, all passing.

Completed (Phase 5)

All five MCP tools registered: ask_chatgpt, review_plan, review_code, debug_issue, architecture_review.

Task 5.1 - MCP server skeleton

Minimal MCP stdio server in src/server.js. MCP initialize handshake succeeds. No tools registered yet.

Task 5.2 - Register ask_chatgpt MCP tool

ask_chatgpt is now registered as an MCP tool on the server (src/server.js).

Registration details:

  • Uses shared baseInputSchema (question required + context, constraints, expectedOutput, projectSummary, taskSummary, relevantFiles, logs optional).
  • All 3 external deps injected: loadConfig, createOpenAIClient, sendOpenAIResponse.
  • Returns structured MCP tool result: { content: [{ type: "text", text }], isError, warnings }.

Smoke test results (all passing):

  • initialize → server returns chatgpt-mcp v0.1.0
  • tools/list → exposes ask_chatgpt with correct schema
  • tools/call (happy path, mocked OpenAI) → { content: [...], isError: false } with answer
  • tools/call (minimal input { question: "hi" }) → works
  • tools/call (full input, all 10 schema fields) → handled correctly
  • tools/call (missing OPENAI_API_KEY) → structured MCP error "Error: Configuration error: OPENAI_API_KEY is missing."
  • tools/call (invalid API key) → structured MCP error "OpenAI API error (OpenAIAuthError): 401"
  • All 523 unit tests pass across 18 test files

Production code (src/server.js): ~39 lines, single ask_chatgpt tool registered with MCP via Stdio transport.

Task 5.3 - Register remaining MCP tools

Four additional MCP tools registered on the server (src/server.js):

Tool Handler
review_plan handleReviewPlan
review_code handleReviewCode
debug_issue handleDebugIssue
architecture_review handleArchitectureReview

All five MCP tools now registered: ask_chatgpt, review_plan, review_code, debug_issue, architecture_review.

Smoke test results (all passing):

  • initialize → server returns chatgpt-mcp v0.1.0
  • tools/list → 5 tools total
  • tools/call reaches handlers for all 5 tools
  • missing OPENAI_API_KEY → structured tool errors: "Error: Configuration error: OPENAI_API_KEY is missing."
  • npm test → 523 tests pass across 18 test files, no regressions

Implementation notes:

  • Each tool registered explicitly with its own registerTool() call — no registry abstraction.
  • All handlers use existing modules only (no new imports or files).
  • SDK quirk: isError: true wraps results in JSON-RPC error envelope (code: -32603).

Task 5.4 - Normalize MCP tool error formatting

MCP tool error formatting normalized in src/server.js. All 5 tool registrations now produce a single "Error:" prefix — no more duplicate "Error: Error:" strings.

Changes: Each tool callback normalizes the error text before returning:

  • If result.error already starts with "Error:", it is used as-is.
  • Otherwise, "Error: " is prepended.
  • result.ok responses are unchanged.

Smoke tests: npm test 523 passed · tools/list 5 tools · ask_chatgpt single prefix · review_plan single prefix

Task 5.5 - Claude Code MCP configuration and local end-to-end setup

Project-local Claude Code discovery configured:

  • .claude/ added to .gitignore — no machine-specific paths in repo
  • README.md updated with Setup, MCP Tools, and Running sections
  • MCP config uses "command": "npm", "args": ["start"] — platform-independent
  • All 5 tools documented: ask_chatgpt, review_plan, review_code, debug_issue, architecture_review

Next Pending

N/A — all planned tasks complete.

General Rules

  • Read ARCHITECTURE.md before making changes.
  • Work incrementally.
  • Keep changes small.
  • Do not implement multiple phases at once.
  • Do not add features not described in ARCHITECTURE.md.
  • Update documentation when appropriate.
  • Claude Code is the implementation agent.
  • ChatGPT MCP is advisory only.