queue-pilot 0.2.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +209 -31
  3. package/dist/broker/factory.d.ts +25 -0
  4. package/dist/broker/factory.js +35 -0
  5. package/dist/broker/factory.js.map +1 -0
  6. package/dist/broker/registry.d.ts +8 -0
  7. package/dist/broker/registry.js +95 -0
  8. package/dist/broker/registry.js.map +1 -0
  9. package/dist/broker/tool-definition.d.ts +7 -0
  10. package/dist/broker/tool-definition.js +2 -0
  11. package/dist/broker/tool-definition.js.map +1 -0
  12. package/dist/broker/types.d.ts +71 -0
  13. package/dist/broker/types.js +10 -0
  14. package/dist/broker/types.js.map +1 -0
  15. package/dist/brokers/kafka/adapter.d.ts +18 -0
  16. package/dist/brokers/kafka/adapter.js +83 -0
  17. package/dist/brokers/kafka/adapter.js.map +1 -0
  18. package/dist/brokers/kafka/tools.d.ts +3 -0
  19. package/dist/brokers/kafka/tools.js +51 -0
  20. package/dist/brokers/kafka/tools.js.map +1 -0
  21. package/dist/brokers/rabbitmq/adapter.d.ts +19 -0
  22. package/dist/brokers/rabbitmq/adapter.js +114 -0
  23. package/dist/brokers/rabbitmq/adapter.js.map +1 -0
  24. package/dist/brokers/rabbitmq/tools.d.ts +3 -0
  25. package/dist/brokers/rabbitmq/tools.js +124 -0
  26. package/dist/brokers/rabbitmq/tools.js.map +1 -0
  27. package/dist/index.d.ts +8 -1
  28. package/dist/index.js +208 -30
  29. package/dist/index.js.map +1 -1
  30. package/dist/init.d.ts +24 -0
  31. package/dist/init.js +269 -0
  32. package/dist/init.js.map +1 -0
  33. package/dist/kafka/client.d.ts +63 -0
  34. package/dist/kafka/client.js +256 -0
  35. package/dist/kafka/client.js.map +1 -0
  36. package/dist/kafka/types.d.ts +48 -0
  37. package/dist/kafka/types.js +2 -0
  38. package/dist/kafka/types.js.map +1 -0
  39. package/dist/rabbitmq/client.d.ts +14 -2
  40. package/dist/rabbitmq/client.js +44 -7
  41. package/dist/rabbitmq/client.js.map +1 -1
  42. package/dist/rabbitmq/types.d.ts +64 -4
  43. package/dist/schemas/loader.d.ts +0 -1
  44. package/dist/schemas/loader.js +23 -7
  45. package/dist/schemas/loader.js.map +1 -1
  46. package/dist/schemas/types.d.ts +5 -6
  47. package/dist/schemas/validator.d.ts +0 -1
  48. package/dist/schemas/validator.js +11 -64
  49. package/dist/schemas/validator.js.map +1 -1
  50. package/dist/server.d.ts +5 -4
  51. package/dist/server.js +92 -194
  52. package/dist/server.js.map +1 -1
  53. package/dist/startup.d.ts +18 -0
  54. package/dist/startup.js +36 -0
  55. package/dist/startup.js.map +1 -0
  56. package/dist/tools/check-health.d.ts +6 -0
  57. package/dist/tools/check-health.js +9 -0
  58. package/dist/tools/check-health.js.map +1 -0
  59. package/dist/tools/create-queue.d.ts +2 -3
  60. package/dist/tools/create-queue.js +4 -2
  61. package/dist/tools/create-queue.js.map +1 -1
  62. package/dist/tools/delete-queue.d.ts +11 -0
  63. package/dist/tools/delete-queue.js +9 -0
  64. package/dist/tools/delete-queue.js.map +1 -0
  65. package/dist/tools/get-overview.d.ts +23 -0
  66. package/dist/tools/get-overview.js +13 -0
  67. package/dist/tools/get-overview.js.map +1 -0
  68. package/dist/tools/get-queue.d.ts +19 -0
  69. package/dist/tools/get-queue.js +18 -0
  70. package/dist/tools/get-queue.js.map +1 -0
  71. package/dist/tools/get-schema.d.ts +8 -6
  72. package/dist/tools/get-schema.js.map +1 -1
  73. package/dist/tools/inspect-queue.d.ts +5 -3
  74. package/dist/tools/inspect-queue.js +45 -27
  75. package/dist/tools/inspect-queue.js.map +1 -1
  76. package/dist/tools/list-connections.d.ts +14 -0
  77. package/dist/tools/list-connections.js +16 -0
  78. package/dist/tools/list-connections.js.map +1 -0
  79. package/dist/tools/list-consumers.d.ts +11 -0
  80. package/dist/tools/list-consumers.js +13 -0
  81. package/dist/tools/list-consumers.js.map +1 -0
  82. package/dist/tools/list-queues.d.ts +2 -3
  83. package/dist/tools/list-queues.js +4 -4
  84. package/dist/tools/list-queues.js.map +1 -1
  85. package/dist/tools/list-schemas.d.ts +0 -1
  86. package/dist/tools/list-schemas.js +6 -2
  87. package/dist/tools/list-schemas.js.map +1 -1
  88. package/dist/tools/peek-messages.d.ts +3 -3
  89. package/dist/tools/peek-messages.js +5 -4
  90. package/dist/tools/peek-messages.js.map +1 -1
  91. package/dist/tools/publish-message.d.ts +3 -4
  92. package/dist/tools/publish-message.js +12 -6
  93. package/dist/tools/publish-message.js.map +1 -1
  94. package/dist/tools/purge-queue.d.ts +2 -3
  95. package/dist/tools/purge-queue.js +3 -3
  96. package/dist/tools/purge-queue.js.map +1 -1
  97. package/dist/tools/validate-message.d.ts +0 -1
  98. package/dist/tools/validate-message.js.map +1 -1
  99. package/dist/version.d.ts +1 -0
  100. package/dist/version.js +5 -0
  101. package/dist/version.js.map +1 -0
  102. package/package.json +21 -6
  103. package/dist/index.d.ts.map +0 -1
  104. package/dist/rabbitmq/client.d.ts.map +0 -1
  105. package/dist/rabbitmq/types.d.ts.map +0 -1
  106. package/dist/schemas/loader.d.ts.map +0 -1
  107. package/dist/schemas/types.d.ts.map +0 -1
  108. package/dist/schemas/validator.d.ts.map +0 -1
  109. package/dist/server.d.ts.map +0 -1
  110. package/dist/tools/create-binding.d.ts +0 -15
  111. package/dist/tools/create-binding.d.ts.map +0 -1
  112. package/dist/tools/create-binding.js +0 -10
  113. package/dist/tools/create-binding.js.map +0 -1
  114. package/dist/tools/create-queue.d.ts.map +0 -1
  115. package/dist/tools/get-schema.d.ts.map +0 -1
  116. package/dist/tools/inspect-queue.d.ts.map +0 -1
  117. package/dist/tools/list-bindings.d.ts +0 -11
  118. package/dist/tools/list-bindings.d.ts.map +0 -1
  119. package/dist/tools/list-bindings.js +0 -12
  120. package/dist/tools/list-bindings.js.map +0 -1
  121. package/dist/tools/list-exchanges.d.ts +0 -10
  122. package/dist/tools/list-exchanges.d.ts.map +0 -1
  123. package/dist/tools/list-exchanges.js +0 -11
  124. package/dist/tools/list-exchanges.js.map +0 -1
  125. package/dist/tools/list-queues.d.ts.map +0 -1
  126. package/dist/tools/list-schemas.d.ts.map +0 -1
  127. package/dist/tools/peek-messages.d.ts.map +0 -1
  128. package/dist/tools/publish-message.d.ts.map +0 -1
  129. package/dist/tools/purge-queue.d.ts.map +0 -1
  130. package/dist/tools/validate-message.d.ts.map +0 -1
@@ -1,10 +1,10 @@
1
1
  export interface SchemaDefinition {
2
2
  $id: string;
3
- $schema: string;
4
- title: string;
5
- description: string;
6
- version: string;
7
- type: string;
3
+ $schema?: string;
4
+ title?: string;
5
+ description?: string;
6
+ version?: string;
7
+ type?: string;
8
8
  required?: string[];
9
9
  properties?: Record<string, unknown>;
10
10
  [key: string]: unknown;
@@ -24,4 +24,3 @@ export interface ValidationResult {
24
24
  valid: boolean;
25
25
  errors: ValidationError[];
26
26
  }
27
- //# sourceMappingURL=types.d.ts.map
@@ -7,4 +7,3 @@ export declare class SchemaValidator {
7
7
  getSchemaNames(): string[];
8
8
  getSchema(name: string): SchemaEntry | undefined;
9
9
  }
10
- //# sourceMappingURL=validator.d.ts.map
@@ -1,76 +1,23 @@
1
- /* eslint-disable @typescript-eslint/no-require-imports */
2
1
  import { createRequire } from "module";
3
2
  const require = createRequire(import.meta.url);
4
- const Ajv = require("ajv").default ?? require("ajv");
5
- const addFormats = require("ajv-formats").default ?? require("ajv-formats");
6
- const JSON_SCHEMA_DRAFT07_KEYWORDS = new Set([
7
- "$id",
8
- "$schema",
9
- "$ref",
10
- "$comment",
11
- "title",
12
- "description",
13
- "default",
14
- "readOnly",
15
- "writeOnly",
16
- "examples",
17
- "type",
18
- "enum",
19
- "const",
20
- "properties",
21
- "required",
22
- "additionalProperties",
23
- "patternProperties",
24
- "propertyNames",
25
- "minProperties",
26
- "maxProperties",
27
- "dependencies",
28
- "items",
29
- "additionalItems",
30
- "contains",
31
- "minItems",
32
- "maxItems",
33
- "uniqueItems",
34
- "allOf",
35
- "anyOf",
36
- "oneOf",
37
- "not",
38
- "if",
39
- "then",
40
- "else",
41
- "format",
42
- "minLength",
43
- "maxLength",
44
- "pattern",
45
- "minimum",
46
- "maximum",
47
- "exclusiveMinimum",
48
- "exclusiveMaximum",
49
- "multipleOf",
50
- "contentMediaType",
51
- "contentEncoding",
52
- "definitions",
53
- ]);
54
- function stripNonStandardKeywords(schema) {
55
- const cleaned = {};
56
- for (const [key, value] of Object.entries(schema)) {
57
- if (JSON_SCHEMA_DRAFT07_KEYWORDS.has(key)) {
58
- cleaned[key] = value;
59
- }
60
- }
61
- return cleaned;
62
- }
3
+ const AjvConstructor = (require("ajv").default ?? require("ajv"));
4
+ const addFormats = (require("ajv-formats").default ?? require("ajv-formats"));
63
5
  export class SchemaValidator {
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
6
  ajv;
66
7
  schemas;
67
8
  constructor(schemas) {
68
- this.ajv = new Ajv({ allErrors: true });
9
+ this.ajv = new AjvConstructor({ allErrors: true, strict: false });
69
10
  addFormats(this.ajv);
70
11
  this.schemas = new Map();
71
12
  for (const entry of schemas) {
72
- this.schemas.set(entry.name, entry);
73
- this.ajv.addSchema(stripNonStandardKeywords(entry.schema), entry.name);
13
+ try {
14
+ this.ajv.addSchema(entry.schema, entry.name);
15
+ this.schemas.set(entry.name, entry);
16
+ }
17
+ catch (error) {
18
+ const msg = error instanceof Error ? error.message : String(error);
19
+ process.stderr.write(`Warning: skipping schema "${entry.name}": ${msg}\n`);
20
+ }
74
21
  }
75
22
  }
76
23
  validate(schemaName, message) {
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schemas/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schemas/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AASvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAuE,CAAC;AACxI,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAA+B,CAAC;AAE5G,MAAM,OAAO,eAAe;IACT,GAAG,CAAc;IACjB,OAAO,CAA2B;IAEnD,YAAY,OAAsB;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAEzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,MAAiC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,UAAkB,EAAE,OAAgB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,EAAE;wBACR,OAAO,EAAE,WAAW,UAAU,aAAa;qBAC5C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAErD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG;YAC7B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,0BAA0B;SACnD,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAClC,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF"}
package/dist/server.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { SchemaEntry } from "./schemas/types.js";
3
+ import type { BrokerAdapter } from "./broker/types.js";
4
+ import type { ToolDefinition } from "./broker/tool-definition.js";
3
5
  export interface ServerConfig {
4
6
  schemas: SchemaEntry[];
5
- rabbitmqUrl: string;
6
- rabbitmqUser: string;
7
- rabbitmqPass: string;
7
+ adapter: BrokerAdapter;
8
+ brokerTools?: ToolDefinition[];
9
+ version?: string;
8
10
  }
9
11
  export declare function createServer(config: ServerConfig): McpServer;
10
- //# sourceMappingURL=server.d.ts.map
package/dist/server.js CHANGED
@@ -1,208 +1,106 @@
1
- import { createRequire } from "module";
2
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
2
  import { z } from "zod";
4
- import { RabbitMQClient } from "./rabbitmq/client.js";
5
3
  import { SchemaValidator } from "./schemas/validator.js";
6
- const require = createRequire(import.meta.url);
7
- const pkg = require("../package.json");
8
- import { listSchemas } from "./tools/list-schemas.js";
9
- import { getSchema } from "./tools/get-schema.js";
10
- import { validateMessage } from "./tools/validate-message.js";
11
- import { listQueues } from "./tools/list-queues.js";
12
- import { peekMessages } from "./tools/peek-messages.js";
13
- import { inspectQueue } from "./tools/inspect-queue.js";
14
- import { listExchanges } from "./tools/list-exchanges.js";
15
- import { listBindings } from "./tools/list-bindings.js";
16
- import { publishMessage } from "./tools/publish-message.js";
17
- import { purgeQueue } from "./tools/purge-queue.js";
18
- import { createQueue } from "./tools/create-queue.js";
19
- import { createBinding } from "./tools/create-binding.js";
4
+ import { registerSchemaTools, registerUniversalTools, registerCapabilityTools, registerBrokerTools, } from "./broker/registry.js";
5
+ import { VERSION } from "./version.js";
20
6
  export function createServer(config) {
21
7
  const validator = new SchemaValidator(config.schemas);
22
- const client = new RabbitMQClient({
23
- url: config.rabbitmqUrl,
24
- username: config.rabbitmqUser,
25
- password: config.rabbitmqPass,
26
- });
27
8
  const server = new McpServer({
28
9
  name: "queue-pilot",
29
- version: pkg.version,
30
- });
31
- server.tool("list_schemas", "List all loaded message schemas", {}, async () => {
32
- const result = listSchemas(validator);
33
- return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
34
- });
35
- server.tool("get_schema", "Get the full definition of a specific schema", { name: z.string().describe("Schema name (e.g. 'order.created')") }, async ({ name }) => {
36
- const result = getSchema(validator, name);
37
- return {
38
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
39
- };
40
- });
41
- server.tool("validate_message", "Validate a JSON message against a schema", {
42
- schemaName: z.string().describe("Schema name to validate against"),
43
- message: z.string().describe("JSON message payload to validate"),
44
- }, async ({ schemaName, message }) => {
45
- const result = validateMessage(validator, schemaName, message);
46
- return {
47
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
48
- };
49
- });
50
- server.tool("list_queues", "List all RabbitMQ queues with message counts", {
51
- vhost: z
52
- .string()
53
- .default("/")
54
- .describe("RabbitMQ vhost (default: '/')"),
55
- }, async ({ vhost }) => {
56
- const result = await listQueues(client, vhost);
57
- return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
58
- });
59
- server.tool("peek_messages", "View messages in a queue without consuming them", {
60
- queue: z.string().describe("Queue name"),
61
- count: z
62
- .number()
63
- .int()
64
- .min(1)
65
- .max(50)
66
- .default(5)
67
- .describe("Number of messages to peek (default 5, max 50)"),
68
- vhost: z
69
- .string()
70
- .default("/")
71
- .describe("RabbitMQ vhost (default: '/')"),
72
- }, async ({ queue, count, vhost }) => {
73
- const result = await peekMessages(client, vhost, queue, count);
74
- return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
75
- });
76
- server.tool("inspect_queue", "View messages in a queue and validate each against its schema", {
77
- queue: z.string().describe("Queue name"),
78
- count: z
79
- .number()
80
- .int()
81
- .min(1)
82
- .max(50)
83
- .default(5)
84
- .describe("Number of messages to inspect (default 5, max 50)"),
85
- vhost: z
86
- .string()
87
- .default("/")
88
- .describe("RabbitMQ vhost (default: '/')"),
89
- }, async ({ queue, count, vhost }) => {
90
- const result = await inspectQueue(client, validator, vhost, queue, count);
91
- return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
92
- });
93
- server.tool("list_exchanges", "List all RabbitMQ exchanges", {
94
- vhost: z
95
- .string()
96
- .default("/")
97
- .describe("RabbitMQ vhost (default: '/')"),
98
- }, async ({ vhost }) => {
99
- const result = await listExchanges(client, vhost);
100
- return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
101
- });
102
- server.tool("list_bindings", "List bindings between exchanges and queues", {
103
- vhost: z
104
- .string()
105
- .default("/")
106
- .describe("RabbitMQ vhost (default: '/')"),
107
- }, async ({ vhost }) => {
108
- const result = await listBindings(client, vhost);
109
- return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
10
+ version: config.version ?? VERSION,
110
11
  });
111
- server.tool("publish_message", "Publish a message to a RabbitMQ exchange. Optionally validates against a schema before publishing — if validation fails, the message is NOT sent.", {
112
- exchange: z
113
- .string()
114
- .describe("Exchange name ('amq.default' for direct-to-queue)"),
115
- routing_key: z.string().describe("Routing key"),
116
- payload: z.string().describe("JSON message payload"),
117
- message_type: z
118
- .string()
119
- .optional()
120
- .describe("Message type (e.g. 'order.created'), used for schema lookup"),
121
- headers: z
122
- .record(z.unknown())
123
- .optional()
124
- .describe("Optional message headers"),
125
- validate: z
126
- .boolean()
127
- .default(true)
128
- .describe("Validate before publishing (default: true)"),
129
- vhost: z
130
- .string()
131
- .default("/")
132
- .describe("RabbitMQ vhost (default: '/')"),
133
- }, async ({ exchange, routing_key, payload, message_type, headers, validate, vhost }) => {
134
- const result = await publishMessage(client, validator, {
135
- exchange,
136
- routing_key,
137
- payload,
138
- message_type,
139
- headers,
140
- validate,
141
- vhost,
142
- });
143
- return {
144
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
145
- };
146
- });
147
- server.tool("purge_queue", "Remove all messages from a RabbitMQ queue. Returns the number of messages purged.", {
148
- queue: z.string().describe("Queue name"),
149
- vhost: z
150
- .string()
151
- .default("/")
152
- .describe("RabbitMQ vhost (default: '/')"),
153
- }, async ({ queue, vhost }) => {
154
- const result = await purgeQueue(client, vhost, queue);
155
- return {
156
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
157
- };
158
- });
159
- server.tool("create_queue", "Create a new RabbitMQ queue. Idempotent if settings match; errors if the queue exists with different settings.", {
160
- queue: z.string().describe("Queue name"),
161
- durable: z
162
- .boolean()
163
- .default(false)
164
- .describe("Survive broker restart (default: false)"),
165
- auto_delete: z
166
- .boolean()
167
- .default(false)
168
- .describe("Delete when last consumer disconnects (default: false)"),
169
- vhost: z
170
- .string()
171
- .default("/")
172
- .describe("RabbitMQ vhost (default: '/')"),
173
- }, async ({ queue, durable, auto_delete, vhost }) => {
174
- const result = await createQueue(client, {
175
- queue,
176
- durable,
177
- auto_delete,
178
- vhost,
179
- });
180
- return {
181
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
182
- };
183
- });
184
- server.tool("create_binding", "Create a binding from an exchange to a queue with a routing key.", {
12
+ registerSchemaTools(server, validator);
13
+ registerUniversalTools(server, config.adapter, validator);
14
+ registerCapabilityTools(server, config.adapter);
15
+ if (config.brokerTools) {
16
+ registerBrokerTools(server, config.brokerTools);
17
+ }
18
+ // MCP Resources — expose loaded schemas as readable context
19
+ for (const schema of config.schemas) {
20
+ server.resource(schema.name, `schema:///${schema.name}`, { description: schema.description, mimeType: "application/schema+json" }, async () => ({
21
+ contents: [
22
+ {
23
+ uri: `schema:///${schema.name}`,
24
+ text: JSON.stringify(schema.schema, null, 2),
25
+ mimeType: "application/schema+json",
26
+ },
27
+ ],
28
+ }));
29
+ }
30
+ // MCP Prompts — predefined workflows
31
+ server.prompt("debug-flow", "Trace bindings from exchange to queue, peek messages, validate against schemas", {
185
32
  exchange: z.string().describe("Source exchange name"),
186
33
  queue: z.string().describe("Destination queue name"),
187
- routing_key: z
34
+ }, async ({ exchange, queue }) => ({
35
+ messages: [
36
+ {
37
+ role: "user",
38
+ content: {
39
+ type: "text",
40
+ text: [
41
+ `Debug the message flow from exchange "${exchange}" to queue "${queue}":`,
42
+ "",
43
+ "1. Use list_bindings to find routing configuration between the exchange and queue",
44
+ "2. Use peek_messages to view messages currently in the queue",
45
+ "3. Use validate_message to check each message against its schema",
46
+ "",
47
+ "Report any misrouted messages, schema violations, or missing bindings.",
48
+ ].join("\n"),
49
+ },
50
+ },
51
+ ],
52
+ }));
53
+ server.prompt("health-report", "Check broker health, list queues, flag queues with backed-up messages", async () => ({
54
+ messages: [
55
+ {
56
+ role: "user",
57
+ content: {
58
+ type: "text",
59
+ text: [
60
+ "Generate a broker health report:",
61
+ "",
62
+ "1. Use check_health to verify broker status",
63
+ "2. Use get_overview for cluster-wide statistics",
64
+ "3. Use list_queues to enumerate all queues",
65
+ "4. Flag any queues where messages_ready > 0 or messages_unacknowledged > 0",
66
+ "",
67
+ "Provide a summary of the broker's health and any queues that need attention.",
68
+ ].join("\n"),
69
+ },
70
+ },
71
+ ],
72
+ }));
73
+ server.prompt("schema-compliance", "Peek messages in queues and validate each against its schema", {
74
+ queue: z
188
75
  .string()
189
- .default("")
190
- .describe("Routing key (default: '')"),
191
- vhost: z
192
- .string()
193
- .default("/")
194
- .describe("RabbitMQ vhost (default: '/')"),
195
- }, async ({ exchange, queue, routing_key, vhost }) => {
196
- const result = await createBinding(client, {
197
- exchange,
198
- queue,
199
- routing_key,
200
- vhost,
201
- });
202
- return {
203
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
204
- };
205
- });
76
+ .optional()
77
+ .describe("Specific queue to check (omit for all queues)"),
78
+ }, async ({ queue }) => ({
79
+ messages: [
80
+ {
81
+ role: "user",
82
+ content: {
83
+ type: "text",
84
+ text: queue
85
+ ? [
86
+ `Check schema compliance for queue "${queue}":`,
87
+ "",
88
+ "1. Use peek_messages to view messages in the queue",
89
+ "2. For each message with a type property, use validate_message to check it",
90
+ "3. Report which messages pass and which fail validation",
91
+ ].join("\n")
92
+ : [
93
+ "Check schema compliance across all queues:",
94
+ "",
95
+ "1. Use list_queues to find all queues with messages",
96
+ "2. For each queue, use peek_messages to view its messages",
97
+ "3. For each message with a type property, use validate_message to check it",
98
+ "4. Report compliance status per queue",
99
+ ].join("\n"),
100
+ },
101
+ },
102
+ ],
103
+ }));
206
104
  return server;
207
105
  }
208
106
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { BrokerHealthResult } from "./broker/types.js";
2
+ export interface NodeVersionCheck {
3
+ ok: boolean;
4
+ current: number;
5
+ required: number;
6
+ }
7
+ export interface SchemaLoadResult {
8
+ count: number;
9
+ warning: string | null;
10
+ }
11
+ export interface BrokerConnectivityResult {
12
+ reachable: boolean;
13
+ status: string | null;
14
+ message: string;
15
+ }
16
+ export declare function checkNodeVersion(currentVersion: string, requiredMajor?: number): NodeVersionCheck;
17
+ export declare function checkSchemaCount(count: number): SchemaLoadResult;
18
+ export declare function checkBrokerConnectivity(healthCheckFn: () => Promise<BrokerHealthResult>, timeoutMs?: number): Promise<BrokerConnectivityResult>;
@@ -0,0 +1,36 @@
1
+ export function checkNodeVersion(currentVersion, requiredMajor = 22) {
2
+ const version = currentVersion.startsWith("v")
3
+ ? currentVersion.slice(1)
4
+ : currentVersion;
5
+ const current = parseInt(version.split(".")[0] ?? "0", 10);
6
+ return { ok: current >= requiredMajor, current, required: requiredMajor };
7
+ }
8
+ export function checkSchemaCount(count) {
9
+ return {
10
+ count,
11
+ warning: count === 0
12
+ ? "No schemas loaded — schema validation tools will have no schemas to validate against"
13
+ : null,
14
+ };
15
+ }
16
+ export async function checkBrokerConnectivity(healthCheckFn, timeoutMs = 3000) {
17
+ try {
18
+ const timeout = new Promise((_, reject) => {
19
+ setTimeout(() => reject(new Error("Health check timed out")), timeoutMs);
20
+ });
21
+ const result = await Promise.race([healthCheckFn(), timeout]);
22
+ if (result.status === "ok") {
23
+ return { reachable: true, status: "ok", message: "Broker is healthy" };
24
+ }
25
+ return {
26
+ reachable: true,
27
+ status: result.status,
28
+ message: `Broker is unhealthy: ${result.reason ?? result.status}`,
29
+ };
30
+ }
31
+ catch (error) {
32
+ const message = error instanceof Error ? error.message : String(error);
33
+ return { reachable: false, status: null, message };
34
+ }
35
+ }
36
+ //# sourceMappingURL=startup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,gBAAgB,CAC9B,cAAsB,EACtB,gBAAwB,EAAE;IAE1B,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,cAAc,CAAC;IACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3D,OAAO,EAAE,EAAE,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO;QACL,KAAK;QACL,OAAO,EACL,KAAK,KAAK,CAAC;YACT,CAAC,CAAC,sFAAsF;YACxF,CAAC,CAAC,IAAI;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAgD,EAChD,YAAoB,IAAI;IAExB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAE9D,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;QACzE,CAAC;QACD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,wBAAwB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;SAClE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { BrokerAdapter } from "../broker/types.js";
2
+ export interface CheckHealthResult {
3
+ status: string;
4
+ reason?: string;
5
+ }
6
+ export declare function checkHealth(adapter: BrokerAdapter): Promise<CheckHealthResult>;
@@ -0,0 +1,9 @@
1
+ export async function checkHealth(adapter) {
2
+ const health = await adapter.checkHealth();
3
+ const result = { status: health.status };
4
+ if (health.reason) {
5
+ result.reason = health.reason;
6
+ }
7
+ return result;
8
+ }
9
+ //# sourceMappingURL=check-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-health.js","sourceRoot":"","sources":["../../src/tools/check-health.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC5D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { RabbitMQClient } from "../rabbitmq/client.js";
1
+ import type { BrokerAdapter } from "../broker/types.js";
2
2
  export interface CreateQueueParams {
3
3
  queue: string;
4
4
  durable: boolean;
@@ -11,5 +11,4 @@ export interface CreateQueueResult {
11
11
  auto_delete: boolean;
12
12
  vhost: string;
13
13
  }
14
- export declare function createQueue(client: RabbitMQClient, params: CreateQueueParams): Promise<CreateQueueResult>;
15
- //# sourceMappingURL=create-queue.d.ts.map
14
+ export declare function createQueue(adapter: BrokerAdapter, params: CreateQueueParams): Promise<CreateQueueResult>;
@@ -1,7 +1,9 @@
1
- export async function createQueue(client, params) {
2
- await client.createQueue(params.vhost, params.queue, {
1
+ export async function createQueue(adapter, params) {
2
+ await adapter.createQueue({
3
+ name: params.queue,
3
4
  durable: params.durable,
4
5
  auto_delete: params.auto_delete,
6
+ scope: params.vhost,
5
7
  });
6
8
  return {
7
9
  queue: params.queue,
@@ -1 +1 @@
1
- {"version":3,"file":"create-queue.js","sourceRoot":"","sources":["../../src/tools/create-queue.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAsB,EACtB,MAAyB;IAEzB,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;QACnD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create-queue.js","sourceRoot":"","sources":["../../src/tools/create-queue.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAsB,EACtB,MAAyB;IAEzB,MAAM,OAAO,CAAC,WAAW,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,KAAK;QAClB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { BrokerAdapter } from "../broker/types.js";
2
+ export interface DeleteQueueParams {
3
+ queue: string;
4
+ vhost: string;
5
+ }
6
+ export interface DeleteQueueResult {
7
+ queue: string;
8
+ vhost: string;
9
+ deleted: true;
10
+ }
11
+ export declare function deleteQueue(adapter: BrokerAdapter, params: DeleteQueueParams): Promise<DeleteQueueResult>;
@@ -0,0 +1,9 @@
1
+ export async function deleteQueue(adapter, params) {
2
+ await adapter.deleteQueue(params.queue, params.vhost);
3
+ return {
4
+ queue: params.queue,
5
+ vhost: params.vhost,
6
+ deleted: true,
7
+ };
8
+ }
9
+ //# sourceMappingURL=delete-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-queue.js","sourceRoot":"","sources":["../../src/tools/delete-queue.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAsB,EACtB,MAAyB;IAEzB,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}