Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Rheintal Pumpen

FreeNot checked

Reference MCP server simulating a B2B manufacturing company with role-based access, audit logging, and 13 business tools.

GitHubEmbed

About

Reference MCP server simulating a B2B manufacturing company with role-based access, audit logging, and 13 business tools.

README

A public MCP server that simulates a fictional German B2B mid-market company – with role-based access control, audit logging, and a clean architecture you can study.

Connectable to Claude Desktop, a local LibreChat instance, or your own applications.

License: MIT Python 3.11+

What is this?

A demonstration of how standardised AI tool integration can look in a mid-market company. Behind the MCP server sits a fictional firm, Rheintal Pumpen GmbH in Mainz, Germany – an industrial-pump maker with ~180 employees, 60 customers, 250 orders, plus complaints and service tickets.

Bring-your-own-key, self-hostable, MIT licensed.

Why is the company name German? Rheintal Pumpen GmbH is the story of the demo (a German Mittelstand company). Everything around it – code, tool descriptions, status enums, documentation – is in English.

Two ways to try it

Full local demo: LibreChat (15 minutes)

git clone https://github.com/dataAiOliver/rheintal-pumpen-mcp.git
cd rheintal-pumpen-mcp
make up

make up does everything in one step: creates .env from .env.example, generates the SQLite database if it doesn't exist, and starts LibreChat + MCP + MongoDB + Meilisearch via Docker Compose.

The first run prints a hint telling you where to put your OpenAI or Anthropic key in .env. After that, run make up again and you're set.

Open http://localhost:3080 → register → start chatting.

You also get the built-in MCP Inspector at http://localhost:8765/: tool list, JSON schemas, sample calls. Machine-readable as /tools.json.

Live Activity at http://localhost:8765/activity: every tool call pops up live as a card with role, arguments and result. Nice demo punch line – stakeholders see in real time that the LLM is operating audit-ably.

docs/quickstart-local.md

Your own server (30 minutes)

make deploy SERVER=user@host

Prerequisites: a Linux server with Docker, your own domain, ports 80/443 open. Traefik takes care of TLS via Let's Encrypt.

docs/quickstart-own-server.md

Verifying the customer setup

After make up you can spot-check the stack:

make smoke-test        # HTTP probes: /healthz, /tools.json, LibreChat root
make up-verify         # 'make up' followed by smoke-test

To prove that the entire customer journey works on a clean Linux box – without trusting your own pre-installed Docker, make, etc. – run the DinD harness:

make test-fresh-ubuntu

It spawns a privileged ubuntu:24.04 container, runs scripts/install-prereqs.sh to install Docker + make + git + curl + jq + python3 from apt, starts an inner Docker daemon, performs make up, and runs the smoke test. Takes 4–7 minutes (the LibreChat image pull dominates) and is fully self-cleaning. See scripts/.

Try these prompts

  1. "Which customers have open invoices over 10,000 EUR?"
  2. "Show me all complaints from the last quarter."
  3. "Which submersible pumps with a stainless steel housing are in stock?"
  4. "What was the largest order in Q1, and how was it shipped?"
  5. "List the top 5 customers by revenue."
  6. "Which service tickets have been open for more than 7 days?"
  7. "Show me the order history of customer RH-K-00012."

docs/demo-scenarios.md

Architecture

┌──────────────┐  HTTP/SSE   ┌──────────────────────┐
│ Claude       │◄──────────► │ MCP server           │
│ Desktop      │             │  (Python, mcp SDK)   │
│ LibreChat    │             │                      │
│ Custom app   │             │  Tools  Auth  Audit  │
└──────────────┘             │           │          │
                             │           ▼          │
                             │      SQLite (mock)   │
                             └──────────────────────┘

docs/architecture.md

What is demonstrated

  • MCP tool definitions with Pydantic schemas
  • Role-based access control (sales, service, accounting, admin)
  • Audit logging suitable for AI-Act / GDPR-style traceability
  • Bring-your-own-key architecture
  • Self-hosting with Docker Compose
  • Clean separation of transport / logic / data
  • Documented migration path SQLite → Postgres

Available MCP tools

Tool Roles Description
lookup_customer sales+ Look up a customer by ID or company name
list_customer_orders sales+ Orders of one customer
list_top_customers_by_revenue sales+ Top-N customers, aggregated in a single call
get_order_details sales+ Order incl. line items
get_invoice sales+ One invoice
list_open_invoices accounting, admin Open/overdue invoices incl. customer name
get_delivery_status sales+ Delivery and tracking status
search_products all Product search
get_product_details all Product master data
list_complaints service, admin Filter complaints
get_audit_log admin Inspect the audit log
create_service_ticket service, admin write, requires confirm: true
flag_invoice_for_review accounting, admin write, requires confirm: true

Architecture Decision Records

Licence

MIT. Use it. Fork it. Build on top.

About the author

Oliver Köhn – AI architect for the German Mittelstand.

LinkedIn · Contact

from github.com/dataaioliver/rheintal-pumpen-mcp

Installing Rheintal Pumpen

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/dataaioliver/rheintal-pumpen-mcp

FAQ

Is Rheintal Pumpen MCP free?

Yes, Rheintal Pumpen MCP is free — one-click install via Unyly at no cost.

Does Rheintal Pumpen need an API key?

No, Rheintal Pumpen runs without API keys or environment variables.

Is Rheintal Pumpen hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Rheintal Pumpen in Claude Desktop, Claude Code or Cursor?

Open Rheintal Pumpen on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Rheintal Pumpen with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs