Skip to content

Commit f671ccd

Browse files
committed
add input validation
1 parent 6c15b0a commit f671ccd

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/mcp_server_rabbitmq/server.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ async def call_tool(
5656
logger.debug("Executing enqueue tool")
5757
message = arguments["message"]
5858
queue = arguments["queue"]
59+
60+
if not message or not message.strip():
61+
raise ValueError("Message cannot be empty")
62+
if not queue or not queue.strip():
63+
raise ValueError("Queue name cannot be empty")
64+
# RabbitMQ queue names can only contain letters, digits, hyphen, underscore, period, or colon
65+
# and must be less than 255 characters
66+
if not all(c.isalnum() or c in '-_.:' for c in queue):
67+
raise ValueError("Queue name can only contain letters, digits, hyphen, underscore, period, or colon")
68+
if len(queue) > 255:
69+
raise ValueError("Queue name must be less than 255 characters")
70+
5971
try:
6072
connection = pika.BlockingConnection(parameters)
6173
channel = connection.channel()
@@ -67,8 +79,20 @@ async def call_tool(
6779
return [TextContent(type="text", text=str("failed"))]
6880
elif name == "fanout":
6981
logger.debug("Executing fanout tool")
70-
exchange = arguments["exchange"]
7182
message = arguments["message"]
83+
exchange = arguments["exchange"]
84+
85+
if not message or not message.strip():
86+
raise ValueError("Message cannot be empty")
87+
if not exchange or not exchange.strip():
88+
raise ValueError("Exchange name cannot be empty")
89+
# RabbitMQ exchange names can only contain letters, digits, hyphen, underscore, period, or colon
90+
# and must be less than 255 characters
91+
if not all(c.isalnum() or c in '-_.:' for c in exchange):
92+
raise ValueError("Exchange name can only contain letters, digits, hyphen, underscore, period, or colon")
93+
if len(exchange) > 255:
94+
raise ValueError("Exchange name must be less than 255 characters")
95+
7296
try:
7397
connection = pika.BlockingConnection(parameters)
7498
channel = connection.channel()

0 commit comments

Comments
 (0)