MCP Tools Not Exposed to Agent in Codex Desktop, Only Resources Are Available

Open 💬 1 comment Opened Jul 2, 2026 by xy6859

What version of the Codex App are you using (From “About Codex” dialog)?

codex 26.623.81905

What subscription do you have?

openai

What platform is your computer?

_No response_

What issue are you seeing?

MCP Tools Not Exposed to Agent in Codex Desktop, Only Resources Are Available
Summary
Codex Desktop configures multiple enabled MCP servers, but the Tools (executable functions) of these servers are not properly exposed to the agent. The agent can only access Resources (data context), but cannot invoke tool functions. This makes tool-oriented MCP servers (such as the memory server, office-mcp, etc.) effectively read-only in Codex Desktop, even though the servers correctly declare tools capabilities and return tool lists.
Environment Information
Client: Codex Desktop App
MCP Server: Model Context Protocol Memory Server (@modelcontextprotocol/server-memory)
MCP Server Path: /Users/bqt/.codex/venvs/memory/npm-env/src/src/memory/dist/index.js
Configuration Location: ~/.codex/config.toml
Configuration File Content
[mcp_servers.memory]
args = []
command = "/Users/bqt/.codex/venvs/memory/npm-env/src/src/memory/dist/index.js"
startup_timeout_sec = 120
enabled = true
default_tools_approval_mode = "auto"

[mcp_servers.memory.tools.create_entities]
approval_mode = "auto"

[mcp_servers.memory.tools.create_relations]
approval_mode = "auto"

[mcp_servers.memory.tools.add_observations]
approval_mode = "auto"

[mcp_servers.memory.tools.read_graph]
approval_mode = "auto"

[mcp_servers.memory.tools.search_nodes]
approval_mode = "auto"

[mcp_servers.memory.tools.open_nodes]
approval_mode = "auto"

[mcp_servers.memory.tools.delete_entities]
approval_mode = "prompt"

[mcp_servers.memory.tools.delete_observations]
approval_mode = "prompt"

[mcp_servers.memory.tools.delete_relations]
approval_mode = "prompt"
Testing and Diagnostic Results

  1. MCP Server initialize Response (Correct)

The server correctly declares tools and resources capabilities:
{
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {"listChanged": true},
"resources": {"listChanged": true, "subscribe": true}
},
"serverInfo": {
"name": "memory-server",
"version": "0.6.3"
}
},
"jsonrpc": "2.0",
"id": 1
}

  1. MCP Server tools/list Response (Correct)

The server correctly returns all 9 tools:
create_entities
create_relations
add_observations
delete_entities
delete_observations
delete_relations
read_graph
search_nodes
open_nodes

  1. Codex list_mcp_resources Output (Only Shows Resources)

Codex's list_mcp_resources command only returns Resources:
Server Name: memory
Resource URI: memory://knowledge-graph
Resource Name: knowledge-graph
Resource Title: Knowledge Graph
Resource Description: The full knowledge graph with all entities and relations
MIME Type: application/json

  1. Codex Agent Attempting to Call Tools (Failed)

The agent tried multiple tool name formats, but all failed:
mcp__memory__create_entities ❌
memory_create_entities ❌
memory.create_entities ❌
mcp__memory__add_observations ❌
mcp__memory__upsert_entities ❌
The agent can only read the memory://knowledge-graph resource through Read MCP resource.
Expected Behavior
If an MCP server correctly declares tools capabilities in the initialize response and tools/list returns a tool list, Codex should:
Expose these tools as callable tools to the agent
Include tools like mcp__memory__create_entities in the agent's tool manifest
Allow the agent to invoke these functions through tool names
Actual Behavior
Codex's agent can only access Resources APIs (list_mcp_resources, list_mcp_resource_templates, read_mcp_resource), and cannot access Tools APIs (tools/list, tools/call). The MCP server is effectively treated as read-only, even though it correctly implements tool functionality.
Root Cause Analysis
Based on the analysis of Codex official Issues #21654 and #14242, as well as Office-MCP Issue #61:
Codex's MCP discovery/planning flow prioritizes probing resources/list
If the tools/list response is not properly handled, tools are not exposed to the agent
Codex Desktop's UI/agent only exposes Resources APIs, not Tools APIs
This makes tool-oriented MCP servers effectively read-only in Codex Desktop, even though the session reports available tools.
Suggested Fix Directions
Ensure Codex's MCP client correctly calls and processes the tools/list response
Properly expose discovered tools to the agent's tool manifest
Display each MCP server's tool discovery status in the UI (tool count, resource count, whether attached to current session)
Distinguish error messages between:"Server exists but has no resources"
"Server exists and has tools"
"Server is actually unknown/unavailable"

What steps can reproduce the bug?

Tell Codex to install https://github.com/modelcontextprotocol/servers/tree/main/src/memory for me, and after installation, I can't use any of the memory tools.

What is the expected behavior?

_No response_

Additional information

_No response_

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗