ballerina-activemq-mcp-server
Provides tools for managing Apache ActiveMQ message broker setup, including validating broker connectivity, scaffolding Ballerina projects, adding queues/topics, configuring acknowledgement modes, and building/deploying projects within a WSO2 Integrator workspace.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ballerina-activemq-mcp-serverscaffold a new Ballerina ActiveMQ project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ballerina-activemq-mcp-server
An MCP server that automates the full setup and deployment of Ballerina + Apache ActiveMQ (OpenWire/JMS) integrations inside a WSO2 Integrator (BI) workspace — from broker validation to a runnable, BI-low-code-ready project — with minimal user interaction.
It generates code against the ballerinax/activemq connector (v0.1.0, Ballerina 2201.12.10),
matching the real connector API (Client / Listener / Caller / Transaction). See
INSPECTION_NOTES.md for the Phase 0 API inspection this is built on.
Tools
Tool | Purpose |
| TCP reachability to the OpenWire port (+ Jolokia console destination listing). |
| Main tool. Generate a complete BI-ready Ballerina project. |
| Write/rotate the broker |
| Add a queue producer/consumer helper module. |
| Add a topic (pub/sub) publisher helper module. |
| Add a Listener service — the polling-loop carrier — with ack-mode/transaction options. |
| Change the acknowledgement mode on a listener service (edits the |
| Run |
| Run |
Acknowledgement modes
| Ballerina enum | Needs | Semantics |
|
| no | auto-ack on successful |
|
| yes |
|
|
| no | lazy ack, possible duplicates |
|
| yes |
|
The ack mode is a compile-time annotation field, so it lives in
listener.bal(notConfig.toml).mq_set_ack_modeedits the source accordingly.
Related MCP server: OMNI-MQTT-MCP
Build
npm install
npm run buildRun
# stdio (default — for MCP clients that spawn the server)
npm start
# streamable HTTP, bound to 127.0.0.1
npm run start:http # or: node dist/index.js --http --port 3000Register with an MCP client (stdio)
{
"mcpServers": {
"ballerina-activemq": {
"command": "node",
"args": ["/absolute/path/to/ballerina-activemq-mcp-server/dist/index.js"]
}
}
}What gets scaffolded
mq_scaffold_project writes a complete project under <bi_path>/<project_name>/:
Ballerina.toml · Dependencies.toml · Config.toml (+ .example, gitignored) · .gitignore
main.bal · listener.bal · transactions.bal · modules/<dest>/<dest>.bal
docker-compose.yml (apache/activemq-classic:6.2.0) · README.mdmain.bal—configurablebroker settings +activemq:Clientproducer/consumer demo.listener.bal— the polling-loop carrier: a declarativeservice activemq:Service on mqListenerper destination, ack mode baked into@activemq:ServiceConfig.Virtual topics — publish to
topic://VirtualTopic.<name>; consume the queueConsumer.<group>.VirtualTopic.<name>.
Design notes
This is JMS/OpenWire, not Kafka. Consumer groups, offset commits, partitions, and
bootstrap.servers have no analog here and are intentionally absent — reliability comes from
ack modes and transacted sessions. The closest thing to a consumer group is an ActiveMQ
Virtual Topic, modeled as a queue naming convention. See INSPECTION_NOTES.md for the full
rejected-Kafka-patterns rationale.
License
Apache-2.0
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PasinduGunarathne/wso2-bi-activemq-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server