MCP Server
Connect Claude, GPT, or any AI assistant to your ProBeya boards, KPIs, and actions via the Model Context Protocol.
You: "What's the status of Packaging Line 3?"
Claude: [calls list_kpis, list_actions, get_board]
"Packaging Line 3 has 2 KPI alerts:
- OEE at 72.5% (target: 85%, RED)
- Batch cycle time at 4.2h (target: 3.5h, AMBER)
3 overdue actions, highest priority:
- 'Investigate yield deviation on BX-2026-0412' (3 days overdue, T1)
Recommendation: Escalate the yield investigation to T2. The OEE
drop correlates with the batch hold on April 10."
ProBeya ships an MCP server that gives AI assistants structured, authenticated access to your operational data. Same security, same tenant isolation, same audit trail as the web app.
Choose your transport
| Transport | Best for | Connection |
|---|---|---|
| stdio | Claude Desktop, Claude Code, VS Code | Process spawning (local) |
| Streamable HTTP | Remote AI agents, custom LLM apps | POST https://app.probeya.com/api/mcp |
Quick setup
Get an API key
Go to Settings > API Keys > Create API Key in ProBeya. Copy the key.
Edit your config
Open Claude Desktop settings and edit claude_desktop_config.json:
{
"mcpServers": {
"probeya": {
"command": "npx",
"args": ["@probeya/mcp"],
"env": {
"PRPROBEYA_API_KEY": "probeya_sk_live_a1b2c3d4...",
"DATABASE_URL": "postgresql://probeya:probeya_secret@localhost:5433/probeya"
}
}
}
}
Verify
Restart Claude Desktop. You should see a hammer icon indicating the ProBeya tools are connected. Try:
“List my workspaces in ProBeya”
Tools (19)
Every tool has Zod-validated inputs, structured output schemas, and tool annotations (readOnly, destructive, idempotent).
Navigation
| Tool | Description | Scope |
|---|---|---|
list_workspaces | All workspaces in the org | read:items |
list_projects | Projects in a workspace | read:items |
get_board | Full board: groups, columns, items, values | read:items |
list_members | Organization members with roles | read:items |
search | Search items, projects, workspaces by keyword | read:search |
Item CRUD
| Tool | Description | Scope |
|---|---|---|
create_item | Create an item on a board | write:items |
update_item | Update name or assignee | write:items |
delete_item | Delete item (asks for confirmation via elicitation) | write:items |
move_item | Move item to a different group (change status) | write:items |
set_item_values | Set cell values (status, priority, dates, etc.) | write:items |
add_comment | Add a comment to an item | write:items |
KPIs
| Tool | Description | Scope |
|---|---|---|
list_kpis | KPI definitions with latest values and targets | read:kpis |
set_kpi_value | Record a KPI measurement | write:kpis |
get_kpi_alerts | KPIs breaching red/amber thresholds | read:kpis |
Actions
| Tool | Description | Scope |
|---|---|---|
list_actions | Actions with status, tier, category, overdue filters | read:actions |
create_action | Create action with tier-based escalation | write:actions |
update_action | Update status, assignee, priority | write:actions |
escalate_action | Escalate: T1 (team) to T2 (dept) to T3 (site) | write:actions |
AI-Powered
| Tool | Description | Scope |
|---|---|---|
analyze_board | Uses LLM sampling to analyze board health | read:items |
get_dashboard_stats | Organization-level completion rates and counts | read:dashboard |
Resources (4)
Resources are read-only data the AI can browse without calling a tool:
| URI | Description |
|---|---|
probeya://dashboard | Org stats, status distribution, priority breakdown |
probeya://members | All members with roles |
probeya://board/{boardId} | Full board data (with list callback for discovery) |
probeya://project/{projectId} | Project overview with board summary |
Prompts (5)
Pre-built prompt templates for common pharma workflows:
| Prompt | What it does | Input |
|---|---|---|
daily_standup | Summarize overdue actions, KPI alerts, blockers | boardId |
board_analysis | Analyze bottlenecks, workload balance, flow | projectId |
escalation_report | Tier escalation report for management review | boardId |
kpi_review | Weekly SQCDP KPI review with trend analysis | boardId |
capa_analysis | CAPA analysis for GxP regulatory compliance | boardId |
Authentication and security
MCP connections are authenticated with the same API keys as the REST API, plus an optional MCP-specific key type with extra controls:
| Key type | Prefix | Extra features |
|---|---|---|
| REST API key | probeya_sk_live_ | Scopes only |
| MCP API key | probeya_mcp_live_ | + Allowed tools list, allowed resources, monthly token budget |
Security layers
AI Client (Claude, GPT, custom)
|
| API key in env (stdio) or Authorization header (HTTP)
v
MCP Server — Key verification (bcrypt)
| Scope enforcement (read:items, write:kpis, etc.)
| MCP key: tool permission check
| MCP key: resource permission check
| MCP key: token budget enforcement
v
tRPC Routers — organizationId from API key (tenant isolation)
| Zod input validation
| Activity logging (audit trail)
v
PostgreSQL — RLS policies (defense-in-depth)
Destructive tools like delete_item use MCP elicitation to ask the human for confirmation before executing. If the AI client does not support elicitation, the operation proceeds without confirmation.
Example conversation
Here is a real interaction showing how Claude uses ProBeya tools:
User: "I need to prepare for the morning SQCDP standup for Packaging Line 3.
What should I know?"
Claude: Let me gather the data.
[calls get_kpi_alerts with boardId: "clx_board_packaging_line_3"]
[calls list_actions with boardId: "clx_board_packaging_line_3", overdue: true]
[calls get_board with projectId: "clx_proj_packaging"]
"Here's your standup brief for Packaging Line 3:
**Safety (S)**
- No incidents in the last 24 hours
- 1 near-miss report filed yesterday (forklift zone B) — action assigned to J. Dupont
**Quality (Q)** — 1 RED ALERT
- Right First Time at 98.1% (target 95%) — GREEN
- Batch BX-2026-0412 on hold pending yield investigation — ACTION OVERDUE (3 days)
**Cost (C)**
- Scrap rate at 2.1% (target 3%) — GREEN
**Delivery (D)** — 1 RED ALERT
- OEE at 72.5% (target 85%) — RED, down from 81% last week
- Batch cycle time at 4.2h (target 3.5h) — AMBER
**People (P)**
- 2 training certifications expiring this week
- Team mood: 3.8/5 (stable)
**Recommended escalations:**
1. Escalate 'Yield deviation BX-2026-0412' from T1 to T2 — 3 days overdue, OEE impact confirmed
2. Schedule maintenance review for conveyor segment 4B — linked to cycle time increase"
User: "Escalate the yield investigation to T2."
Claude: [calls escalate_action with id: "clx_act_yield_investigation", reason: "3 days overdue, OEE impact -12.5%"]
"Done. The yield investigation for batch BX-2026-0412 has been escalated to
T2 (Department level). The Quality Manager has been notified."
Advanced features
Architecture
Claude Desktop / Claude Code / Remote AI Agent
|
| stdio (local) or Streamable HTTP (remote)
v
MCP Server (McpServer v2.0.0)
| Scope enforcement — withScope() wrapper
| MCP key enforcement — tool/resource/budget checks
| Zod validation — input + output schemas
| Structured logging — sendLoggingMessage
v
tRPC Routers (appRouter.createCaller)
| organizationId filtering — tenant isolation
| Activity logging — full audit trail
v
PostgreSQL (RLS-scoped transaction)
The MCP server is a thin adapter. All business logic, validation, authorization, and audit trail are handled by the same tRPC routers that power the web app. This means MCP operations are exactly as secure and auditable as UI operations.