[BUG] Claude Desktop no expone herramientas MCP aunque el servidor las registra correctamente

Resolved 💬 3 comments Opened Nov 13, 2025 by sbraind Closed Nov 17, 2025

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Descripción del problema:
Un servidor MCP local (Excel MCP Server) se conecta exitosamente a Claude Desktop, se inicializa correctamente y
envía 34 herramientas en respuesta a tools/list, pero Claude Desktop no las expone en la interfaz de usuario.
El servidor aparece como "running" pero muestra "No hay herramientas disponibles" cuando se hace clic para
expandirlo.

Servidor que funciona correctamente (para comparación):

  • Context7 (extensión oficial) - SÍ muestra sus 2 herramientas correctamente

Servidor que NO funciona:

  • Excel MCP Server (instalado globalmente con npm) - NO muestra las 34 herramientas

Evidencia de que el servidor funciona:
Los logs muestran que el servidor:

  1. Se inicializa correctamente
  2. Responde al handshake MCP con capabilities correctas incluyendo listChanged: true
  3. Envía las 34 herramientas completas con schemas válidos en respuesta a tools/list
  4. No tiene errores de ejecución

Logs relevantes:
2025-11-13T22:46:19.530Z [excel] Message from server:
{"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":true}},"
serverInfo":{"name":"excel-mcp-server","version":"2.0.0"}}}

2025-11-13T22:46:19.538Z [excel] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1}

2025-11-13T22:46:19.539Z [excel] Message from server:
{"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"excel_read_workbook","description":"List all sheets and
metadata of an Excel workbook","inputSchema":{...},"annotations":{"readOnlyHint":"true"}}, ... 33 more tools]}}

Configuración en claude_desktop_config.json:
{
"mcpServers": {
"excel": {
"command": "/Users/sebastianbrain/.npm-global/bin/excel-mcp-server"
}
}
}

Comportamiento observado:

  1. El servidor aparece en "Servidores MCP locales" con estado "running" (azul)
  2. Al hacer clic en la flecha para expandir, muestra: "No hay herramientas disponibles"
  3. En chats, Claude no ve las herramientas del Excel MCP Server
  4. Los logs confirman que el servidor envió las 34 herramientas correctamente

Intentos de solución sin éxito:

  1. Agregar listChanged: true a capabilities
  2. Limpiar cache de Claude Desktop
  3. Reinstalar el servidor globalmente con npm
  4. Usar diferentes formatos de configuración (ruta absoluta vs comando)
  5. Instalar como bundle MCPB (.mcpb file)
  6. Cambiar manifest_version a dxt_version
  7. Agregar manejo de errores EPIPE

Comparación Context7 vs Excel MCP Server:

Context7 (FUNCIONA):

  • Capabilities: {"tools":{"listChanged":true}}
  • Tiene campo instructions en response
  • Herramientas tienen campo title además de name
  • 2 herramientas se muestran correctamente en UI

Excel MCP (NO FUNCIONA):

  • Capabilities: {"tools":{"listChanged":true}} (igual)
  • No tiene campo instructions
  • Herramientas solo tienen name y description
  • 34 herramientas NO se muestran en UI

Información del sistema:

  • macOS Darwin 24.6.0
  • Claude Desktop version: 0.1.0 (según logs)
  • Node.js: v24.3.0
  • Protocolo MCP: 2025-06-18

Pregunta:
¿Qué diferencia entre Context7 y nuestro servidor hace que Claude Desktop exponga las herramientas de uno pero
no del otro, a pesar de que ambos las registran correctamente en el protocolo MCP?

Repositorio del servidor:
https://github.com/sbraind/Experimentos/tree/main/excel-mcp-server

What Should Happen?

Expected Behavior:

When a MCP server is properly configured in claude_desktop_config.json, successfully connects to Claude Desktop,
and responds to the tools/list request with valid tool definitions:

  1. The server should appear in the "MCP Servers" section with status "running" ✅ (this works)
  2. The tools should be visible and accessible:
  • Clicking the arrow/expand button next to the server name should show a list of all available tools
  • Each tool should be displayed with its name and description
  • The tools should be available for use in conversations
  1. In chat conversations:
  • Claude should be able to see and use the registered tools
  • When asked to perform tasks related to Excel files, Claude should automatically select and use the

appropriate tools from the Excel MCP Server

  • The tools should appear in Claude's tool selection/invocation process

Current vs Expected:

| Aspect | Current (Broken) | Expected (Working) |
|-----------------------|-------------------------------------|---------------------------------|
| Server status | ✅ "running" | ✅ "running" |
| Tools list in UI | ❌ "No hay herramientas disponibles" | ✅ Shows all 34 tools |
| Tools in chat | ❌ Not available | ✅ Available for use |
| Expand server details | ❌ Shows empty list | ✅ Shows tool names/descriptions |

The behavior should match how Context7 extension works - where clicking the server shows its tools and they're
available in conversations.

Error Messages/Logs

Relevant logs from ~/Library/Logs/Claude/mcp.log:

  # Server initialization - successful
  2025-11-13T23:03:55.569Z [excel] [info] Initializing server...
  2025-11-13T23:03:55.574Z [excel] [info] Using MCP server command: excel-mcp-server with args and path: {
    metadata: {
      args: [ [length]: 0 ],
      paths: [
        '/usr/local/bin',
        '/opt/homebrew/bin',
        '/usr/bin',
        '/bin',
        '/usr/sbin',
        '/sbin'
      ]
    }
  }

  # Server sends capabilities with listChanged: true
  2025-11-13T22:46:19.530Z [excel] [info] Message from server:
  {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":true}},"
  serverInfo":{"name":"excel-mcp-server","version":"2.0.0"}}}

  # Client requests tool list
  2025-11-13T22:46:19.538Z [excel] [info] Message from client:
  {"method":"notifications/initialized","jsonrpc":"2.0"}
  2025-11-13T22:46:19.538Z [excel] [info] Message from client:
  {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1}

  # Server responds with all 34 tools (truncated for brevity)
  2025-11-13T22:46:19.539Z [excel] [info] Message from server: {"jsonrpc":"2.0","id":1,"result":{"tools":[
    {"name":"excel_read_workbook","description":"List all sheets and metadata of an Excel
  workbook","inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"Path to the
  Excel file"},"responseFormat":{"type":"string","enum":["json","markdown"],"default":"json"}},"required":["filePa
  th"]},"annotations":{"readOnlyHint":"true"}},
    {"name":"excel_read_sheet","description":"Read complete data from a sheet (with optional
  range)","inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"Path to the
  Excel file"},"sheetName":{"type":"string","description":"Name of the
  sheet"},"range":{"type":"string","description":"Optional range (e.g.,
  A1:D10)"},"responseFormat":{"type":"string","enum":["json","markdown"],"default":"json"}},"required":["filePath"
  ,"sheetName"]},"annotations":{"readOnlyHint":"true"}},
    {"name":"excel_write_workbook","description":"Create a new Excel file with
  data","inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"Path for the new
  Excel file"},"sheetName":{"type":"string","description":"Name for the
  sheet","default":"Sheet1"},"data":{"type":"array","description":"2D array of data to write"},"createBackup":{"ty
  pe":"boolean","default":false}},"required":["filePath","data"]},"annotations":{"destructiveHint":"true"}},
    ... (31 more tools)
  ]}}

  For comparison, Context7 logs (which DOES work):

  2025-11-13T22:42:47.523Z [info] [Context7] Message from server: {"result":{"protocolVersion":"2025-06-18","capab
  ilities":{"tools":{"listChanged":true}},"serverInfo":{"name":"Context7","version":"1.0.13"},"instructions":"Use
  this server to retrieve up-to-date documentation and code examples for any library."},"jsonrpc":"2.0","id":0}

  2025-11-13T22:42:47.525Z [info] [Context7] Message from server:
  {"result":{"tools":[{"name":"resolve-library-id","title":"Resolve Context7 Library ID","description":"Resolves a
   package/product name...","inputSchema":{...}},{"name":"get-library-docs","title":"Get Library
  Docs","description":"Fetches up-to-date documentation...","inputSchema":{...}}]},"jsonrpc":"2.0","id":1}

  Key differences noticed:
  1. Context7 includes "instructions" field in initialization response - Excel MCP doesn't
  2. Context7 tools have "title" field - Excel MCP tools only have "name"
  3. Both have "listChanged": true
  4. Both send valid tool schemas

  No error messages are present - the server runs successfully, but Claude Desktop doesn't expose the tools in the
   UI despite receiving them.

Steps to Reproduce

Steps to Reproduce:

  1. Clone the repository:

git clone https://github.com/sbraind/Experimentos.git
cd Experimentos/excel-mcp-server

  1. Install dependencies and build:

npm install
npm run build

  1. Install the server globally:

npm install -g .

  1. Configure Claude Desktop:
  • Open ~/Library/Application Support/Claude/claude_desktop_config.json
  • Add the following configuration:

{
"mcpServers": {
"excel": {
"command": "excel-mcp-server"
}
}
}

  • Or use the full path if needed:

{
"mcpServers": {
"excel": {
"command": "/Users/[username]/.npm-global/bin/excel-mcp-server"
}
}
}

  1. Restart Claude Desktop completely:
  • Quit Claude Desktop (Cmd + Q)
  • Wait a few seconds
  • Reopen Claude Desktop
  1. Check server status:
  • Go to Settings → Developer → MCP Servers (or equivalent menu)
  • Verify that "excel" server appears with status "running" (blue)
  1. Attempt to view tools:
  • Click the arrow/expand button next to the "excel" server
  • Bug appears: Shows "No hay herramientas disponibles" (No tools available)
  1. Verify in chat:
  • Open a new conversation
  • Try asking: "Create an Excel file with sample data"
  • Bug appears: Claude doesn't see or use any Excel MCP tools
  1. Verify server is actually working (check logs):

tail -100 ~/Library/Logs/Claude/mcp.log | grep -A 20 "excel"

  • Logs show server initialized successfully
  • Logs show 34 tools sent in response to tools/list
  • No errors in the logs

Result: Server is running and sending tools correctly, but Claude Desktop UI doesn't display them and they're
not available for use.

Claude Model

Sonnet (default)

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.0.37

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Screenshots:

  • Server showing "running" status but "No hay herramientas disponibles" (No tools available)
  • Comparison with Context7 which shows its 2 tools correctly

Additional context:

  1. Working MCP servers for comparison:
  • @negokaz/excel-mcp-server (npm package) - works correctly
  • Context7 (official extension) - works correctly
  • Both expose their tools in Claude Desktop UI successfully
  1. Things that were tried without success:
  • Installing as MCPB bundle (.mcpb file) - same issue
  • Using local file path vs global npm install - same issue
  • Clearing Claude Desktop cache - no change
  • Adding listChanged: true capability - no change
  • Different configuration formats - same issue
  1. The server works correctly when tested directly:

echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientI
nfo":{"name":"test","version":"0.1.0"}},"id":0}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","method":"tools/list","params":{},"id":1}' | node dist/index.js

  1. Returns all 34 tools with valid schemas.
  2. Hypothesis:

There may be an undocumented requirement or field that Claude Desktop expects in order to expose MCP tools in
the UI. Context7 has additional fields (instructions, title on tools) that might be triggering the correct
behavior, but this is not documented in the MCP specification.

  1. Impact:

This affects any developer trying to create custom MCP servers for Claude Desktop. Without knowing what makes
Context7 work vs custom servers fail, it's impossible to build functioning local MCP servers.

Test command to verify server works:
cd excel-mcp-server
npm run build
node dist/index.js # Should start and wait for stdin

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗