The Problem MCP Solves
← Back to Overview: MCP
The AI Integration Crisis
AI models are powerful in isolation, but isolated is exactly the problem. A language model sitting behind a chat interface can only work with what you paste into the prompt. To do anything real — check your calendar, query a database, read a file, call an API — the model needs access to external systems.
Every team building AI applications faces the same wall: how do you connect the model to the data it needs?
The answer before MCP was: you build a custom connector. Every time, for every source, for every application.
The M×N Explosion
Imagine you have M = 5 AI applications:
| App | Purpose |
|---|---|
| Claude Desktop | General assistant |
| VS Code AI | Code completion |
| Internal chatbot | Employee Q&A |
| Support agent | Customer service |
| Analytics copilot | Data analysis |
And N = 6 data sources:
| Source | Type |
|---|---|
| GitHub | Code & issues |
| Slack | Messages & channels |
| PostgreSQL | Business data |
| Google Drive | Documents |
| Jira | Project tracking |
| Salesforce | CRM |
Without a standard protocol, each of the 5 × 6 = 30 pairs needs its own custom integration:
Claude Desktop ──→ GitHub connector (custom)
Claude Desktop ──→ Slack connector (custom)
Claude Desktop ──→ Postgres connector (custom)
VS Code AI ──→ GitHub connector (custom, different)
VS Code AI ──→ Slack connector (custom, different)
...
Every integration is built from scratch. Every team reinvents the same auth handling, pagination, error recovery, and data transformation. When GitHub changes their API, every GitHub connector breaks separately. When a new data source appears, every application has to build its own connector.
This is the M×N integration problem — and it scales catastrophically.
What Partial Solutions Failed to Solve
REST APIs
REST APIs standardize the transport (HTTP) and the data format (JSON) but not the semantic contract. Every API has:
- Different authentication schemes (OAuth2, API keys, JWT, basic auth)
- Different pagination patterns (cursor, offset, page number)
- Different error formats and status code conventions
- Different rate limiting mechanisms
- Different SDK requirements per language
Building a "Postgres integration" for Claude Desktop is completely different work from building a "Postgres integration" for VS Code AI — even though they're both reading the same database.
LLM Function Calling
Function calling was a breakthrough — it let models output structured JSON to signal intent to call a function. But it introduced its own fragmentation:
| Provider | Schema Format |
|---|---|
| OpenAI | functions array with JSON Schema parameters |
| Anthropic | tools array with input_schema |
function_declarations in tools |
|
| Mistral | OpenAI-compatible (different edge cases) |
A tool written for OpenAI's function calling format requires adaptation for Anthropic's tool_use format. A team building 10 tools has to maintain 4 different schema definitions per tool — one per provider.
Function calling also has no concept of:
- Data discovery (how does the model learn what tools exist at runtime?)
- Passive data access (reading a file shouldn't require a "tool call" with side-effect semantics)
- Server-to-model communication (the server can't ask the model a question)
- Standard consent mechanics (who approves the call?)
- Cross-session portability (tools defined for one app can't be used by another)
Plugin Systems
Early plugin systems (OpenAI Plugins, etc.) were vendor-specific: a plugin built for one AI platform didn't work with any other. They recreated the M×N problem at the platform level — if 4 AI vendors each had proprietary plugin formats, every tool developer had to build and maintain 4 separate plugin implementations.
The Root Causes
The integration crisis has three root causes:
1. No Shared Semantic Contract
Every integration defines its own conventions for what a "tool call" means, what a "data source" looks like, and how errors are reported. Without a common contract, integrations cannot be reused across applications or model providers.
2. No Separation of Concerns
Before MCP, the AI application was responsible for knowing about every data source it might use. Adding a new source required modifying the application. This couples the application's logic to its integrations in a way that makes both harder to change.
3. Model-Specific Coupling
Tools, prompts, and context retrieval patterns written for one LLM provider cannot be used with another. Organizations that switch or multi-home across providers must rebuild all their integrations.
The Concrete Cost
A 10-person AI team maintaining 5 AI products connected to 8 data sources:
- Without MCP: 40 custom connectors, each maintained independently
- When a source changes its API: Up to 5 emergency patches
- When switching LLM providers: Rewrite all function calling schemas
- When adding a new product: Build 8 new connectors
This is the status quo MCP was built to end.
Key Takeaway
The fundamental problem is not that connecting AI to data is technically hard — it's that without a standard protocol, every connection must be built from scratch, coupling applications to sources, sources to models, and models to vendors. MCP addresses all three couplings simultaneously with one shared protocol.
Related Topics: - The Solution → - Why MCP Matters →
Q&A Review Bank
Q1: What specific inefficiency does the "M×N integration problem" describe? [Easy]
A: When M AI applications each need to connect to N data sources, every pair requires a custom implementation — producing M×N unique connectors with no reuse across pairs. Each new application must re-implement adapters others have already built, and each new data source must be adapted separately for every existing application. This creates exponentially growing maintenance burden, duplicated engineering effort, and a fragile web of integrations that break independently whenever either side changes.
Q2: Why didn't LLM function calling solve the integration problem? [Medium]
A: Function calling standardized the invocation contract (how the LLM signals intent to call a function) but remained model-specific — OpenAI's function schema, Anthropic's tool_use format, and Google's function_declarations are all different, requiring separate implementations per provider. It also provided no standard for data discovery (how does the model learn what tools exist at runtime?), passive data reads (reading a schema shouldn't have side-effect semantics), cross-session portability, or consent mechanics. MCP addresses all of these as protocol-level concerns that transcend any single model provider.
Q3: What are the three root causes of the AI integration crisis? [Medium]
A: First, no shared semantic contract — every integration defines its own conventions for tool calls, data sources, and error reporting, making integrations non-reusable across applications. Second, no separation of concerns — AI applications were coupled to their data sources, so adding a new source required modifying the application itself. Third, model-specific coupling — tools and prompt patterns written for one LLM provider couldn't be used with another, locking teams into a single vendor or forcing them to maintain multiple versions of the same integration.
Q4: Why did vendor-specific plugin systems fail to solve the integration problem? [Hard]
A: Proprietary plugin systems recreated the M×N problem at the platform level: a plugin built for OpenAI Plugins didn't work with Anthropic, Claude Desktop, or any other host. If four AI vendors each maintain their own plugin format, tool developers must build and maintain four separate plugin implementations for the same capability — the number of integrations required didn't shrink, it just moved from the application layer to the plugin layer. An open, vendor-neutral protocol is the only architecture that collapses M×N without creating a new fragmentation elsewhere.
Q5: How does the pre-MCP integration landscape compare to the early web before HTTP standardization? [Hard]
A: Early networked applications each implemented proprietary data exchange formats, requiring custom parsers for every pair of systems that needed to communicate. HTTP and REST standardized web data exchange, creating the modern API economy — any HTTP client works with any HTTP server ever built. MCP is making the same bet for AI-data integration: the API economy created enormous value by collapsing M×N proprietary protocols into M+N HTTP implementations, and MCP's open-standard approach aims to produce the same compounding return for the AI integration layer.