mcp-registry
Normalized registry for MCP servers, groups, client projections, and harness ownership rules.
Single source of truth for all repo-managed MCP servers and their per-harness/client projections. Edit here; regenerate
mcp/mcphub/mcp_settings.jsonand downstream harness configs.
Overview
Section titled “Overview”config/mcp-registry.json normalizes MCP server launch specs (stdio, transport, command/args, env placeholders, timeouts, tool allow/deny, platform_overrides, exclude_from_harnesses, ownership), groups them into logical bundles (research, reasoning, browser, harness, etc.), and declares client-specific projection rules (which groups/servers are included for opencode, grok, codex, chatgpt, stdio_bridge, etc.).
MCPHub uses this to produce mcp_settings.json; scripts/sync_agent_stack.py consumes it for per-client config emission (exact vs merge behavior documented in the registry and sync surfaces).
What It Controls
Section titled “What It Controls”- ~38 MCP servers (brave-search, duckduckgo-search, ddgs, chrome-devtools, context7, jupyter-mcp-server, llms-txt-explorer, fetch, repomix, docling, arxiv, wikipedia, gmail, linkedin, thinking servers, etc.; ffmpeg is registered but disabled in favor of skill/CLI routing). Default
harnessexposesllms-txt-exploreraslist_websitesonly;check_websiteis opt-in via workflow groups and excluded fromtunnel.jupyter-mcp-serveris opt-in vianotebooksand workflow groups; requires user-owned JupyterLab.scrapling(CSS-targeted scraping, anti-bot fetch) is opt-in viaresearch,media-work,live-browser,heavy, andexperimental, with boundedget/bulk_getinweb-readandgetonly inshared-read; excluded fromharness,tunnel, andbrowser. - Per-server: transport, command (often npx/uvx with repo wrappers for chrome-devtools), env (API keys via placeholders), enabled, timeouts, tools list or
*+ tools_allow_all, tool_approvals, platform_overrides, exclude_from_harnesses, ownership rules (plugin vs extension vs repo_mcp) - Named groups for targeting (
harness,tunnel,daily,coding,research,review,release, capability groups, and risk/exposure groups) - Client defaults and overrides (transport, auth, included_groups, enable_server_endpoints, etc.)
- Contributor policy defaults (tools_policy, wildcard opt-in)
Chrome DevTools has special one-owner rules (Claude Code / Copilot plugins own their instances; repo MCP is fallback for others).
Harness Surfaces
Section titled “Harness Surfaces”Projections target:
- Codex, OpenCode, Grok, ChatGPT (via MCPHub or direct)
- Claude Desktop, Cursor, Gemini, Cherry Studio, Crush, AITK, Copilot CLI shadow configs, etc.
- Repo
mcp.json(distribution manifest) and~/.config/...home merges/generates.
See config/sync-manifest.json for which outputs are generated vs merged.
Client snippets
Section titled “Client snippets”Example MCP client blocks for commonly referenced servers:
Standard JSON clients (`mcpServers`)
{
"mcpServers": {
"chrome-devtools": {
"command": "bash",
"args": ["${REPO_ROOT}/scripts/mcphub/chrome-devtools-browser-url.sh"]
}
}
}Codex (`~/.codex/config.toml`)
[mcp_servers.chrome-devtools]
command = "bash"
args = ["${REPO_ROOT}/scripts/mcphub/chrome-devtools-browser-url.sh"]GitHub Copilot CLI (`~/.copilot/mcp-config.json`)
{
"mcpServers": {
"chrome-devtools": {
"type": "stdio",
"command": "bash",
"args": ["${REPO_ROOT}/scripts/mcphub/chrome-devtools-browser-url.sh"],
"tools": ["*"]
}
}
}OpenCode (`~/.config/opencode/opencode.json`)
{
"mcp": {
"chrome-devtools": {
"type": "local",
"command": ["bash", "${REPO_ROOT}/scripts/mcphub/chrome-devtools-browser-url.sh"],
"enabled": true
}
}
}Crush (`~/.config/crush/crush.json`)
{
"mcp": {
"chrome-devtools": {
"type": "stdio",
"command": "bash",
"args": ["${REPO_ROOT}/scripts/mcphub/chrome-devtools-browser-url.sh"]
}
}
}Standard JSON clients (`mcpServers`)
{
"mcpServers": {
"brave-search": {
"command": "bash",
"args": ["<repo>/scripts/mcphub/chrome-devtools-browser-url.sh"]
}
}
}Codex (`~/.codex/config.toml`)
[mcp_servers.brave-search]
command = "bash"
args = ["<repo>/scripts/mcphub/chrome-devtools-browser-url.sh"]GitHub Copilot CLI (`~/.copilot/mcp-config.json`)
{
"mcpServers": {
"brave-search": {
"type": "stdio",
"command": "bash",
"args": ["<repo>/scripts/mcphub/chrome-devtools-browser-url.sh"],
"tools": ["*"]
}
}
}OpenCode (`~/.config/opencode/opencode.json`)
{
"mcp": {
"brave-search": {
"type": "local",
"command": ["bash", "<repo>/scripts/mcphub/chrome-devtools-browser-url.sh"],
"enabled": true
}
}
}Crush (`~/.config/crush/crush.json`)
{
"mcp": {
"brave-search": {
"type": "stdio",
"command": "bash",
"args": ["<repo>/scripts/mcphub/chrome-devtools-browser-url.sh"]
}
}
}Key Fields (server entry)
Section titled “Key Fields (server entry)”| Field | Purpose |
|---|---|
| transport / command / args | Launch shape (stdio + npx/uv/node/bash wrapper) |
| env | Env var map; values are either literals or { "env_var": "NAME" } (secrets never committed) |
| enabled | Boolean gate |
| startup_timeout_sec, timeout_ms | Reliability |
| tools / tools_allow_all | Tool surface control |
| exclude_from_harnesses | Per-harness opt-outs |
| ownership | { "plugin": [...], "extension": [...], "repo_mcp": [...] } for chrome-devtools etc. |
| platform_overrides | Client-specific arg/env tweaks |
Groups and clients sections drive bundling and projection.
Secrets & Placeholders
Section titled “Secrets & Placeholders”All API keys and tokens use env-var indirection or ${PLACEHOLDER} in remote URLs. Real values live only in maintainer .env.mcphub (gitignored). Registry and public docs never contain secret values.
AGENTS.md Sections
Section titled “AGENTS.md Sections”- §2.6 MCPHub Local Control Plane: “Add or edit servers once in
config/mcp-registry.json, regeneratemcp/mcphub/mcp_settings.json…” - §2.4 Chrome DevTools MCP: details the attached-browser wrapper and one-owner rules encoded in this registry.
- §2.7 Bucket B: MCP registry stays canonical under
config/.
Related
Section titled “Related”- MCPHub:
mcp/mcphub/,just mcphub-up,mcp/mcphub/mcp_settings.json(generated) - Sync:
scripts/sync_agent_stack.py - Root manifest:
mcp.json - Schema:
config/schemas/mcp-registry.schema.json(implied) - Harness config hub:
/harness-config/
Full registry (config/mcp-registry.json)
{ "version": 1, "instruction_source": "${REPO_ROOT}/instructions/global.md", "servers": { "brave-search": { "transport": "stdio", "command": "npx", "args": [ "-y", "@brave/brave-search-mcp-server" ], "env": { "BRAVE_API_KEY": { "env_var": "BRAVE_API_KEY" } }, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "cascade-thinking": { "transport": "stdio", "command": "npx", "args": [ "-y", "cascade-thinking-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "chrome-devtools": { "transport": "stdio", "command": "bash", "args": [ "${REPO_ROOT}/scripts/mcphub/chrome-devtools-browser-url.sh" ], "env": { "CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS": { "value": "1" }, "CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS": { "value": "1" } }, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "exclude_from_harnesses": [ "claude-code", "gemini-cli", "github-copilot-web", "vscode" ], "ownership": { "plugin": [ "claude-code", "github-copilot-web", "vscode" ], "extension": [ "gemini-cli" ], "repo_mcp": [ "claude-desktop", "chatgpt", "codex", "github-copilot-cli", "opencode", "cursor", "grok", "antigravity", "perplexity-desktop", "cherry-studio" ] }, "tools_allow_all": true }, "context7": { "transport": "streamable-http", "auth_policy": "oauth", "url": "https://mcp.context7.com/mcp/oauth", "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "deepwiki": { "transport": "streamable-http", "auth_policy": "public-http", "url": "https://mcp.deepwiki.com/mcp", "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "docling": { "transport": "stdio", "command": "${REPO_ROOT}/scripts/mcphub/docling-stdio.sh", "args": [], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "fetch": { "transport": "stdio", "command": "npx", "args": [ "-y", "mcp-fetch-server" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "fetcher": { "transport": "stdio", "command": "npx", "args": [ "-y", "fetcher-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "ossinsight": { "transport": "stdio", "command": "npx", "args": [ "-y", "ossinsight-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "package-version-check-mcp": { "transport": "stdio", "command": "bash", "args": [ "${REPO_ROOT}/scripts/mcphub/package-version-check-mcp.sh" ], "env": { "GITHUB_PAT": { "env_var": "GITHUB_PAT" } }, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "get_latest_package_versions", "get_github_action_versions_and_args", "get_supported_tools", "get_latest_tool_versions" ], "tool_approvals": {}, "platform_overrides": {} }, "penpot": { "transport": "streamable-http", "auth_policy": "account-token", "url": "https://design.penpot.app/mcp/stream?userToken=${PENPOT_MCP_USER_TOKEN}", "env": { "PENPOT_MCP_USER_TOKEN": { "env_var": "PENPOT_MCP_USER_TOKEN" } }, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "repomix": { "transport": "stdio", "command": "npx", "args": [ "-y", "repomix", "--mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "sequential-thinking": { "transport": "stdio", "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sequential-thinking" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "structured-thinking": { "transport": "stdio", "command": "npx", "args": [ "-y", "structured-thinking" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "supathings": { "transport": "stdio", "command": "npx", "args": [ "-y", "supathings-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "tavily": { "transport": "streamable-http", "auth_policy": "oauth", "url": "https://mcp.tavily.com/mcp/", "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "trafilatura": { "transport": "stdio", "command": "uv", "args": [ "--directory", "${REPO_ROOT}/mcp/servers/trafilatura_mcp", "run", "python3", "trafilatura_mcp.py" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "arxiv": { "transport": "stdio", "command": "bash", "args": [ "-lc", "uvx --offline arxiv-mcp-server || uvx arxiv-mcp-server" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "atom-of-thoughts": { "transport": "stdio", "command": "node", "args": [ "${REPO_ROOT}/mcp/servers/MCP_Atom_of_Thoughts/build/index.js" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "crash": { "transport": "stdio", "command": "npx", "args": [ "-y", "crash-mcp" ], "env": { "CRASH_STRICT_MODE": { "env_var": "CRASH_STRICT_MODE" }, "MAX_HISTORY_SIZE": { "env_var": "MAX_HISTORY_SIZE" } }, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "creative-thinking": { "transport": "stdio", "command": "${REPO_ROOT}/scripts/mcp_tools/run_mcp_thinking.sh", "args": [], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "deep-lucid-3d": { "transport": "stdio", "command": "npx", "args": [ "-y", "github:mushroomfleet/deeplucid3d-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "duckduckgo-search": { "transport": "stdio", "command": "uvx", "args": [ "duckduckgo-mcp-server" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "ddgs": { "transport": "stdio", "command": "uvx", "args": [ "ddgs-mcp-server==0.5.1" ], "auth_policy": "none", "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "exa": { "transport": "streamable-http", "auth_policy": "oauth", "url": "https://mcp.exa.ai/mcp", "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "g-search": { "transport": "stdio", "command": "npx", "args": [ "-y", "g-search-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "open-websearch": { "transport": "stdio", "command": "bash", "args": [ "${REPO_ROOT}/scripts/mcphub/open-websearch-stdio.sh" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "scrapling": { "transport": "stdio", "command": "bash", "args": [ "${REPO_ROOT}/scripts/mcphub/scrapling-stdio.sh" ], "env": {}, "enabled": true, "startup_timeout_sec": 120, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "gmail": { "transport": "stdio", "command": "npx", "args": [ "-y", "@gongrzhe/server-gmail-autoauth-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "linkedin": { "transport": "stdio", "command": "uvx", "args": [ "linkedin-scraper-mcp", "--no-headless" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "jupyter-mcp-server": { "transport": "stdio", "command": "bash", "args": [ "${REPO_ROOT}/scripts/mcphub/jupyter-mcp-server-stdio.sh" ], "env": { "JUPYTER_URL": { "env_var": "JUPYTER_URL" }, "JUPYTER_TOKEN": { "env_var": "JUPYTER_TOKEN" }, "ALLOW_IMG_OUTPUT": { "env_var": "ALLOW_IMG_OUTPUT" }, "JUPYTER_DOCUMENT_ID": { "env_var": "JUPYTER_DOCUMENT_ID" } }, "enabled": true, "startup_timeout_sec": 120, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "llms-txt-explorer": { "transport": "stdio", "command": "bash", "args": [ "${REPO_ROOT}/scripts/mcphub/llms-txt-explorer-stdio.sh" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "lotus-wisdom-mcp": { "transport": "stdio", "command": "node", "args": [ "${REPO_ROOT}/mcp/servers/lotus-wisdom-mcp/dist/bundle.js" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "shannon-thinking": { "transport": "stdio", "command": "npx", "args": [ "-y", "server-shannon-thinking@latest" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "think-strategies": { "transport": "stdio", "command": "npx", "args": [ "-y", "github:aaronsb/think-strategies" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "wayback": { "transport": "stdio", "command": "npx", "args": [ "-y", "--prefer-offline", "mcp-wayback-machine" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "wikipedia": { "transport": "stdio", "command": "npx", "args": [ "-y", "--prefer-offline", "wikipedia-mcp" ], "env": {}, "enabled": true, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "*" ], "tool_approvals": {}, "platform_overrides": {}, "tools_allow_all": true }, "agent-catalog": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/agent-catalog", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "list_agents", "get_agent", "agent_skill_edges" ], "tool_approvals": {}, "platform_overrides": {} }, "docs-index": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/docs-index", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "list_reports", "get_report", "list_content_pages", "read_content_page" ], "tool_approvals": {}, "platform_overrides": {} }, "eval-results": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/eval-results", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "eval_list", "eval_coverage", "eval_adequacy", "eval_validate" ], "tool_approvals": {}, "platform_overrides": {} }, "repo-readonly": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/repo-readonly", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "list_allowed_prefixes", "path_allowed", "read_file", "list_directory" ], "tool_approvals": {}, "platform_overrides": {} }, "skill-catalog": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/skill-catalog", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "list_skills", "get_skill", "skills_catalog_index", "skill_catalog_summary" ], "tool_approvals": {}, "platform_overrides": {} }, "source-url-health": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/source-url-health", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "check_url_health", "check_urls_health" ], "tool_approvals": {}, "platform_overrides": {} }, "template-smoke": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/template-smoke", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "mcp_layout_validate", "list_mcp_servers", "scaffold_dry_run", "scaffold_name_check" ], "tool_approvals": {}, "platform_overrides": {} }, "ci-artifacts": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/ci-artifacts", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "list_ci_artifacts", "get_ci_artifact", "ci_artifact_registry", "ci_artifact_summary" ], "tool_approvals": {}, "platform_overrides": {} }, "release-provenance": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/release-provenance", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "list_provenance_manifests", "get_provenance_manifest", "list_release_workflows", "get_release_workflow_summary" ], "tool_approvals": {}, "platform_overrides": {} }, "workflow-status": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/workflow-status", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "list_workflows", "get_workflow_summary", "read_workflow", "workflows_overview" ], "tool_approvals": {}, "platform_overrides": {} }, "docs-graph": { "transport": "stdio", "command": "uv", "args": [ "run", "--directory", "${REPO_ROOT}/mcp/docs-graph", "python", "server.py" ], "env": { "WAGENTS_REPO_ROOT": { "value": "${REPO_ROOT}" } }, "enabled": false, "startup_timeout_sec": 90, "timeout_ms": 600000, "tools": [ "docs_graph_snapshot", "docs_graph_latest", "docs_graph_history" ], "tool_approvals": {}, "platform_overrides": {} } }, "mcphub": { "enabled": true, "base_url": "http://127.0.0.1:46683", "public_url": "https://mcp.w4w.dev/mcp", "bearer_token_env_var": "MCPHUB_BEARER_TOKEN", "startup_timeout_sec": 90, "tool_timeout_sec": 90, "projection_adapters": { "grok": "http", "opencode": "http" }, "settings_path": "mcp/mcphub/mcp_settings.json", "openapi_export_path": "mcp/mcphub/openapi.json", "smart_routing": { "enabled_env_var": "SMART_ROUTING_ENABLED", "default_enabled": false, "base_path": "/mcp/$smart", "database_url_env_var": "DB_URL", "embedding_provider_env_var": "SMART_ROUTING_EMBEDDING_PROVIDER", "embedding_model_env_var": "SMART_ROUTING_EMBEDDING_MODEL" }, "groups": { "harness": { "description": "Default local harness bundle: highest-value tools with bounded schema/context cost.", "enabled": true, "servers": [ "brave-search", "duckduckgo-search", "ddgs", "context7", "deepwiki", { "name": "llms-txt-explorer", "tools": [ "list_websites" ] }, "fetch", { "name": "fetcher", "tools": [ "fetch_urls" ] }, "package-version-check-mcp", "chrome-devtools", "penpot" ] }, "tunnel": { "description": "Minimal remote ChatGPT tunnel surface without personal, browser, or heavy tools.", "enabled": true, "servers": [ "brave-search", "context7", "deepwiki", "fetch", "package-version-check-mcp" ] }, "daily": { "description": "Broader local workhorse bundle for routine agentic development.", "enabled": true, "servers": [ "brave-search", "duckduckgo-search", "ddgs", "context7", "deepwiki", "llms-txt-explorer", "fetch", { "name": "fetcher", "tools": [ "fetch_urls" ] }, "package-version-check-mcp", "trafilatura", "repomix", "chrome-devtools" ] }, "coding": { "description": "Coding, dependency lookup, repo inspection, and browser validation workflow.", "enabled": true, "servers": [ "context7", "deepwiki", "llms-txt-explorer", "fetch", "duckduckgo-search", "ddgs", "repomix", "package-version-check-mcp", "ossinsight", "chrome-devtools", "jupyter-mcp-server" ] }, "research": { "description": "Search, retrieval, public references, and source inspection workflow.", "enabled": true, "servers": [ "brave-search", "duckduckgo-search", "ddgs", "tavily", "exa", "open-websearch", "llms-txt-explorer", "fetch", "fetcher", "trafilatura", "arxiv", "wikipedia", "wayback", "deepwiki", "package-version-check-mcp", "scrapling", { "name": "jupyter-mcp-server", "tools": [ "list_files", "list_kernels", "list_notebooks", "read_notebook", "read_cell" ] } ] }, "review": { "description": "Code, docs, eval, source-health, workflow-status, and browser-backed review workflow.", "enabled": true, "servers": [ "context7", "deepwiki", "llms-txt-explorer", "fetch", "duckduckgo-search", "ddgs", "package-version-check-mcp", "repomix", "chrome-devtools", { "name": "jupyter-mcp-server", "tools": [ "list_files", "list_kernels", "list_notebooks", "read_notebook", "read_cell" ] } ] }, "release": { "description": "Release, package, CI artifact, provenance, and eval-readiness workflow.", "enabled": true, "servers": [ "package-version-check-mcp", "repomix", "fetch", "trafilatura" ] }, "personal-work": { "description": "Explicit personal-account and design/productivity workflow.", "enabled": true, "servers": [ "gmail", "linkedin", "supathings", "penpot" ] }, "media-work": { "description": "Document, 3D, and web-ingestion workflow; prefer an agent skill plus ffmpeg CLI for deterministic media transforms.", "enabled": true, "servers": [ "docling", "deep-lucid-3d", "fetch", "trafilatura", "scrapling" ] }, "web-search": { "description": "Web search providers.", "enabled": true, "servers": [ "brave-search", "duckduckgo-search", "ddgs", "tavily", "exa", "g-search", "open-websearch" ] }, "web-read": { "description": "URL and page ingestion without search APIs.", "enabled": true, "servers": [ "fetch", "fetcher", "llms-txt-explorer", "trafilatura", "wayback", { "name": "open-websearch", "tools": [ "fetchWebContent", "fetchGithubReadme" ] }, { "name": "scrapling", "tools": [ "get", "bulk_get" ] } ] }, "docs": { "description": "Library, framework, repo docs, and docs graph lookup.", "enabled": true, "servers": [ "context7", "deepwiki", "llms-txt-explorer" ] }, "repo": { "description": "Repository and package intelligence.", "enabled": true, "servers": [ "repomix", "package-version-check-mcp", "ossinsight" ] }, "browser": { "description": "Live browser automation.", "enabled": true, "servers": [ "chrome-devtools" ] }, "reasoning": { "description": "Curated structured-thinking servers (three proven tools only).", "enabled": true, "servers": [ "sequential-thinking", "cascade-thinking", "structured-thinking" ] }, "reasoning-lab": { "description": "Experimental or less-proven reasoning tools.", "enabled": true, "servers": [ "atom-of-thoughts", "crash", "creative-thinking", "lotus-wisdom-mcp", "shannon-thinking", "think-strategies" ] }, "media": { "description": "Document and 3D processing.", "enabled": true, "servers": [ "docling", "deep-lucid-3d" ] }, "notebooks": { "description": "Jupyter notebook management and kernel execution against a user-owned JupyterLab server.", "enabled": true, "servers": [ "jupyter-mcp-server" ] }, "design": { "description": "Design tooling.", "enabled": true, "servers": [ "penpot" ] }, "productivity": { "description": "Productivity tooling.", "enabled": true, "servers": [ "supathings" ] }, "accounts": { "description": "Account-backed connectors.", "enabled": true, "servers": [ "gmail", "linkedin" ] }, "references": { "description": "Academic papers, encyclopedia, and archive lookup.", "enabled": true, "servers": [ "arxiv", "wikipedia", "wayback" ] }, "shared-read": { "description": "Broad read-oriented pool for explicit opt-in without personal or browser tools.", "enabled": true, "servers": [ "brave-search", "context7", "deepwiki", "llms-txt-explorer", "fetch", "package-version-check-mcp", "duckduckgo-search", "ddgs", "trafilatura", "arxiv", "wikipedia", "wayback", { "name": "open-websearch", "tools": [ "search", "fetchWebContent" ] }, { "name": "scrapling", "tools": [ "get" ] } ] }, "credentialed": { "description": "Tools that rely on provider API keys, OAuth, or user-owned account tokens.", "enabled": true, "servers": [ "brave-search", "context7", "tavily", "exa", "penpot", "jupyter-mcp-server" ] }, "account-backed": { "description": "Tools backed by user accounts or personal app state.", "enabled": true, "servers": [ "gmail", "linkedin", "supathings", "penpot" ] }, "live-browser": { "description": "Tools that automate or depend on live browser/session state.", "enabled": true, "servers": [ "chrome-devtools", "linkedin", "scrapling" ] }, "heavy": { "description": "Large-output or heavier processing tools.", "enabled": true, "servers": [ "repomix", "docling", "deep-lucid-3d", "jupyter-mcp-server", "scrapling" ] }, "experimental": { "description": "Bleeding-edge, less-proven, or high-variance tools.", "enabled": true, "servers": [ "exa", "g-search", "open-websearch", "scrapling", "jupyter-mcp-server", "atom-of-thoughts", "crash", "creative-thinking", "deep-lucid-3d", "lotus-wisdom-mcp", "shannon-thinking", "think-strategies" ] } }, "clients": { "default": { "included_endpoint_kinds": [ "group", "server" ], "included_groups": [ "harness" ], "enabled_endpoint_kinds": [ "group" ], "enabled_groups": [ "harness" ], "enable_server_endpoints": true }, "codex": { "transport": "streamable-http", "auth": "bearer_token_env_var", "included_endpoint_kinds": [ "group", "server" ], "included_groups": [ "harness" ], "enabled_endpoint_kinds": [ "group" ], "enabled_groups": [ "harness" ], "enable_server_endpoints": true }, "grok": { "transport": "http", "auth": "authorization-header-env-template", "included_endpoint_kinds": [ "group", "server" ], "included_groups": [ "harness" ], "enabled_endpoint_kinds": [ "group" ], "enabled_groups": [ "harness" ], "enable_server_endpoints": true }, "opencode": { "transport": "remote-http", "auth": "authorization-header-env-template", "included_endpoint_kinds": [ "group", "server" ], "included_groups": [ "harness" ], "enabled_endpoint_kinds": [ "group" ], "enabled_groups": [ "harness" ], "enable_server_endpoints": true, "server_endpoint_name_style": "base" }, "chatgpt": { "transport": "remote-http", "auth": "bearer_token_env_var", "url_source": "public", "included_endpoint_kinds": [ "group" ], "included_groups": [ "tunnel" ], "enabled_endpoint_kinds": [ "group" ], "enabled_groups": [ "tunnel" ], "enable_server_endpoints": false }, "stdio_bridge": { "transport": "stdio", "command": "scripts/mcphub/remote-stdio.sh", "clients": [ "claude-desktop", "cursor", "gemini-cli", "antigravity", "github-copilot-cli", "crush", "chatgpt" ] } } }, "contributor_defaults": { "tools_policy": "deny-by-default", "wildcard_requires_explicit_opt_in": true, "new_server_tools_default": [] }}