MCP, Skills & Rule Config Paths Across 15 AI Coding Agents
AI coding clients scatter MCP endpoints, providers, Skills, and instruction files across incompatible JSON, TOML, JSON5, and YAML schemas. This reference maps every verified file path and write boundary across 6 core relay hosts and 9 extended config hosts supported by Senrelay (GitHub repository qingsongcui/ContextCore).
No Universal Schema or KeyClaude Code and Cursor expect JSON mcpServers, Codex uses TOML [mcp_servers.*], OpenCode nests under mcp inside opencode.json, and OpenClaw rejects native MCP writes altogether—making raw symlinks brittle.
Strict 6-Core vs. 9-Extended SplitOnly the 6 core hosts index transcripts and support /contextcore session relay. The 9 extended hosts support previewed config translation and rollback snapshots only (see the 5-way comparison).
Apple Silicon Loopback & KeychainBuilt strictly for Apple Silicon (arm64) macOS 14.0+—not Windows or Linux. API credentials remain in macOS Keychain and are stripped automatically from exports.
6 Core Relay Hosts: Config Paths, Formats & Caveats
These six clients connect to both Senrelay's configuration manager and local conversation capture pipeline. Clicking One-Click Connect writes the contextcore entry pointing to http://127.0.0.1:8420/mcp/ plus companion hooks and the /contextcore skill.
| Host (Surface) | MCP Path & Format | Model / Provider / Hooks | Skill & Prompt Paths | Verified Caveats |
|---|---|---|---|---|
| Claude Code CLI |
~/.claude.jsonJSON · key mcpServers |
~/.claude/settings.jsonHooks & provider env |
~/.claude/skills/contextcore/SKILL.md~/.claude/CLAUDE.md |
Supports user and project rules together with native lifecycle hooks. |
| Codex Desktop / CLI |
~/.codex/config.tomlTOML · [mcp_servers.contextcore] |
~/.codex/config.toml~/.codex/hooks.json |
~/.codex/skills/contextcore/SKILL.md~/.codex/AGENTS.md |
Desktop and CLI share config files; repo AGENTS.override.md or custom CODEX_HOME can supersede globals. |
| Cursor IDE / CLI |
~/.cursor/mcp.jsonJSON · key mcpServers |
~/.cursor/hooks.json |
~/.cursor/skills/contextcore/SKILL.md |
Cursor UI User Rules sit outside documented filesystem configs; .mdc rules require workspace project scope. |
| Antigravity Desktop |
~/.gemini/config/mcp_config.jsonJSON · key mcpServers |
~/.gemini/config/hooks.json |
~/.gemini/config/skills/contextcore/SKILL.md~/.gemini/config/rules |
Models are selected inside the Desktop menu; Senrelay never rewrites private Desktop auth caches. |
| OMP (Oh My Pi) CLI |
~/.omp/agent/mcp.jsonJSON · key mcpServers |
~/.omp/agent/models.yml~/.omp/agent/config.yml~/.omp/agent/hooks/pre/contextcore.ts |
~/.omp/agent/commands/contextcore.md~/.omp/agent/AGENTS.md |
Respects existing .yaml siblings; refuses mixed writes if un-migrated settings.json / models.json exist; task subagents skip root AGENTS.md. |
| OpenCode CLI |
~/.config/opencode/opencode.jsonJSON · key mcp (not mcpServers) |
~/.config/opencode/opencode.json~/.config/opencode/plugins/contextcore.ts |
~/.config/opencode/skills~/.config/opencode/commands/contextcore.md |
Single JSON houses providers and mcp; handled natively instead of using mcpServers. |
9 Extended Hosts: Snapshot-Protected Config Sync Only
These nine clients are strictly config-management targets in Senrelay: you get previewed writes, native format translation, and rollback snapshots, but no transcript capture and no /contextcore relay. Unsupported write requests fail closed rather than silently mangling host files:
| Extended Host | MCP Path & Format | Model / Provider File | Skills / Prompt Paths | Explicit Constraints |
|---|---|---|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.jsonJSON · mcpServers |
None (managed in Desktop app) | No managed skill/prompt directory | Syncs MCP endpoints only; no prompts or session relay. |
| Gemini CLI | ~/.gemini/settings.jsonJSON · mcpServers |
No provider rewrite | No managed skill/prompt directory | Local MCP entries and snapshots only. |
| Grok Build CLI | ~/.grok/config.tomlTOML · mcp_servers |
Provider blocks read natively | ~/.grok/skills~/.grok/AGENTS.md |
Global default model override is unsupported. |
| Kimi Code CLI | ~/.kimi-code/mcp.jsonJSON · mcpServers |
~/.kimi-code/config.tomlTOML |
~/.kimi-code/skills~/.kimi-code/AGENTS.md |
Split JSON MCP + TOML provider files; config sync only. |
| MiniMax Code | ~/.minimax/mcp.jsonJSON · mcpServers |
~/.minimax/config.yamlYAML |
~/.minimax/skills~/.minimax/AGENTS.md |
JSON MCP + YAML provider files; config sync only. |
| Pi CLI | ~/.pi/agent/mcp.jsonJSON · mcpServers |
~/.pi/agent/models.json~/.pi/agent/settings.json |
~/.pi/agent/skills~/.pi/agent/AGENTS.md |
Strictly separate from OMP; refuses overwriting existing hand-authored JSON5 configs. |
| Hermes Agent | ~/.hermes/config.yamlYAML · mcp_servers |
~/.hermes/config.yamlcustom_providers |
~/.hermes/skills~/.hermes/SOUL.md |
Global instructions target SOUL.md instead of AGENTS.md. |
| OpenClaw | No native MCP sync | ~/.openclaw/openclaw.jsonJSON5 (comments preserved) · models.providers |
~/.openclaw/skills~/.openclaw/AGENTS.md |
Rejects MCP sync attempts; preserves JSON5 comments during model/provider updates. |
| agy (Antigravity CLI) | ~/.gemini/config/mcp_config.jsonJSON · mcpServers |
Process env (GEMINI_API_KEY, GOOGLE_GEMINI_BASE_URL) & private .gemini/antigravity-cli/settings.json |
~/.gemini/config/skills~/.gemini/config/AGENTS.md |
Separate target from Antigravity Desktop; credentials stay in env rather than plaintext files. |
Safe Native Translation vs. Brittle Symlinks
Snapshots & External-Edit Diff Checks
Dotfile symlinks collapse across JSON, TOML, YAML, and JSON5—especially when agent clients overwrite runtime fields on startup. Senrelay stores timestamped snapshots before every write and stops to show a diff check whenever manual edits occurred outside the workbench.
Scoped Consent, Keychain Isolation & Budget Guard
Reading transcripts, writing host configs, and downloading optional local models require separate confirmations; startup never overwrites pre-installed host Skills. Secrets stay in macOS Keychain, and protected instruction blocks fail closed when over budget rather than truncating.
Project & Install Disambiguation
When searching online, note that Senrelay (github.com/qingsongcui/ContextCore) is unrelated to third-party projects named context-core.dev or the PyPI package contextcore. Install Senrelay (v1.0.0-beta.2, $0 MIT License) on Apple Silicon macOS via Homebrew Cask and clear quarantine once:
# 1. Install on Apple Silicon macOS 14.0+ via Homebrew Cask
brew install --cask qingsongcui/tap/senrelay
# 2. Clear ad-hoc Beta quarantine after moving to /Applications
xattr -cr /Applications/Senrelay.app
# 3. Confirm local loopback service health (desktop 8420 / source dev 18420)
curl -s http://127.0.0.1:8420/health
If your team works on Windows or Linux, skip Senrelay and start with Git-committed AGENTS.md and CLAUDE.md ($0)—or read our 5-way context comparison and cross-agent relay guide.
Scope Limits & Author Attribution (Checked 2026-11-15)
Pricing & Platform Boundaries
$0 under the MIT License with zero signup. Built strictly for macOS 14.0+ on Apple Silicon (arm64)—not suitable for Windows, Linux, Intel Macs, multi-machine cloud sync, or transcript relay on the 9 config-only extended hosts.
Maintainer & Verification
Built and maintained by Qingsong Cui (George O'Nair) (GitHub @qingsongcui · X @George_ONair). Every file path above is checked against host_formats_v2.py, constants.py, and the Setup Guide.
Host Configuration FAQ
Why are the 9 extended hosts excluded from /contextcore session relay?
Each agent stores transcripts differently. Only Claude Code, Codex, Cursor, Antigravity, OMP, and OpenCode have verified session capture, worktree disambiguation, and paged transcript reading; the 9 extended targets offer previewed config sync and snapshots only.
What are the biggest schema gotchas in OpenCode and OpenClaw?
OpenCode stores servers inside top-level mcp inside ~/.config/opencode/opencode.json instead of mcpServers. OpenClaw uses comment-preserving JSON5 (~/.openclaw/openclaw.json) for models.providers and explicitly rejects native MCP sync requests.
Can syncing overwrite manual edits I made in ~/.claude.json or ~/.codex/config.toml?
Before every write, Senrelay captures a rollback snapshot. If external changes occurred since the last sync, it presents a diff confirmation modal rather than blindly overwriting your edits.
How do I verify my MCP config points to Senrelay instead of an unrelated package?
Each supported host registers the MCP key contextcore pointing to http://127.0.0.1:8420/mcp/. Never use senrelay-mcp and never run pip install contextcore from PyPI (unrelated project).