Bumblewick Support-Desk MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bumblewick Support-Desk MCP ServerLook up customer Ivy's information and latest orders."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bumblewick Support-Desk MCP Server 🕯️
The example project for the "Give the Robot Hands" series — a small, safe, well-tested Model Context Protocol server for a fictional online candle shop, Bumblewick & Co.
It gives an AI assistant carefully-scoped "hands": it can look up orders, read a customer's file, search the help centre, and issue refunds — with every dangerous action fenced in by server-side rules. No real people, no real money.
Everything runs locally against a seeded SQLite database. Nothing leaves your machine.
What it exposes
Tools
find_orders(query)— look up orders by order id, customer id, or email (read-only)get_order(order_id)— one order, its refund history, and the refundable balance (read-only)search_help(query)— search the help centre (read-only)create_refund(order_id, amount_cents, reason, confirm=false, idempotency_key=None)— issue a refund (guarded write)
Resources
bumblewick://policy/refunds— the refund policy, as contextbumblewick://customer/{customer_ref}— a customer file (profile + orders)
Prompts
draft_apology(order_id, tone="warm")— a reusable support-reply template
Related MCP server: Commerce Operations MCP Server
The safety rules (a.k.a. "don't give the robot a chainsaw")
create_refund refuses to misbehave, server-side:
Only shipped/delivered orders are refundable.
Never more than the remaining refundable balance (no over-refunds).
Amounts over the auto-approve limit return
needs_confirmationand do not execute until you re-call withconfirm=true(human-in-the-loop).A per-customer rate limit caps refunds within a rolling window.
An idempotency key makes retries safe — the same key returns the original refund, and reusing a key with different parameters is rejected (never a silent wrong-refund).
The check-and-write runs in one atomic transaction (
BEGIN IMMEDIATE), so two concurrent refunds can't both slip past the balance check.A non-empty reason is required, and every decision is written to an audit log on stderr (stdout is reserved for the JSON-RPC stream).
Quick start
# 1. Install (any of: pip, uv, poetry)
pip install -e ".[dev]"
# 2. Run the tests
pytest
# 3. Explore it in the MCP Inspector (opens a GUI to poke every tool)
mcp dev src/bumblewick_support/server.py
# 4. Or run it over stdio (for a client like Claude Desktop)
python -m bumblewick_support.serverFirst run seeds bumblewick.db with sample customers, candle orders, and help
articles. Delete the file to reset.
Connect it to Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"bumblewick": {
"command": "python",
"args": ["-m", "bumblewick_support.server"]
}
}
}Then ask: "Find Ivy's orders and refund the Vanilla Doom candle." Watch it use
find_orders, get_order, and create_refund — and watch it get politely
stopped when it tries to refund something it shouldn't.
Configuration
All settings are environment variables (prefix BUMBLEWICK_); see .env.example.
Variable | Default | Meaning |
|
| SQLite file path |
|
| auto-approve ceiling; above needs |
|
| max refunds per customer per window |
|
| rate-limit window |
Project layout
src/bumblewick_support/
server.py # thin MCP layer: tools, resources, prompts
services.py # SupportDesk — all business logic (testable, no MCP)
safety.py # pure refund-policy engine
db.py # SQLite data access
models.py # pydantic domain models
seed.py # deterministic sample data
config.py # env-driven settings
tests/ # pytest: safety, services, and server smoke testsThe golden rule the series teaches: keep the business logic out of the MCP
layer. server.py only wires things up; everything worth testing lives in
services.py and safety.py, so it's testable without a client.
License
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect AI to store orders, products and inventory with scoped access and human approvals.
The system of record for AI agent authority: playbooks, routed policy questions, reusable rules.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Deterministic runtime safety for AI agents: scan PII, gate tool actions, verify LLM output.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to handle payment support tasks by orchestrating between Stripe and an internal orders database, with human approval required for refunds.-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to independently investigate and resolve e-commerce order issues, particularly refund processing, with tools for order search, refund eligibility checks, and safe refund execution.-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to retrieve customer, order, ticket, policy, and agreement information, and to prepare or execute state-changing support actions like escalations and follow-ups with confirmation and access control.-
- AlicenseNot gradedqualityCmaintenanceEnables secure support-ticket and customer-account operations with signed JWT authentication, prompt-injection and tool-poisoning guardrails, and human-in-the-loop confirmation for destructive actions.MIT