Bumblewick Support-Desk MCP Server
Click on "Install 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: Agent Billy 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Saveanu-Robert/bumblewick-support-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server