fix: correct architecture diagram in README
Some checks failed
CI / lint (push) Has been cancelled
CI / typecheck (push) Has been cancelled
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
CI / package (push) Has been cancelled

MCP server containers are managed by and proxied through mcpd,
not directly accessible. Updated diagram to show containers
nested inside mcpd boundary with explanation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Michal
2026-02-27 17:12:29 +00:00
parent 69867bd47a
commit 0427d7dc1a

View File

@@ -282,36 +282,38 @@ mcpctl console --inspect
## Architecture ## Architecture
``` ```
┌─────────────────────────────────────────┐ ┌──────────────┐ ┌─────────────────────────────────────────┐
mcpd (daemon) │ │ Claude Code STDIOmcplocal (proxy) │
│ │ │◄─────────►│ │
│ REST API (/api/v1/*) │
│ PostgreSQL (Prisma ORM) │
│ Docker/Podman container management │
│ Health probes (STDIO, SSE, HTTP) │
│ RBAC enforcement │
└──────────────┬──────────────────────────┘
│ HTTP
┌──────────────┐ STDIO ┌──────────────┴──────────────────────────┐
│ Claude Code │◄─────────►│ mcplocal (proxy) │
│ │ │ │
│ (or any MCP │ │ Namespace-merging MCP proxy │ │ (or any MCP │ │ Namespace-merging MCP proxy │
│ client) │ │ Gated sessions + prompt delivery │ │ client) │ │ Gated sessions + prompt delivery │
│ │ │ Per-project endpoints │ │ │ │ Per-project endpoints │
└──────────────┘ │ Traffic inspection │ └──────────────┘ │ Traffic inspection │
└──────────────┬──────────────────────────┘ └──────────────┬──────────────────────────┘
STDIO/SSE/HTTP HTTP (REST + MCP proxy)
┌──────────────┴──────────────────────────┐ ┌──────────────┴──────────────────────────┐
MCP Server Containers mcpd (daemon)
│ │ │ │
grafana/ home-assistant/ docmost/ REST API (/api/v1/*)
(tools are namespaced by server name) MCP proxy (routes tool calls)
│ PostgreSQL (Prisma ORM) │
│ Docker/Podman container management │
│ Health probes (STDIO, SSE, HTTP) │
│ RBAC enforcement │
│ │
│ ┌───────────────────────────────────┐ │
│ │ MCP Server Containers │ │
│ │ │ │
│ │ grafana/ home-assistant/ ... │ │
│ │ (managed + proxied by mcpd) │ │
│ └───────────────────────────────────┘ │
└─────────────────────────────────────────┘ └─────────────────────────────────────────┘
``` ```
**Tool namespacing**: When Claude connects to a project with servers `grafana` and `slack`, it sees tools like `grafana/search_dashboards` and `slack/send_message`. The proxy routes each call to the correct upstream server. Clients never connect to MCP server containers directly — all tool calls go through mcplocal → mcpd, which proxies them to the right container via STDIO/SSE/HTTP. This keeps containers unexposed and lets mcpd enforce RBAC and health checks.
**Tool namespacing**: When Claude connects to a project with servers `grafana` and `slack`, it sees tools like `grafana/search_dashboards` and `slack/send_message`. mcplocal routes each call through mcpd to the correct upstream server.
## Project Structure ## Project Structure