Episode 7: Internal vs. External MCP
In Claude Code, MCP Servers are categorized into two types: Internal MCPs, which are bundled with plugins, and External MCPs, which are manually configured by the user.
Core Comparison
| Dimension | Internal MCP | External MCP |
|---|---|---|
| Source | Bundled with Plugin | Independent service or third-party package |
| Installation | Ready automatically upon plugin install | Manual edit of settings.json |
| Process | Managed by Plugin lifecycle | Managed or auto-spawned by user config |
| Examples | claude-mem search service |
MySQL, PostgreSQL, GitHub |
Internal MCP Example: claude-mem
claude-mem is a full-featured plugin that includes an MCP Server running on Bun. Once the plugin is installed, the system automatically reads its .mcp.json and starts the mcp-search service.
Architecture Diagram:
graph TB
subgraph claude-mem Plugin
P1[plugin.json]
P2[.mcp.json]
P3[mcp-server.cjs]
end
Claude -->|mcp__plugin_claude-mem_mcp-search| P3
P3 --> D[(Local Memory DB)]External MCP Example: MySQL
External MCPs are typically used to connect to existing infrastructure.
Why use settings.local.json?
- Sensitive Info: DB passwords should not be committed to Git.
- Environment Variance: Each developer may have different DB addresses/accounts.
- Security Isolation: Local debugging config doesn't affect the global setup.
Execution Flow
sequenceDiagram
participant User
participant Claude
participant MCP as MySQL MCP
participant DB
User->>Claude: Query recently registered users
Claude->>MCP: query("SELECT * FROM users...")
MCP->>DB: Execute SQL
DB-->>MCP: Return row data
MCP-->>Claude: Results in JSON format
Claude-->>User: Natural language presentation