2.4 KiB
2.4 KiB
src/features/claude-code-mcp-loader/ — Tier 2 MCP Loader (.mcp.json)
Generated: 2026-05-15
OVERVIEW
11 files. Loads .mcp.json files from project/user scopes and expands ${VAR} env vars. Feeds Tier 2 of the 3-tier MCP system into mcp-config-handler.ts during Phase 5 of config loading.
WHY IT EXISTS
Claude Code ecosystem ships MCPs via .mcp.json files with ${VAR} env var placeholders. OmO consumes these unchanged so existing Claude Code MCP configs work.
LOAD PIPELINE
loadMcpConfigs(ctx)
→ scope-filter.ts: discover .mcp.json at project + user scopes
→ loader.ts: parse JSON
→ env-expander.ts: replace ${VAR} with process.env[VAR]
→ transformer.ts: map Claude Code format → OpenCode McpLocal / McpRemote shape
→ return LoadedMcpServer[]
MCP FORMAT
// .mcp.json
{
"mcpServers": {
"my-stdio": {
"type": "stdio",
"command": "node",
"args": ["server.js"],
"env": {
"API_KEY": "${MY_API_KEY}"
}
},
"my-http": {
"type": "http", // "sse" legacy → mapped to http
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer ${MY_TOKEN}"
}
}
}
}
KEY FILES
| File | Purpose |
|---|---|
index.ts |
Barrel: loadMcpConfigs, types |
loader.ts |
loadMcpConfigs() main entry |
types.ts |
ClaudeCodeMcpServer, LoadedMcpServer, McpScope |
env-expander.ts |
expandEnvVarsInObject() — recursive ${VAR} substitution |
transformer.ts |
Claude Code format → OpenCode Mcp shape |
scope-filter.ts |
Project vs user scope precedence |
THREE-TIER MCP CONTEXT
| Tier | Loader | Scope |
|---|---|---|
| 1. Built-in | src/mcp/ createBuiltinMcps() |
Global, 3 remote HTTP MCPs + local stdio lsp |
| 2. Claude Code | This module | From .mcp.json, project + user |
| 3. Skill-embedded | src/features/skill-mcp-manager/ |
Per-session, from SKILL.md YAML |
SECURITY
- Env var allowlist:
mcp_env_allowlistconfig restricts which env vars can be expanded - No shell execution:
${VAR}is string replacement only, not shell$() - Secrets redaction:
env-cleaner.ts(in skill-mcp-manager) filters known secret patterns from logs
RELATED
- Phase 5 integration:
src/plugin-handlers/mcp-config-handler.ts - Skill-embedded MCPs (Tier 3):
src/features/skill-mcp-manager/ - Built-in MCPs (Tier 1):
src/mcp/