Skip to main content
Glama
PasinduGunarathne

ballerina-activemq-mcp-server

Scaffold ActiveMQ BI project

mq_scaffold_project

Generate a complete, runnable WSO2 Integrator Ballerina project for ActiveMQ, removing manual setup by producing producer/consumer code, listener services, transaction support, and Docker Compose.

Instructions

MAIN tool. Generate a complete, runnable WSO2 Integrator (BI) Ballerina project that integrates with ActiveMQ via the ballerinax/activemq connector. Creates Ballerina.toml (with the connector pinned from the local repository), Config.toml (+ .example, gitignored), .gitignore, main.bal (producer/consumer client demo), listener.bal (the polling-loop carrier with one declarative service activemq:Service on mqListener per destination) when include_listener is set, transactions.bal when transacted is set, a modules// helper per destination, a docker-compose.yml (apache/activemq-classic), and a README. Acknowledgement mode is baked into the listener's @activemq:ServiceConfig. If transacted=true conflicts with ack_mode, transacted wins (SESSION_TRANSACTED) and a warning is returned. Writes files to disk.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bi_pathYesWSO2 Integrator (BI) workspace path the project folder is created under. Supports ~ (POSIX) and %USERPROFILE% (Windows) expansion. Defaults: ~/WSO2Integrator (macOS/Linux), %USERPROFILE%\WSO2Integrator (Windows).
ack_modeNoAcknowledgement mode baked into the listener's @activemq:ServiceConfig: auto=AUTO_ACKNOWLEDGE (default), client=CLIENT_ACKNOWLEDGE (manual caller->acknowledge), dups-ok=DUPS_OK_ACKNOWLEDGE, transacted=SESSION_TRANSACTED (caller->'commit()/'rollback()).auto
org_nameYesBallerina package organisation name (e.g. "acme"). Used in Ballerina.toml and the Config.toml table header [org.project].
passwordNoBroker password (must be paired with username). Omit for an unauthenticated broker.
usernameNoBroker username (must be paired with password). Omit for an unauthenticated broker.
overwriteNoWhen true, overwrite an existing project folder. When false, the tool refuses if the folder already exists.
broker_urlNoOpenWire broker URL. Supported forms: tcp://host:61616 (default), ssl://host:61617, or failover:(tcp://h1:61616,tcp://h2:61616). Example: tcp://localhost:61616tcp://localhost:61616
transactedNoWhen true, generate transactions.bal and force SESSION_TRANSACTED on the listener (overrides ack_mode with a warning).
destinationsYesOne or more destinations to wire up. Each generates a modules/<name>.bal helper, and (if include_listener) a listener service.
project_nameYesBallerina package / project name. Becomes the folder <bi_path>/<project_name> and the package name.
include_listenerNoWhen true, generate listener.bal — the polling-loop carrier — with a service per destination.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite light annotations, the description discloses important behavioral details: it writes files to disk, lists every artifact generated, calls out conditional generation based on include_listener and transacted, and explains the conflict-resolution rule where transacted overrides ack_mode (with a warning). This goes well beyond the annotations and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but packed with necessary detail about the many files and flags. It front-loads the core purpose and avoids filler. The lengthy file list is justified for a scaffolding tool, though it could be slightly tightened by moving implementation specifics into the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 11 parameters, no output schema, and a dozen generated artifacts, the description covers the key generation rules, conditional files, and conflict handling. It explains what gets written, when, and how parameter interactions are resolved, making it sufficiently complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra semantic value by linking specific parameters to generated files ('listener.bal ... when include_listener is set', 'transactions.bal when transacted is set') and clarifying the precedence relationship between transacted and ack_mode, which is not captured in individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'MAIN tool' and states a specific verb and resource: 'Generate a complete, runnable WSO2 Integrator (BI) Ballerina project that integrates with ActiveMQ via the ballerinax/activemq connector.' It then enumerates the exact set of files created, making the tool's scope unmistakable and clearly distinguishing it from sibling tools that validate, add queues, or build/deploy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'MAIN tool' marker and the comprehensive scaffold list establish that this tool is the entry point for creating a project. However, the description does not explicitly name alternatives or state when not to use this tool (e.g., 'for incremental changes use mq_add_queue'), so it lacks the explicit exclusions that would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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