@stevepic95/rabbitmq-masstransit-mcp 1.0.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +176 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +62 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/masstransit.d.ts +18 -0
  8. package/dist/masstransit.d.ts.map +1 -0
  9. package/dist/masstransit.js +203 -0
  10. package/dist/masstransit.js.map +1 -0
  11. package/dist/rabbitmq-client.d.ts +29 -0
  12. package/dist/rabbitmq-client.d.ts.map +1 -0
  13. package/dist/rabbitmq-client.js +123 -0
  14. package/dist/rabbitmq-client.js.map +1 -0
  15. package/dist/tools/connections.d.ts +4 -0
  16. package/dist/tools/connections.d.ts.map +1 -0
  17. package/dist/tools/connections.js +42 -0
  18. package/dist/tools/connections.js.map +1 -0
  19. package/dist/tools/exchanges.d.ts +4 -0
  20. package/dist/tools/exchanges.d.ts.map +1 -0
  21. package/dist/tools/exchanges.js +109 -0
  22. package/dist/tools/exchanges.js.map +1 -0
  23. package/dist/tools/masstransit.d.ts +4 -0
  24. package/dist/tools/masstransit.d.ts.map +1 -0
  25. package/dist/tools/masstransit.js +295 -0
  26. package/dist/tools/masstransit.js.map +1 -0
  27. package/dist/tools/messages.d.ts +4 -0
  28. package/dist/tools/messages.d.ts.map +1 -0
  29. package/dist/tools/messages.js +145 -0
  30. package/dist/tools/messages.js.map +1 -0
  31. package/dist/tools/overview.d.ts +4 -0
  32. package/dist/tools/overview.d.ts.map +1 -0
  33. package/dist/tools/overview.js +32 -0
  34. package/dist/tools/overview.js.map +1 -0
  35. package/dist/tools/queues.d.ts +4 -0
  36. package/dist/tools/queues.d.ts.map +1 -0
  37. package/dist/tools/queues.js +121 -0
  38. package/dist/tools/queues.js.map +1 -0
  39. package/dist/types.d.ts +195 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/package.json +47 -0
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { RabbitMQClient } from "../rabbitmq-client.js";
3
+ export declare function registerMessageTools(server: McpServer, client: RabbitMQClient, allowMutative: boolean): void;
4
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/tools/messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,OAAO,QA8MvB"}
@@ -0,0 +1,145 @@
1
+ import { z } from "zod";
2
+ import { parseEnvelope, getMessageTypeName } from "../masstransit.js";
3
+ export function registerMessageTools(server, client, allowMutative) {
4
+ server.registerTool("peek_messages", {
5
+ description: "Browse messages in a queue without consuming them (non-destructive). Parses MassTransit envelopes when detected.",
6
+ inputSchema: z.object({
7
+ queue: z.string().describe("Queue name to peek"),
8
+ count: z
9
+ .number()
10
+ .int()
11
+ .min(1)
12
+ .max(50)
13
+ .optional()
14
+ .describe("Number of messages to peek (default: 5, max: 50)"),
15
+ vhost: z.string().optional().describe("Vhost (default: configured vhost)"),
16
+ }),
17
+ }, async ({ queue, count, vhost }) => {
18
+ const messages = await client.peekMessages(queue, count ?? 5, vhost);
19
+ if (messages.length === 0) {
20
+ return {
21
+ content: [
22
+ { type: "text", text: `Queue "${queue}" is empty.` },
23
+ ],
24
+ };
25
+ }
26
+ const lines = [`Queue: ${queue} (${messages.length} message(s) peeked)\n`];
27
+ for (let i = 0; i < messages.length; i++) {
28
+ const msg = messages[i];
29
+ const envelope = parseEnvelope(msg.payload);
30
+ lines.push(`--- Message ${i + 1} ---`);
31
+ if (envelope) {
32
+ const types = envelope.messageType
33
+ ? envelope.messageType.map(getMessageTypeName)
34
+ : [];
35
+ lines.push(`MessageId: ${envelope.messageId ?? "unknown"}`, `Sent: ${envelope.sentTime ?? "unknown"}`, `Type: ${types.length > 0 ? types.join(", ") : "unknown"}`);
36
+ if (envelope.correlationId) {
37
+ lines.push(`CorrelationId: ${envelope.correlationId}`);
38
+ }
39
+ if (envelope.conversationId) {
40
+ lines.push(`ConversationId: ${envelope.conversationId}`);
41
+ }
42
+ const payloadStr = JSON.stringify(envelope.message ?? {}, null, 2);
43
+ lines.push(`Payload:`, payloadStr.length > 1000
44
+ ? payloadStr.slice(0, 1000) + "\n... (truncated)"
45
+ : payloadStr);
46
+ }
47
+ else {
48
+ lines.push(`Exchange: ${msg.exchange}`, `Routing Key: ${msg.routing_key}`, `Content Type: ${msg.properties.content_type ?? "unknown"}`, `Payload:`, msg.payload.length > 1000
49
+ ? msg.payload.slice(0, 1000) + "\n... (truncated)"
50
+ : msg.payload);
51
+ }
52
+ lines.push("");
53
+ }
54
+ return { content: [{ type: "text", text: lines.join("\n") }] };
55
+ });
56
+ if (allowMutative) {
57
+ server.registerTool("publish_message", {
58
+ description: "Publish a message to an exchange with a routing key. The message is sent with MassTransit-compatible content type.",
59
+ inputSchema: z.object({
60
+ exchange: z.string().describe("Exchange to publish to"),
61
+ routingKey: z.string().describe("Routing key for the message"),
62
+ payload: z.string().describe("Message payload (JSON string)"),
63
+ contentType: z
64
+ .string()
65
+ .optional()
66
+ .describe("Content type header (default: application/vnd.masstransit+json)"),
67
+ vhost: z.string().optional().describe("Vhost (default: configured vhost)"),
68
+ }),
69
+ }, async ({ exchange, routingKey, payload, contentType, vhost }) => {
70
+ const properties = {};
71
+ if (contentType) {
72
+ properties.content_type = contentType;
73
+ }
74
+ const result = await client.publishMessage(exchange, routingKey, payload, properties, vhost);
75
+ return {
76
+ content: [
77
+ {
78
+ type: "text",
79
+ text: result.routed
80
+ ? `Message published to exchange "${exchange}" with routing key "${routingKey}" — routed successfully.`
81
+ : `Message published to exchange "${exchange}" with routing key "${routingKey}" — WARNING: message was NOT routed to any queue.`,
82
+ },
83
+ ],
84
+ };
85
+ });
86
+ server.registerTool("move_messages", {
87
+ description: "Move messages from one queue to another by consuming from source and publishing to destination exchange. DESTRUCTIVE — removes messages from source queue.",
88
+ inputSchema: z.object({
89
+ sourceQueue: z.string().describe("Source queue to consume from"),
90
+ destinationExchange: z
91
+ .string()
92
+ .describe("Destination exchange to publish to"),
93
+ routingKey: z
94
+ .string()
95
+ .optional()
96
+ .describe("Routing key for destination (default: destination exchange name)"),
97
+ count: z
98
+ .number()
99
+ .int()
100
+ .min(1)
101
+ .max(100)
102
+ .optional()
103
+ .describe("Number of messages to move (default: 1, max: 100)"),
104
+ vhost: z.string().optional().describe("Vhost (default: configured vhost)"),
105
+ }),
106
+ annotations: {
107
+ destructiveHint: true,
108
+ },
109
+ }, async ({ sourceQueue, destinationExchange, routingKey, count, vhost }) => {
110
+ const moveCount = count ?? 1;
111
+ const messages = await client.consumeMessages(sourceQueue, moveCount, vhost);
112
+ if (messages.length === 0) {
113
+ return {
114
+ content: [
115
+ {
116
+ type: "text",
117
+ text: `Source queue "${sourceQueue}" is empty — nothing to move.`,
118
+ },
119
+ ],
120
+ };
121
+ }
122
+ let moved = 0;
123
+ for (const msg of messages) {
124
+ const rk = routingKey ?? destinationExchange;
125
+ await client.publishMessage(destinationExchange, rk, msg.payload, {
126
+ content_type: msg.properties.content_type ??
127
+ "application/vnd.masstransit+json",
128
+ headers: msg.properties.headers,
129
+ message_id: msg.properties.message_id,
130
+ correlation_id: msg.properties.correlation_id,
131
+ }, vhost);
132
+ moved++;
133
+ }
134
+ return {
135
+ content: [
136
+ {
137
+ type: "text",
138
+ text: `Moved ${moved} message(s) from "${sourceQueue}" to exchange "${destinationExchange}".`,
139
+ },
140
+ ],
141
+ };
142
+ });
143
+ }
144
+ }
145
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/tools/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { RabbitMQClient } from "../rabbitmq-client.js";
3
+ export declare function registerOverviewTools(server: McpServer, client: RabbitMQClient): void;
4
+ //# sourceMappingURL=overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../src/tools/overview.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,QA2CvB"}
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ export function registerOverviewTools(server, client) {
3
+ server.registerTool("get_overview", {
4
+ description: "Get RabbitMQ cluster overview: queue totals, connection counts, message rates, and version info",
5
+ inputSchema: z.object({}),
6
+ }, async () => {
7
+ const overview = await client.getOverview();
8
+ const lines = [
9
+ `Cluster: ${overview.cluster_name}`,
10
+ `RabbitMQ: ${overview.rabbitmq_version} | Erlang: ${overview.erlang_version}`,
11
+ `Node: ${overview.node}`,
12
+ "",
13
+ "Queue Totals:",
14
+ ` Messages: ${overview.queue_totals.messages}`,
15
+ ` Ready: ${overview.queue_totals.messages_ready}`,
16
+ ` Unacknowledged: ${overview.queue_totals.messages_unacknowledged}`,
17
+ "",
18
+ "Object Totals:",
19
+ ` Queues: ${overview.object_totals.queues}`,
20
+ ` Exchanges: ${overview.object_totals.exchanges}`,
21
+ ` Connections: ${overview.object_totals.connections}`,
22
+ ` Channels: ${overview.object_totals.channels}`,
23
+ ` Consumers: ${overview.object_totals.consumers}`,
24
+ ];
25
+ if (overview.message_stats) {
26
+ const stats = overview.message_stats;
27
+ lines.push("", "Message Rates:", ` Publish: ${stats.publish_details?.rate ?? 0}/s`, ` Deliver: ${stats.deliver_details?.rate ?? 0}/s`, ` Ack: ${stats.ack_details?.rate ?? 0}/s`);
28
+ }
29
+ return { content: [{ type: "text", text: lines.join("\n") }] };
30
+ });
31
+ }
32
+ //# sourceMappingURL=overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/tools/overview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,MAAsB;IAEtB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,iGAAiG;QACnG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG;YACZ,YAAY,QAAQ,CAAC,YAAY,EAAE;YACnC,aAAa,QAAQ,CAAC,gBAAgB,cAAc,QAAQ,CAAC,cAAc,EAAE;YAC7E,SAAS,QAAQ,CAAC,IAAI,EAAE;YACxB,EAAE;YACF,eAAe;YACf,eAAe,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC/C,YAAY,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE;YAClD,qBAAqB,QAAQ,CAAC,YAAY,CAAC,uBAAuB,EAAE;YACpE,EAAE;YACF,gBAAgB;YAChB,aAAa,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;YAC5C,gBAAgB,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE;YAClD,kBAAkB,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE;YACtD,eAAe,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE;YAChD,gBAAgB,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE;SACnD,CAAC;QAEF,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC;YACrC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,gBAAgB,EAChB,cAAc,KAAK,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,EAClD,cAAc,KAAK,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,EAClD,UAAU,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAC3C,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { RabbitMQClient } from "../rabbitmq-client.js";
3
+ export declare function registerQueueTools(server: McpServer, client: RabbitMQClient, allowMutative: boolean): void;
4
+ //# sourceMappingURL=queues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queues.d.ts","sourceRoot":"","sources":["../../src/tools/queues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,OAAO,QAgKvB"}
@@ -0,0 +1,121 @@
1
+ import { z } from "zod";
2
+ export function registerQueueTools(server, client, allowMutative) {
3
+ server.registerTool("list_queues", {
4
+ description: "List queues with message depth, consumer count, and rates. Filter by vhost and name pattern.",
5
+ inputSchema: z.object({
6
+ vhost: z.string().optional().describe("Filter by vhost (default: configured vhost)"),
7
+ namePattern: z
8
+ .string()
9
+ .optional()
10
+ .describe("Filter queue names containing this string (case-insensitive)"),
11
+ sortBy: z
12
+ .enum(["name", "messages", "consumers"])
13
+ .optional()
14
+ .describe("Sort results (default: name)"),
15
+ }),
16
+ }, async ({ vhost, namePattern, sortBy }) => {
17
+ let queues = await client.listQueues(vhost);
18
+ if (namePattern) {
19
+ const pattern = namePattern.toLowerCase();
20
+ queues = queues.filter((q) => q.name.toLowerCase().includes(pattern));
21
+ }
22
+ const sort = sortBy ?? "name";
23
+ queues.sort((a, b) => {
24
+ if (sort === "messages")
25
+ return (b.messages ?? 0) - (a.messages ?? 0);
26
+ if (sort === "consumers")
27
+ return (b.consumers ?? 0) - (a.consumers ?? 0);
28
+ return a.name.localeCompare(b.name);
29
+ });
30
+ if (queues.length === 0) {
31
+ return { content: [{ type: "text", text: "No queues found matching criteria." }] };
32
+ }
33
+ const lines = [`Found ${queues.length} queue(s):\n`];
34
+ for (const q of queues) {
35
+ const rate = q.message_stats?.publish_details?.rate ?? 0;
36
+ lines.push(`${q.name}`, ` Messages: ${q.messages} (ready: ${q.messages_ready}, unacked: ${q.messages_unacknowledged})`, ` Consumers: ${q.consumers} | State: ${q.state} | Publish rate: ${rate}/s`, "");
37
+ }
38
+ return { content: [{ type: "text", text: lines.join("\n") }] };
39
+ });
40
+ server.registerTool("get_queue", {
41
+ description: "Get detailed stats for a specific queue: depth, rates, consumers, memory, policy, arguments.",
42
+ inputSchema: z.object({
43
+ name: z.string().describe("Queue name"),
44
+ vhost: z.string().optional().describe("Vhost (default: configured vhost)"),
45
+ }),
46
+ }, async ({ name, vhost }) => {
47
+ const q = await client.getQueue(name, vhost);
48
+ const lines = [
49
+ `Queue: ${q.name}`,
50
+ `Vhost: ${q.vhost}`,
51
+ `State: ${q.state}`,
52
+ `Node: ${q.node ?? "unknown"}`,
53
+ "",
54
+ "Messages:",
55
+ ` Total: ${q.messages}`,
56
+ ` Ready: ${q.messages_ready}`,
57
+ ` Unacknowledged: ${q.messages_unacknowledged}`,
58
+ "",
59
+ `Consumers: ${q.consumers}`,
60
+ `Memory: ${(q.memory / 1024).toFixed(1)} KB`,
61
+ `Durable: ${q.durable}`,
62
+ `Auto-delete: ${q.auto_delete}`,
63
+ `Exclusive: ${q.exclusive}`,
64
+ ];
65
+ if (q.policy)
66
+ lines.push(`Policy: ${q.policy}`);
67
+ if (q.message_stats) {
68
+ const stats = q.message_stats;
69
+ lines.push("", "Rates:", ` Publish: ${stats.publish_details?.rate ?? 0}/s`, ` Deliver: ${stats.deliver_details?.rate ?? 0}/s`, ` Ack: ${stats.ack_details?.rate ?? 0}/s`);
70
+ }
71
+ if (q.arguments && Object.keys(q.arguments).length > 0) {
72
+ lines.push("", "Arguments:", JSON.stringify(q.arguments, null, 2));
73
+ }
74
+ return { content: [{ type: "text", text: lines.join("\n") }] };
75
+ });
76
+ if (allowMutative) {
77
+ server.registerTool("purge_queue", {
78
+ description: "Purge all messages from a queue. DESTRUCTIVE — messages cannot be recovered.",
79
+ inputSchema: z.object({
80
+ name: z.string().describe("Queue name to purge"),
81
+ vhost: z.string().optional().describe("Vhost (default: configured vhost)"),
82
+ }),
83
+ annotations: {
84
+ destructiveHint: true,
85
+ },
86
+ }, async ({ name, vhost }) => {
87
+ const q = await client.getQueue(name, vhost);
88
+ const count = q.messages;
89
+ await client.purgeQueue(name, vhost);
90
+ return {
91
+ content: [
92
+ {
93
+ type: "text",
94
+ text: `Purged queue "${name}" — ${count} message(s) removed.`,
95
+ },
96
+ ],
97
+ };
98
+ });
99
+ server.registerTool("delete_queue", {
100
+ description: "Delete a queue entirely. DESTRUCTIVE — queue and all messages will be lost.",
101
+ inputSchema: z.object({
102
+ name: z.string().describe("Queue name to delete"),
103
+ vhost: z.string().optional().describe("Vhost (default: configured vhost)"),
104
+ }),
105
+ annotations: {
106
+ destructiveHint: true,
107
+ },
108
+ }, async ({ name, vhost }) => {
109
+ await client.deleteQueue(name, vhost);
110
+ return {
111
+ content: [
112
+ {
113
+ type: "text",
114
+ text: `Deleted queue "${name}".`,
115
+ },
116
+ ],
117
+ };
118
+ });
119
+ }
120
+ }
121
+ //# sourceMappingURL=queues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queues.js","sourceRoot":"","sources":["../../src/tools/queues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ export interface RabbitMQConfig {
2
+ host: string;
3
+ port: number;
4
+ username: string;
5
+ password: string;
6
+ vhost: string;
7
+ ssl: boolean;
8
+ allowMutativeTools: boolean;
9
+ }
10
+ export interface QueueInfo {
11
+ name: string;
12
+ vhost: string;
13
+ durable: boolean;
14
+ auto_delete: boolean;
15
+ exclusive: boolean;
16
+ messages: number;
17
+ messages_ready: number;
18
+ messages_unacknowledged: number;
19
+ consumers: number;
20
+ state: string;
21
+ memory: number;
22
+ message_stats?: MessageStats;
23
+ arguments?: Record<string, unknown>;
24
+ policy?: string;
25
+ node?: string;
26
+ }
27
+ export interface ExchangeInfo {
28
+ name: string;
29
+ vhost: string;
30
+ type: string;
31
+ durable: boolean;
32
+ auto_delete: boolean;
33
+ internal: boolean;
34
+ arguments?: Record<string, unknown>;
35
+ }
36
+ export interface BindingInfo {
37
+ source: string;
38
+ vhost: string;
39
+ destination: string;
40
+ destination_type: string;
41
+ routing_key: string;
42
+ arguments?: Record<string, unknown>;
43
+ properties_key?: string;
44
+ }
45
+ export interface ConnectionInfo {
46
+ name: string;
47
+ vhost: string;
48
+ user: string;
49
+ state: string;
50
+ channels: number;
51
+ connected_at: number;
52
+ host: string;
53
+ port: number;
54
+ peer_host: string;
55
+ peer_port: number;
56
+ client_properties?: Record<string, unknown>;
57
+ node?: string;
58
+ }
59
+ export interface ConsumerInfo {
60
+ consumer_tag: string;
61
+ channel_details: {
62
+ connection_name: string;
63
+ name: string;
64
+ node: string;
65
+ number: number;
66
+ peer_host: string;
67
+ peer_port: number;
68
+ user: string;
69
+ };
70
+ queue: {
71
+ name: string;
72
+ vhost: string;
73
+ };
74
+ ack_required: boolean;
75
+ prefetch_count: number;
76
+ active: boolean;
77
+ }
78
+ export interface MessageStats {
79
+ publish?: number;
80
+ publish_details?: RateDetails;
81
+ deliver_get?: number;
82
+ deliver_get_details?: RateDetails;
83
+ deliver?: number;
84
+ deliver_details?: RateDetails;
85
+ ack?: number;
86
+ ack_details?: RateDetails;
87
+ redeliver?: number;
88
+ redeliver_details?: RateDetails;
89
+ }
90
+ export interface RateDetails {
91
+ rate: number;
92
+ }
93
+ export interface OverviewInfo {
94
+ management_version: string;
95
+ cluster_name: string;
96
+ erlang_version: string;
97
+ rabbitmq_version: string;
98
+ node: string;
99
+ queue_totals: {
100
+ messages: number;
101
+ messages_ready: number;
102
+ messages_unacknowledged: number;
103
+ };
104
+ object_totals: {
105
+ connections: number;
106
+ channels: number;
107
+ exchanges: number;
108
+ queues: number;
109
+ consumers: number;
110
+ };
111
+ message_stats?: MessageStats;
112
+ listeners: Array<{
113
+ node: string;
114
+ protocol: string;
115
+ port: number;
116
+ }>;
117
+ }
118
+ export interface PeekedMessage {
119
+ payload: string;
120
+ payload_bytes: number;
121
+ payload_encoding: string;
122
+ redelivered: boolean;
123
+ exchange: string;
124
+ routing_key: string;
125
+ message_count: number;
126
+ properties: {
127
+ headers?: Record<string, unknown>;
128
+ content_type?: string;
129
+ delivery_mode?: number;
130
+ message_id?: string;
131
+ correlation_id?: string;
132
+ type?: string;
133
+ app_id?: string;
134
+ timestamp?: number;
135
+ };
136
+ }
137
+ export interface MassTransitEnvelope {
138
+ messageId?: string;
139
+ correlationId?: string;
140
+ conversationId?: string;
141
+ initiatorId?: string;
142
+ sourceAddress?: string;
143
+ destinationAddress?: string;
144
+ messageType?: string[];
145
+ message?: Record<string, unknown>;
146
+ sentTime?: string;
147
+ headers?: Record<string, unknown>;
148
+ host?: {
149
+ machineName?: string;
150
+ processName?: string;
151
+ processId?: number;
152
+ assembly?: string;
153
+ assemblyVersion?: string;
154
+ frameworkVersion?: string;
155
+ massTransitVersion?: string;
156
+ operatingSystemVersion?: string;
157
+ };
158
+ }
159
+ export interface MassTransitFault {
160
+ faultId?: string;
161
+ faultedMessageId?: string;
162
+ timestamp?: string;
163
+ exceptions?: MassTransitException[];
164
+ message?: Record<string, unknown>;
165
+ host?: MassTransitEnvelope["host"];
166
+ consumerType?: string;
167
+ inputAddress?: string;
168
+ messageType?: string;
169
+ retryCount?: number;
170
+ reason?: string;
171
+ }
172
+ export interface MassTransitException {
173
+ exceptionType?: string;
174
+ message?: string;
175
+ stackTrace?: string;
176
+ innerException?: MassTransitException;
177
+ source?: string;
178
+ }
179
+ export interface ParsedFaultMessage {
180
+ faultedAt: string;
181
+ originalMessageId: string;
182
+ messageTypes: string[];
183
+ exceptionType: string;
184
+ exceptionMessage: string;
185
+ stackTrace: string;
186
+ originalPayload: Record<string, unknown> | null;
187
+ sourceHost: string;
188
+ }
189
+ export type ToolHandler = (args: Record<string, unknown>) => Promise<{
190
+ content: Array<{
191
+ type: "text";
192
+ text: string;
193
+ }>;
194
+ }>;
195
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@stevepic95/rabbitmq-masstransit-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for RabbitMQ with MassTransit intelligence — error queue parsing, fault analysis, and message republishing",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "rabbitmq-masstransit-mcp": "dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsc --watch",
13
+ "start": "node dist/index.js",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "keywords": [
17
+ "mcp",
18
+ "rabbitmq",
19
+ "masstransit",
20
+ "model-context-protocol",
21
+ "claude",
22
+ "messaging",
23
+ "debugging"
24
+ ],
25
+ "author": "StevePic95",
26
+ "license": "MIT",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/StevePic95/rabbitmq-masstransit-mcp.git"
30
+ },
31
+ "engines": {
32
+ "node": ">=18.0.0"
33
+ },
34
+ "dependencies": {
35
+ "@modelcontextprotocol/sdk": "^1.12.1",
36
+ "zod": "^3.24.2"
37
+ },
38
+ "devDependencies": {
39
+ "@types/node": "^22.13.4",
40
+ "typescript": "^5.7.3"
41
+ },
42
+ "files": [
43
+ "dist",
44
+ "README.md",
45
+ "LICENSE"
46
+ ]
47
+ }