The server and stream side is inspection only, which is the right default for pointing a model at production messaging — you can see stream state and read messages without being able to reconfigure the cluster. When you run it over HTTP, the liveness and readiness endpoints are worth wiring up: readiness actually checks TCP connectivity to the NATS URL, so a misconfigured address fails at deploy rather than at first query.
A Go MCP server for the NATS messaging system. Most of the surface is read-only inspection of servers and streams, with object store, key-value and publish operations available on top.
- Server management: list and inspect servers, health and ping checks, round-trip time measurement
- Streams: view and inspect streams, query stream state, read messages, inspect subjects
- Object stores: create and manage buckets, put and get files, list contents, delete, watch for changes, and seal a bucket against further updates
- Key-value: create buckets, store and retrieve pairs, watch for updates, delete keys and buckets
- Publishing to subjects, including asynchronously
- Account operations: view account information and metrics, generate connection and statistics reports, create and restore backups, inspect the TLS chain
- Multiple NATS accounts handled at once, each with its own credentials
Go 1.25 or later to install, and a reachable NATS server. `NATS_URL` is always needed; authentication is one of three modes — base64-encoded credentials per account in `NATS_<ACCOUNT>_CREDS`, username and password via `NATS_USER` and `NATS_PASSWORD`, or anonymous with `NATS_NO_AUTHENTICATION`. Transport defaults to streamable-http on 0.0.0.0:8000 at `/mcp`, with stdio and sse also available. A published container image and a Helm chart cover Docker and Kubernetes.
One command — go install github.com/sinadarbouy/mcp-nats/cmd/mcp-nats@latest
