MCP providers (shipped catalog)

The tool loads MCP templates from agentic-orchestration-tool/config/mcp_providers/ (one *.yaml per integration unless using a legacy bundle file). Merge additional directories via AGENTIC_EXTRA_MCP_PROVIDERS_PATH (; on Windows, : on Unix).

MCP integration model

Design

Each file is a single mapping (not a list) with at least:

  • id — Stable identifier referenced by the planner / plan JSON.
  • description — What the server does in context (human + planner).
  • planner_hint — When the planner should attach this MCP.
  • capabilities — Tool surface / behavior at a glance (optional but recommended for shipped entries).
  • good_for — Task patterns and pairing hints (optional).
  • user_goal_keywords (optional) — Keyword hints for relevance / pruning.
  • required_env / required_env_any (optional) — Credential or opt-in gating; entries are dropped if env is missing/empty.

Connection shapes:

  • streamable_httpurl and optional headers; ${VAR} placeholders expand from the environment.
  • stdiocommand, args, optional env — local subprocess (e.g. npx, python -m …). Same expansion rules for args/env values.

Upstream protocol: Model Context Protocol.

Curated MCP directory (community)

The awesome-mcp-servers list groups thousands of third-party MCP implementations by category. It is a discovery index, not an endorsement list. Use it to find servers to run yourself, then wire them into this project via new YAML under config/mcp_providers/ or AGENTIC_EXTRA_MCP_PROVIDERS_PATH.

Mapping: this repo’s YAML ↔ awesome-mcp-servers

Related listings are alternatives or complements for the same kind of capability; they are not necessarily what this repo invokes by default.

Catalog id What we wire by default Example related entries on awesome-mcp-servers
home_assistant Official Home Assistant MCP — Streamable HTTP /api/mcp, bearer token. allenporter/mcp-server-home-assistant, tevonsb/homeassistant-mcp
search_brave Your Brave Search MCP Streamable HTTP URL (BRAVE_SEARCH_MCP_URL) + API key. brave/brave-search-mcp-server, mikechao/brave-search-mcp
search_tavily Tavily hosted MCP URL (API key; default pattern in YAML). tavily-ai/tavily-mcp, Tomatio13/mcp-server-tavily, kshern/mcp-tavily
search_exa Exa via official npm server (exa-mcp-server) and EXA_API_KEY. exa-labs/exa-mcp-server (see also hosted https://mcp.exa.ai/mcp in their docs)
fetch_url Official fetch server (python -m mcp_server_fetch); PyPI mcp-server-fetch. modelcontextprotocol/server-fetchSearch & data extraction
memory_knowledge_graph Official memory server (@modelcontextprotocol/server-memory). modelcontextprotocol/server-memoryKnowledge & Memory
filesystem_local Official filesystem server (@modelcontextprotocol/server-filesystem) + one allowed path. modelcontextprotocol/server-filesystemFile Systems

Inventory (repository)

id Transport Purpose Required environment / opt-in
home_assistant streamable_http HA entities/actions via official MCP integration. HOME_ASSISTANT_URL, HOME_ASSISTANT_TOKEN
search_brave streamable_http Web search via your Brave-compatible MCP host. BRAVE_SEARCH_API_KEY (+ BRAVE_SEARCH_MCP_URL per YAML)
search_tavily streamable_http Web search via Tavily-hosted MCP. TAVILY_API_KEY
search_exa stdio Exa web + code-context search. EXA_API_KEY
fetch_url stdio Fetch and normalize a known URL for the model. AGENTIC_MCP_FETCH_ENABLED + pip install mcp-server-fetch
memory_knowledge_graph stdio In-process knowledge graph memory tools. AGENTIC_MCP_MEMORY_MCP_ENABLED (+ npx / Node)
filesystem_local stdio Read/write under one allowed directory root. FILESYSTEM_MCP_ALLOWED_DIRECTORY (absolute path)

Kubernetes compatibility (K0.6)

When AGENTIC_EXECUTION_BACKEND=kubernetes, stdio MCPs need an explicit K8s path (worker stdio, cluster gateway, or in-pod sidecar). Policy: Kubernetes execution upgrade; code: orchestration/k8s_mcp_compat.py.

id K3 MVP (default) Notes
search_brave streamable_http
search_tavily streamable_http
home_assistant streamable_http
search_exa stdio — K4 sidecar or gateway
fetch_url ✅ (with worker stdio) Default: AGENTIC_K8S_WORKER_STDIO_MCPS=fetch_url + mcp-server-fetch in worker image
filesystem_local ✅ (with worker stdio + PVC) AGENTIC_K8S_WORKER_STDIO_MCPS=filesystem_local + FILESYSTEM_MCP_ALLOWED_DIRECTORY=/run/store/mcp-fs-workspace; seed mcp-fs-workspace/ on PVC
memory_knowledge_graph stdio — K4 sidecar

Planner catalog filtering for K8s mode is K4.3; until then, avoid stdio MCPs in dynamic plans when targeting the kubernetes backend.

Notes per id

home_assistant

search_brave

search_tavily

search_exa

  • Docs / keys: Exa MCP
  • Runs npx -y exa-mcp-server with EXA_API_KEY in the subprocess environment.

fetch_url

  • Install: pip install mcp-server-fetch into the same Python environment as main.py (included in the K8s worker image).
  • Set AGENTIC_MCP_FETCH_ENABLED=1 so the catalog entry is not hidden by credential filtering.
  • Kubernetes: default path is worker-native stdio (AGENTIC_K8S_WORKER_STDIO_MCPS=fetch_url). Cluster gateway (AGENTIC_K8S_MCP_FETCH_URL) or supergateway sidecar remain optional alternatives; see deploy/k8s/mcp-sidecars/README.md.

memory_knowledge_graph

  • Runs npx -y @modelcontextprotocol/server-memory. Set AGENTIC_MCP_MEMORY_MCP_ENABLED=1 for opt-in.

filesystem_local

  • Set FILESYSTEM_MCP_ALLOWED_DIRECTORY to an absolute path. The model’s file tools are scoped to that root only.
  • Kubernetes: use /run/store/mcp-fs-workspace on the run-store PVC (AGENTIC_K8S_MCP_FILESYSTEM_DIR). Worker image includes Node.js for npx @modelcontextprotocol/server-filesystem. Set AGENTIC_K8S_WORKER_STDIO_MCPS=filesystem_local. Smoke: config/workflows/workflow_filesystem_smoke.yaml.

Adding a new MCP

  1. Create config/mcp_providers/<id>.yaml with a unique id.
  2. Add description, capabilities, good_for, and planner_hint so planners and humans understand scope.
  3. Set required_env / required_env_any so only runnable integrations appear when credentials are present.
  4. Use streamable_http or stdio (not both in one file).
  5. Find related community servers in awesome-mcp-servers and document them here if the integration is non-obvious.