nimbus-ops
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., "@nimbus-opsCheck if Acme Corp was double-charged and propose a refund if so."
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.
Nimbus Operations Copilot
An AI agent that resolves customer-operations requests end to end — it gathers facts across the help center, customer database, billing, and ticketing, proposes the policy-correct action, and (after a human approves) takes it. Every step is traced.
Project 3 (capstone) of a 12-week Forward Deployed Engineer portfolio. Headline skills: multi-step agents + MCP (Model Context Protocol) with production guardrails — human-in-the-loop, observability, and evals.
Read the problem framing first: CASE_STUDY.md.
In plain English
Imagine a customer-support rep at a software company. To answer one question — "was this customer charged twice, and can we refund it?" — they normally have to dig through four different systems: the help articles, the customer list, the billing records, and the support-ticket tool. It's slow and easy to get wrong.
This project is an AI assistant that does that digging for them. You ask a question in plain English, and it:
Looks things up on its own — it searches the help docs, finds the customer, and checks their invoices, one step at a time, just like a person would.
Explains what it found, quoting the real records and the company's policy (it never makes facts up).
Asks permission before changing anything. If it wants to issue a refund or open a ticket, it stops and waits — a human clicks Approve or Deny first. It literally cannot change data on its own.
Keeps a record of everything it did, so you can always check its work.
Think of it as a careful new assistant: great at gathering information and suggesting the right action, but it always checks with you before doing anything that can't be undone. That "always ask before acting" safety is the most important idea in the project — and there's a test suite proving the assistant never acted without approval.
(The rest of this README is the technical detail behind that.)
Related MCP server: Gorgias MCP Server
Why this is the capstone
Projects 1 and 2 answered questions (from docs, then from data). This one takes action — a real agent that plans across systems, exposed through an MCP server (the industry-standard way to connect an agent to a client's tools), with the safety and observability a client would actually require.
How it works
The agent plans across tools to gather facts, then pauses for human approval before any write — reads run freely, writes are gated:
flowchart TD
A["👤 Ops rep asks in plain English"] --> B["🖥️ React console"]
B -->|"stream of steps (SSE)"| C["🤖 Agent · Claude"]
subgraph MCP["🔌 MCP server — Nimbus systems"]
direction TB
READ["read tools<br/>docs · customers · invoices · tickets · usage"]
WRITE["write tools<br/>issue_refund · create_ticket"]
end
C -->|"plan and call read tools"| READ
READ --> DB[("🗄️ Postgres + help docs")]
READ -->|"facts"| C
C --> G{"wants to write?"}
G -->|"🔒 needs approval"| H["👤 Rep approves or denies"]
H -->|"approve"| WRITE
H -->|"deny"| C
WRITE --> DB
C -->|"answer + steps"| B
C -.->|"every LLM and tool call"| L["🔭 Langfuse trace"]
classDef agent fill:#052e2b,stroke:#10b981,color:#d1fae5;
classDef gate fill:#3a2a06,stroke:#f59e0b,color:#fde68a;
class C agent
class G gate
class H gateStack
Agent: Python + Claude API (multi-step tool-use loop)
Integration layer: FastMCP — an MCP server wrapping Nimbus's "systems"
Data: PostgreSQL (
nimbusdb) — customers, invoices, tickets, usage, help docs (RAG)Safety: human-in-the-loop approval for any write (refund, ticket)
Observability: Langfuse tracing of every LLM + tool call
API/UI: FastAPI (SSE streaming) + React ops console
Setup
# 1. Ops database
createdb nimbus
psql nimbus -f db/schema.sql
psql nimbus -f db/seed.sql
# 2. Python env
python3.11 -m venv .venv && .venv/bin/pip install -r requirements.txt
# 3. Configure
cp .env.example .env # add your ANTHROPIC_API_KEYEvals
10 realistic ops tasks (billing, account, docs, writes, and a safety trap) scored on two axes — full report in evals/REPORT.md:
Correctness 10/10 — right tools called, right action proposed, facts grounded in tool results.
Safety: 2 writes proposed · 0 executed without approval — the suite runs with every write denied, verifying the agent only ever gates a write, never runs one autonomously.
.venv/bin/python -m evals.evaluate # writes evals/REPORT.mdAgent runs are non-deterministic (correctness varies slightly run to run); the safety property holds every run by construction — a write can only execute after human approval.
Deploy
The Dockerfile builds one container that serves the React console and the agent API from FastAPI (the MCP server runs in-process). Target: GCP Cloud Run + Cloud SQL — step-by-step commands in DEPLOY.md.
Try the tools in Claude Desktop (optional)
The MCP server runs standalone, so you can plug it into Claude Desktop and watch Claude call the Nimbus tools directly — the "aha" of MCP.
Open
~/Library/Application Support/Claude/claude_desktop_config.json(create it if missing) and paste the contents ofclaude_desktop_config.example.json.Restart Claude Desktop. You'll see nimbus-ops tools appear (the 🔌 icon).
Ask: "Was Acme Corp double-charged in July? If so, what does the refund policy say?" — Claude will call
get_customer,list_invoices, andsearch_docson its own.
Milestones
1. Client brief + skeleton + seeded ops database
2. MCP tool server — 6 read tools (docs/DB) + 2 write tools (refund/ticket), read/write-annotated
3. Agent loop — Claude plans across the MCP read tools multi-step; streams steps (SSE)
4. Human-in-the-loop — agent pauses on writes;
POST /api/approvegates each refund/ticket5. Observability — Langfuse traces every LLM + tool call (nested, with token cost)
6. Ops console (React) — watch the agent's steps stream in, approve/deny writes inline, link to the trace
7. Evals — 10 ops tasks scored for correctness (10/10) and safety (0 writes executed without approval)
8. Ship — Dockerized (one container), GCP deploy guide (DEPLOY.md), full case study
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.
Related MCP Servers
Flicense-qualityCmaintenanceMCP server for Intempt GrowthOS — AI content generation, brand management, knowledge base, and user/account lookup through natural language.- AlicenseAqualityCmaintenanceAn MCP server that exposes the full Gorgias helpdesk API to AI assistants, enabling ticket management, analytics, and customer operations through natural language.1007662MIT
- Alicense-qualityBmaintenanceAI customer support MCP server with order status lookup and RAG-powered knowledge base search for e-commerce stores.MIT
- Flicense-qualityCmaintenanceA governed MCP server for integrating AI agents with customer data, featuring role-based access control, field redaction, and human-in-the-loop approval for secure support operations.1
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
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/vasanthadevi/ops-copilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server