QStash MCP. Manage reliable message flow from chat.
Works with every AI agent you already use
…and any MCP-compatible client
Just plug in your AI agents and start using Vinkius.
QStash (Serverless Message Queue) MCP Server lets your AI client manage background tasks and message delivery directly through natural language.
Publish delayed webhooks, create reliable FIFO queues with `upsert_queue`, schedule recurring jobs (`list_schedules`), and audit failed messages in the Dead Letter Queue (DLQ).
Stop relying on brittle cron jobs; run durable, serverless messaging workflows from your IDE.
What your AI agents can do
Batch messages
Send multiple messages to various destinations in a single request.
Bulk cancel messages
Cancel several pending messages by specifying filters and criteria.
Bulk delete dlq
Wipes all messages from the Dead Letter Queue at once.
Send messages to a destination URL or group, scheduling when it should fire, including setting up retries and preventing duplicate sends.
Create, update, or list queues (upsert_queue, list_queues) to ensure tasks run in order (FIFO) with controlled resource parallelism.
List and control recurring background jobs using cron-based schedules; you can pause or resume them directly.
Inspect failed messages via list_dlq and manually retry specific failures with retry_dlq_message, ensuring no data loss.
Check and adjust rate limits across your messaging system using tools like get_flow_control_key and list_flow_control_keys to prevent resource overload.
Ask AI about this MCP
Supported MCP Clients
Waiting for input…
QStash (Serverless Message Queue) MCP Server: 38 Tools
Manage every aspect of message flow—from publishing delayed webhooks to auditing dead letter queues—using these 38 direct tools.
019e5d4cbatch messages
Send multiple messages to various destinations in a single request.
019e5d4cbulk cancel messages
Cancel several pending messages by specifying filters and criteria.
019e5d4cbulk delete dlq
Wipes all messages from the Dead Letter Queue at once.
019e5d4cbulk retry dlq
Retries every single message currently sitting in the DLQ.
019e5d4ccancel message
Stops a specific message before it is delivered to its endpoint.
019e5d4cdelete dlq message
Removes one specific message from the Dead Letter Queue.
019e5d4cdelete queue
Permanently deletes an entire message queue.
019e5d4cdelete schedule
Deletes a scheduled background job entirely.
019e5d4cdelete url group
Removes a configured group of endpoints (a topic).
019e5d4cenqueue message
Adds a message to a queue, guaranteeing FIFO order or controlled parallelism.
019e5d4cget dlq message
Retrieves the full details of one specific message that failed and landed in the DLQ.
019e5d4cget flow control key
Gets configuration details for a single rate limit key.
019e5d4cget global parallelism
Retrieves the overall global concurrency settings for your messaging system.
019e5d4cget keys
Fetches all QStash signing and access keys.
019e5d4cget message
Retrieves details about a message that is currently in flight or undergoing retry.
019e5d4cget queue
Gets the current status and configuration of a specific queue.
019e5d4cget schedule
Retrieves details about a single scheduled background job.
019e5d4cget url group
Gets the current configuration and endpoints for a specific URL Group.
019e5d4clist dlq
Shows a list of all messages that have failed delivery and are waiting in the Dead Letter Queue.
019e5d4clist flow control keys
Lists every rate limit key configured across your messaging system.
019e5d4clist logs
Retrieves a historical record of all QStash events and operational logs.
019e5d4clist queues
Provides an overview listing every message queue you have set up.
019e5d4clist schedules
Lists all currently active and paused background job schedules.
019e5d4clist url groups
Lists all topic groups of endpoints you've configured.
019e5d4cpause flow control
Temporarily suspends a specific rate limit key to prevent service overuse.
019e5d4cpause queue
Halts all message processing for a designated queue until you resume it.
019e5d4cpause schedule
Stops a scheduled background job from running on its set trigger time.
019e5d4cpin flow control
Sets permanent configuration rules for a rate limit key.
019e5d4cpublish message
Sends a message to a destination URL or URL Group, setting custom timing and retries.
019e5d4cremove endpoints
Takes specified endpoints out of an existing URL Group (topic).
019e5d4creset flow control rate
Resets the current usage counter for a rate limit key.
019e5d4cresume flow control
Reactivates a flow control key that was previously paused.
019e5d4cresume queue
Restarts message processing for a queue that had been paused.
019e5d4cresume schedule
Resumes a scheduled background job, allowing it to run again on its next trigger time.
019e5d4cretry dlq message
Attempts to resend a specific message that failed and landed in the DLQ.
019e5d4cunpin flow control
Removes permanent configuration rules from a rate limit key.
019e5d4cupsert queue
Creates a new queue or updates an existing one with defined parameters like parallelism.
019e5d4cupsert url group
Creates a new topic group (URL Group) or updates an existing one's endpoints.
Choose How to Get Started
Build a custom MCP for your own tools, or connect a ready-made integration from our catalog.
Build Your Own
Turn any API into an MCP. Import a spec, define Agent Skills, or deploy with MCPFusion.
- Import from OpenAPI, Swagger, or YAML specs
- Create Agent Skills with progressive disclosure
- Deploy to edge with MCPFusion framework
- Built in DLP, auth, and compliance on every call
- Real time usage dashboard and cost metering
- Publish to catalog or keep private
Make Your AI Do More
Start with QStash (Serverless Message Queue), then connect any of our 4,700+ other servers whenever your AI needs more. One click, no limits.
- Use this MCP plus 4,700+ others, all in one place
- Add new capabilities to your AI anytime you want
- Every connection is secured and compliant automatically
- Track usage and costs across all your servers
- Works with Claude, ChatGPT, Cursor, and more
- New servers added to the catalog every week
What you can do with this MCP connector
Getting Started and Managing Queues
When you need reliable background processing that doesn't rely on brittle cron jobs, this server connects your AI client directly to QStash. You manage the entire message lifecycle—from scheduling to failure recovery—all through natural language commands.
You can check what queues you’ve set up using list_queues, or create a new one or modify an existing queue's parameters and parallelism with upsert_queue. If you need to view the current status of any specific line, use get_queue.
For managing topics (URL Groups), you can list all configured groups using list_url_groups, then check a group’s endpoints configuration via get_url_group; if you gotta build one or update its destinations, use upsert_url_group. You can also remove specific endpoints from a topic using remove_endpoints.
Sending and Controlling Messages
You don't just send messages; you control them. To dispatch a single message with custom timing, retries, or deduplication rules, use publish_message. If you gotta blast out multiple destinations at once, batch_messages sends several messages in one request. You can also cancel specific pending transmissions using cancel_message, or stop a whole bunch of them by filtering and criteria for bulk_cancel_messages.
To ensure tasks run in strict order (FIFO) or with controlled concurrency, use enqueue_message. If you need to send messages to multiple locations without defining full topic groups first, you can also use batch_messages.
System State and Auditing Failure
When things go wrong, your data doesn't just vanish. Failed transmissions land in the Dead Letter Queue (DLQ). You can see a list of every message that failed delivery using list_dlq, grab the full details on one specific failure with get_dlq_message, or manually try sending it again by calling retry_dlq_message.
If you know something's junk, you can remove one item from the DLQ with delete_dlq_message, or wipe out every message in the entire queue at once using bulk_delete_dlq.
To keep your system running smoothly, you can monitor scheduled jobs by listing them all with list_schedules; to check a single job's parameters, use get_schedule. You control these jobs directly: pause one with pause_schedule, or restart it when needed using resume_schedule.
Advanced System Control and Maintenance
You can manage the entire system’s throughput. Check how many keys you have configured by running get_keys, or review all rate limit settings with list_flow_control_keys. To get details on a specific key, use get_flow_control_key.
If usage gets too high, don't sweat it; you can temporarily suspend a key to prevent overuse using pause_flow_control, or reactivate it later with resume_flow_control. You can set permanent rules for any rate limit key using pin_flow_control, and remove those rules by calling unpin_flow_control. If you need to reset the usage counter on a key, use reset_flow_control_rate.
For system-wide oversight, check global concurrency limits with get_global_parallelism, or review all operational history using list_logs; for granular audit data, you can also view historical logs via list_logs.
Putting It All Together: Lifecycle Management
You control the state of every component. You can halt processing on a designated line with pause_queue, or restart it immediately with resume_queue. Similarly, if a scheduled job is running too often, you can pause it using pause_schedule and resume it later with resume_schedule. When you're done testing a queue or topic group, remember that you need to delete the entire resource using delete_queue, delete_url_group, or cleaning up a background job schedule with delete_schedule.
How QStash MCP Works
- 1 First, you subscribe to the server and input your unique QStash Token from the Upstash Console.
- 2 Next, you tell your AI client what you want done—for example, 'Schedule a webhook for 2 hours from now' or 'List all queues'.
- 3 The agent executes the necessary tools (
publish_message,list_queues) and reports the result back to your chat, giving you confirmation and IDs.
The bottom line is: it turns complex API calls for message queuing into natural language commands that execute reliably from anywhere.
Who Is QStash MCP For?
This is for backend developers who hate writing boilerplate retry logic, and DevOps engineers who are tired of clicking through dashboards at 2 am to check queue health. If your job involves reliable data pipelines or scheduled tasks, you need this.
Triggers webhooks and background jobs directly from their code editor using the agent, rather than writing explicit API calls.
Monitors message queues, logs (list_logs), and DLQs without leaving their terminal or chat interface.
Designs and tests complex messaging workflows—like failure fallback paths—using natural language commands for rapid prototyping.
What Changes When You Connect
- Guaranteed delivery paths: Instead of just publishing a webhook, you use
publish_messageto set specific retries and delays. If the first attempt fails, the system handles the backoff, so your code doesn't need complex retry logic. - Full state visibility: You can list every queue (
list_queues) and get detailed status reports for any single one usingget_queue. This means you see if a service is backed up or paused immediately. - Zero data loss management: Failed messages don't vanish. Use
list_dlqto audit them, and when you confirm the fix, useretry_dlq_messageto put the message back on track. It’s built-in failure recovery. - Concurrency control: If one service gets hammered, it can slow down all your services. Tools like
get_global_parallelismlet you monitor and adjust rate limits (reset_flow_control_rate) before hitting a hard wall. - Automated job lifecycle: Stop worrying about cron jobs failing silently. You list schedules with
list_schedules, and if something breaks, you can pause or resume the job directly via the agent.
Real-World Use Cases
Handling a payment webhook failure.
A user needs to process a post-payment event. Instead of letting the API fail and losing the data, they prompt their agent: 'Schedule this payment confirmation hook.' The agent uses publish_message, setting up three retries over 30 minutes. If all attempts fail, the message lands in the DLQ for manual inspection using list_dlq.
Migrating a monolithic task system.
An architect needs to break up old background jobs into reliable queues. They use upsert_queue multiple times, creating dedicated FIFO queues for 'image-processing' and 'email-service'. Then they tell the agent to monitor them using list_queues, validating that parallelism is limited correctly.
Auditing a production outage.
An ops engineer notices processing stopped. They ask their agent: 'What queues are paused, and what failed messages do we have?' The agent runs list_queues and then list_dlq. The engineer uses get_dlq_message to confirm the payload of a single bad message before triggering a mass retry with bulk_retry_dlq.
Testing rate limit impact.
A developer wants to test if their new feature overwhelms an external API. They run get_flow_control_key first to see the current limits, then use pause_flow_control before running a high-volume test. Once done, they use resume_flow_control and reset_flow_control_rate.
The Tradeoffs
Using simple HTTP calls for async tasks
A developer runs a webhook request directly via code, assuming success means completion. If the receiving service is down, the call fails and the process stops until manually fixed.
→
Use publish_message instead. You specify the target URL group and set up automatic retries and delays. The server handles the failure logic for you.
Ignoring failed messages
A job fails repeatedly, the message lands in the DLQ, and then nobody checks it until weeks later when the data is useless.
→
Periodically run list_dlq or ask your agent to do it. Use get_dlq_message to inspect the payload immediately so you can use retry_dlq_message before time runs out.
Manually managing cron jobs
Setting up a job in an external system, and if that system breaks or needs maintenance, the developer has to manually restart it.
→
Use list_schedules to see all current schedules. When necessary, use pause_schedule before maintenance, and then resume_schedule afterward. It's controlled right here.
When It Fits, When It Doesn't
You need this server if reliability is more important than simplicity. Use it when you absolutely cannot afford lost messages or delayed processing that needs automated recovery (e.g., payment webhooks, scheduled reports). If your goal is just 'send a message right now and forget it,' a standard HTTP client works fine. But if the job must run reliably—if failure requires retries, backoff, or manual auditing—you need QStash. Don't use it for simple data fetching; that’s what get_message is for. Use this to send and manage state. If you just want a list of queues, use list_queues; don't try to do the job management with the queue listing tool.
Independent Platform Disclaimer: Vinkius is an independent platform and is not affiliated with, endorsed by, sponsored by, verified by, or otherwise authorized by Upstash QStash. All third-party trademarks, logos, and brand names are the property of their respective owners. Their use on this website is strictly for informational purposes to identify service compatibility and interoperability.
VINKIUS INFRASTRUCTURE
Cloud Hosted
Managed infra
V8 Isolated
Sandboxed per request
Zero-Trust Proxy
No stored credentials
DLP Enforced
Policy on every call
GDPR Compliant
EU data residency
Token Compression
~60% cost reduction
Works with Claude, ChatGPT, Cursor, and more
The Model Context Protocol standardizes how applications expose capabilities to LLMs. Instead of operating in isolation, your AI gains direct access to external platforms, live data, and real-world actions through secure, standardized connections.
This server provides 38 capabilities that interface natively with Claude, ChatGPT, Cursor, and any MCP client. No middleware. No custom integration required.
Available Capabilities
Dealing with failed webhooks feels like playing whack-a-mole.
Today, if a webhook fails because of temporary network hiccups or downstream service errors, you get an immediate failure log. You then have to write code that detects the failure, waits 5 minutes, retries it, and maybe tries again after another hour. That's brittle boilerplate.
With QStash, you just tell your agent what webhook needs publishing, along with the retry count and delay parameters. The server handles the entire lifecycle—the initial attempt, the backoff period, and all subsequent retries. You just get confirmation that it’s scheduled.
QStash MCP Server: Control message flow in your chat.
You used to have to switch between the terminal, a dashboard UI, and then write code just to check if a job was paused or what happened last week. It’s a three-tool dance just for basic monitoring.
Now, you ask your agent: 'List all my queues and tell me which one is paused.' It runs `list_queues` and reads the status directly into your chat window. The entire operational state is visible and actionable from one place.
Common Questions About QStash MCP
How do I schedule a message using publish_message? +
You specify the target destination URL or URL Group, and then define the delay time. The agent handles the formatting of that request for you, letting you set precise timing rules.
What is the difference between list_queues and get_queue? +
list_queues gives you a high-level inventory—a list of every queue name. get_queue dives deep into one specific queue, providing its current status, configuration details, and capacity metrics.
If I use bulk_retry_dlq, does it delete the message after retrying? +
No. The bulk_retry_dlq tool just attempts to resend all messages in the DLQ. If they fail again, they will remain or move to another failure state; you still need to monitor the logs.
Can I pause a queue using the agent? +
Yes. You prompt your agent with the queue name and ask it to pause the processing. It executes pause_queue and immediately confirms that message intake has stopped for that specific service.
How do I ensure messages are processed in order? +
You must use enqueue_message with the appropriate parameters to guarantee FIFO (First-In, First-Out) processing. This ensures sequential execution where order matters.
What happens if I exceed my rate limit when using `publish_message`? +
The system handles excess traffic by throttling your request automatically. You can check and adjust these limits by running list_flow_control_keys. This ensures service stability during high-volume sends.
If I call `delete_queue`, are the messages currently waiting in that queue also deleted? +
Yes, calling delete_queue removes all associated message data and records from that queue. Use this tool with caution; it’s permanent cleanup.
How can my agent retrieve the necessary signing keys before calling tools like `enqueue_message`? +
Your AI client must first use get_keys. This action provides the required credentials and signatures needed for all subsequent write operations, securing your workflow.
How can I schedule a message to be sent later? +
Use the publish_message tool and provide the delay parameter (e.g., '10m' for 10 minutes) or a not_before Unix timestamp.
What happens if a message fails all retry attempts? +
The message is moved to the Dead Letter Queue (DLQ). You can use list_dlq to find it and retry_dlq_message to attempt delivery again.
Can I manage recurring tasks like cron jobs? +
Yes! You can use list_schedules to see existing ones, and pause_schedule or resume_schedule to control them.
Use it with your favorite AI tools
Connect this server to Cursor, Claude, VS Code, and more.
More in this category
Data Sorting & Filtering Engine
Perfect array manipulation. Sort and deduplicate massive JSON lists with native Vinkius Edge JavaScript instead of relying on token-limited LLMs.
GeekJoke
Get random geeky and programming-related jokes to lighten up your development workflow.
SimpleHash (Multi-chain NFT API)
Access comprehensive NFT data across 50+ chains — query wallet holdings, metadata, collection details, and transfer history.
You might also like
EnterpriseAlumni
Equip your AI agent to manage alumni networks, track engagement, and monitor member profiles via the EnterpriseAlumni API.
zrok (Open-Source Tunnel)
Securely share local resources with the world using zrok — manage environments, create public/private shares, and monitor tunnels directly from your AI agent.
Guru
Manage enterprise knowledge cards, track collections, and search your wiki via AI agents with Guru.