Skip to content

ChatGPT custom MCP OAuth shows zero tools despite successful pairing #481

Description

@wey-gu

Summary

A Discord user reports that Nowledge Mem 0.10.54 can complete Remote MCP OAuth with ChatGPT custom MCP App, but ChatGPT shows zero available actions.

Source

Discord Chinese channel, message 1535519574680936538 on 2026-08-08.

Reported environment:

  • Nowledge Mem Desktop / nmem-server 0.10.54
  • macOS Apple Silicon
  • ChatGPT Plus, Developer Mode enabled
  • Cloudflare Tunnel exposing https://<domain>/mcp
  • Built-in Remote MCP OAuth

Reported symptoms:

  1. ChatGPT creates the App and namespace appears.
  2. OAuth succeeds; Nowledge Mem records an approved ChatGPT client and issues tokens.
  3. ChatGPT shows no available app actions.
  4. Refresh / reconnect still ends with connection setup problem and tool count stays 0.
  5. Local direct /mcp/ initialize succeeds; tools/list returns 67 tools; memory_search and get_memory_by_id are present, but core read tool annotations were observed as null.

Confirmed code finding

Desktop MCP runtime still builds most tools from nmem-rs/golden/snapshots/mcp-tools-full.json; that snapshot has stale annotations: null for core shared reads including memory_search and read_working_memory, even though nmem_wire::tools already declares read-only annotations.

This is a real compatibility gap for ChatGPT-style read-only MCP hosts, not just user confusion.

Immediate fix

Patch prepared in codex/fix-mcp-read-tool-annotations:

  • shared tools now get runtime annotations from nmem_wire::tools, not stale golden nulls;
  • targeted regression covers memory_search and read_working_memory;
  • external-agent payload budget test adjusted to keep the annotated slim payload under 9.5KB.

Follow-up work still needed

  • Validate with real ChatGPT custom MCP after the patch ships.
  • Consider a first-class chatgpt-readonly / OAuth read-only profile so ChatGPT does not receive the full 67-tool desktop surface.
  • Revisit whether Remote MCP OAuth default scopes should include write scopes for generic ChatGPT clients.
  • Check whether offline_access / refresh-token discovery wording matters for ChatGPT compatibility.
  • Improve unauthorized remote MCP responses so users see standard 401 diagnostics instead of Cloudflare-looking 502s where possible.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions