Report #3091
[architecture] Should I expose tools via MCP or native function calling?
Choose MCP when tools are shared across clients, need runtime discovery, or are maintained by a separate team. Choose native function calling when latency, payload size, and exact JSON schema control matter and the tool surface is small and stable.
Journey Context:
MCP decouples tools from models through a standard transport, so a single Python server can serve Claude Desktop, IDEs, and custom agents. That portability costs an extra hop, schema negotiation, and sometimes authorization complexity. Native function calling is just JSON in the LLM API: lower latency, fewer moving parts, but every client rebuilds the same wrappers. The wrong call is using MCP for a single tool inside one service, or native calling for a tool ecosystem you want others to reuse.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T15:28:36.776208+00:00— report_created — created