What is MCP?
Model Context Protocol (MCP) is an open standard that lets LLM agents discover and call tools across services. An MCP server exposes a set of named tools with typed schemas; the agent reads the schemas, decides which tools to call, and chains them together to solve a task.
The @chekt/mcp package is the CHeKT MCP server. It wraps the Public API in MCP tool definitions tuned for LLMs — clear names, descriptive parameter docs, and structured responses that don't waste tokens.
How a prompt becomes an API call
When an operator types a prompt into Claude or ChatGPT, the agent breaks it down into discrete tool calls. The MCP server translates each call into authenticated HTTPS requests to CHeKT. Results flow back as structured JSON for the agent to reason over.
- 01OperatorLLM agentPlain-English prompt"Acknowledge motion alarms at warehouses"
- 02LLM agentCHeKT MCP serverTool callchekt.alarms.list(filter=...)
- 03CHeKT MCP serverCHeKT APIAuthenticated HTTPAuthorization: Bearer <app-key>
- 04CHeKT APICHeKT MCP serverJSON responseAlarms matching filter
- 05CHeKT MCP serverLLM agentTool resultStructured for LLM consumption
- 06LLM agentOperatorNatural replyPlus follow-up tool calls as needed
Set up MCP
You need three things: an MCP-capable client (Claude Desktop, ChatGPT Desktop, Cursor, or your own agent), a CHeKT App with an API key, and 60 seconds.
Claude Desktop
Open Claude Desktop's settings file and add the chekt server. Claude handles the rest on startup.
{
"mcpServers": {
"chekt": {
"command": "npx",
"args": ["-y", "@chekt/mcp"],
"env": {
"CHEKT_API_KEY": "your-app-api-key"
}
}
}
}Restart Claude and you'll see the CHeKT tools listed in the tools menu. Try a prompt: "What alarms fired in the last hour?"
Other MCP clients
Any client that speaks MCP works. The @chekt/mcp binary follows the standard stdio transport — point your client at it with the CHEKT_API_KEY env var, and you're done.
Available tools
Nine tools cover the most common operator and developer workflows. We add more as the MCP protocol matures and as partners request them.
chekt.alarms.list- List alarms with optional filters (status, site, priority).
chekt.alarms.get- Get full details for a specific alarm.
chekt.alarms.acknowledge- Acknowledge an alarm. Requires alarms:write.
chekt.alarms.dispatch- Dispatch a responder. Requires alarms:write.
chekt.devices.list- List devices with type and status filters.
chekt.devices.snapshot- Capture a fresh snapshot from a device.
chekt.sites.list- List sites for the current dealer.
chekt.partitions.arm- Arm a partition. Requires sites:write.
chekt.partitions.disarm- Disarm a partition. Requires sites:write.
A real session
Here's an annotated trace of a real Claude session combining multiple CHeKT MCP tools to handle a typical morning-shift triage task.
You: Show me all unacknowledged high-priority alarms at the East Bay sites
today, and acknowledge any motion alarms with confidence > 80%.
Claude: I'll do that in a few steps.
→ chekt.sites.list(filter="East Bay")
Found 3 sites: East Bay HQ, East Bay Warehouse, East Bay Lot.
→ chekt.alarms.list(
sites=[3 IDs],
status="new",
priority="high",
since="today",
)
Found 7 alarms.
→ chekt.alarms.get(id="A-10293")
Trigger=motion. Confidence=0.92.
→ chekt.alarms.acknowledge(
id="A-10293",
reason="AI verified motion, confidence=0.92",
)
Acknowledged.
... (repeats for 4 more high-confidence motion alarms)
Done. Acknowledged 5 of 7. The remaining 2 are panic-button events —
I left them open for human review.Safety & audit
Agents calling production monitoring systems demand discipline. We bake three guardrails into the MCP server so you don't have to.
Why MCP matters for CHeKT
The next wave of partners won't write SDKs — they'll write prompts. With MCP and the CLI, the CHeKT ecosystem is open to anyone who can describe what they want, even without traditional development skills. Small ops teams, individual security contractors, and AI-native businesses can all build on CHeKT.
At the same time, every action still runs through the same authenticated, audited surface. No special "AI mode" — just the same API with a thinner client on top.