mq-bridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
mq-bridge: a universal, protocol-agnostic message and data bridge. Move data between any of the supported endpoints (postgres, kafka, nats, mqtt, mongodb, redis, ibm-mq, http, files, and more) ad hoc. publish and start_route take the endpoint(s) inline as JSON keyed by type, e.g. {"kafka": {"url": "...", "topic": "..."}}. Use publish to send messages to the endpoint given in publisher; start_route to move messages from a source (input) to a sink (output), optionally setting exit_on_empty to drain-then-exit; and list_routes / route_status / stop_route to manage running routes. Prefer wait_route over polling route_status for a drain-then-exit job: it is one call however long the job runs. bridge_status shows what every mq-bridge process on this machine is running, not only this server. Either endpoint may carry a middlewares array (retry, dlq, deduplication, limiter, transform, compression, encryption, ...) to add delivery behaviour without changing the route. describe lists each endpoint type and middleware with its typed params. Apache Pulsar is available too, but is not one of the endpoint variants in the tool schema: address it as {"custom": {"name": "pulsar", "config": {"url": "pulsar://host:6650", "topic": "...", "subscription": "...", "initial_position": "earliest"}}}. A source needs initial_position: earliest to read a topic's existing backlog; the default (latest) only sees messages published after the subscription is created.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bridge_statusA | Report every mq-bridge process this user is running on this machine — CLI jobs ( |
| describeA | Describe the endpoints and middlewares this build supports, the same data as |
| generate_cli_commandA | Generate a copyable, headless |
| list_routesA | List the routes started by this server, with their live connection health, total messages moved, current message rate, and achieved average rate. For one route's full status use |
| publishA | Publish one message or a batch of messages to any endpoint. The endpoint is supplied inline in |
| route_messagesA | Return the most recent messages captured on a route, newest last. Only routes started with |
| route_statusA | Report the live status of one route (by |
| server_infoA | Report this MCP server's build identity: crate |
| start_routeA | Create and run a route that moves messages from its |
| stop_routeA | Stop a route started by this server, by |
| wait_routeA | Block until a route finishes, then report how it ended. Use this instead of polling |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Most tools are clearly separated and the descriptions actively cross-reference each other (bridge_status vs list_routes vs route_status, wait_route vs polling, generate_cli_command vs start_route). The one real overlap is that route_status called without a `name` returns the same all-routes summary as list_routes, and the cluster of status/health tools (server_info, bridge_status, list_routes, route_status, wait_route) takes careful reading to sort out.
A predictable scheme runs through almost everything: verb_noun for actions (start_route, stop_route, list_routes, wait_route, generate_cli_command) and noun_status/noun_messages for read-only reporters. The only deviations are the bare verbs `describe` and `publish`, plus `server_info`, which don't fit either pattern cleanly but are still readable.
Eleven tools is squarely in the well-scoped range, and each maps to a distinct step in the job lifecycle: discover schemas, generate a command, start/wait/stop a route, read status and captured messages, plus machine-level and build identity. Nothing looks like filler.
The route lifecycle is fully covered — schema discovery via describe, optional command generation, start, wait, status, message capture, and stop — plus ad-hoc publish and cross-process visibility via bridge_status. Minor gaps remain: there is no ad-hoc single-message consume/poll (you must stand up a route with capture_last), no pause/resume, and stopping routes belonging to other processes is explicitly impossible by design.