Claude Code has a full execution environment:
- Run Python/pandas between tool calls to transform data
- Read/write files for intermediate results
- Run bash (jq, csvkit, curl, etc.)
- Write and execute multi-step scripts
- Debug iteratively by printing intermediate state
Claude Desktop has only:
- Call MCP tool → get response → call next MCP tool
Every workflow that requires intermediate data processing (filter, join, dedup, add columns, merge results) works in Claude Code because the AI runs Python between calls. In Claude Desktop, there’s no “between calls” — the AI can only pass artifact_id and hope the next tool does the right thing.
Claude Desktop will never be as capable as Claude Code for multi-step data workflows.
Hence the New Principle: This MCP server is designed for quick queries and testing from Claude Desktop. For complex, multi-step data science workflows, use Claude Code.
This changes the design center from “help the AI chain 4+ tools” to “make each tool call return complete, useful results.”
Big lesson learned: Claude Desktop does NOT read AGENTS.md, _INSTRUCTIONS, SKILL.md, or any .md files. It only reads tool docstrings via tools/list.
So AGENTS.md is useful for us (developers, Claude Code sessions) but invisible to Claude Desktop. The _INSTRUCTIONS in server.py is also not reliably read by Claude Desktop — it’s a FastMCP feature that may or may not be surfaced depending on the client.
What Claude Desktop actually sees:
- Tool names + docstrings (via
tools/list— must be <2KB each) - Tool response payloads (what we return from each call)
- next_steps in responses (our best guidance channel)
So the strategic reedit needs to prioritize: