
keel-grc/keelgrc-mcp
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
A for Keel. Point any MCP client (Claude Desktop, Claude Code, Cursor) at it and drive your compliance program in natural language: "what's my ISO 27001 readiness?
概要
A for Keel. Point any MCP client (Claude Desktop, Claude Code, Cursor) at it and drive your compliance program in natural language: "what's my ISO 27001 readiness?", "list controls still in gap", "open a task to rotate our TLS certs." Docs: https://docs.keelgrc.com/api-mcp/mcp-server/ · Open source: https://keelgrc.com/open-source/ It's a thin wrapper over the Keel public API (/api/v1). Every action maps to a real endpoint and is scoped to your API key's organization. The MCP grants no more access than the key already has. One tool per resource, with an action argument. Thirteen tools cover forty-five operations; the alternative is a tool per operation, and MCP clients degrade badly past roughly a hundred tools. Some actions are absent. Each is a gap in the REST surface, and each is stated in the tool description so a model reads an answer rather than a hole: - keel_tasks has no . Keel has no delete-a-task operation anywhere, the app included.
README
以下は原文 README の抜粋です。原文を見る。
keelgrc-mcp
A Model Context Protocol (MCP) server for Keel. Point any MCP client (Claude Desktop, Claude Code, Cursor) at it and drive your compliance program in natural language: “what’s my ISO 27001 readiness?”, “list controls still in gap”, “open a task to rotate our TLS certs.”
Docs: · Open source:
KEEL_API_KEY=your_key npx keelgrc-mcp
It’s a thin wrapper over the Keel public API (/api/v1). Every action maps to a real
endpoint and is scoped to your API key’s organization. The MCP grants no more access
than the key already has.
Tools
One tool per resource, with an action argument. Thirteen tools cover forty-five
operations; the alternative is a tool per operation, and MCP clients degrade badly
past roughly a hundred tools.
| Tool | Actions | Maps to |
|---|---|---|
keel_whoami |
(none) | GET /me |
keel_members |
(none) | GET /members |
keel_frameworks |
(none) | GET /frameworks |
keel_readiness |
(none) | GET /readiness |
keel_controls |
list, get, create, update, delete, mappings, map, unmap | /controls, /controls/{id}, /controls/{id}/crosswalks |
keel_starter_controls |
(none) | POST /frameworks/{key}/starter-controls |
keel_tasks |
list, get, create, update | /tasks, /tasks/{id} |
keel_risks |
list, get, create, update, delete | /risks, /risks/{id} |
keel_vendors |
list, get, create, update, delete | /vendors, /vendors/{id} |
keel_people |
list, get, create, update, delete | /people, /people/{id} |
keel_policies |
list, get, create, update, delete | /policies, /policies/{id} |
keel_evidence |
list, get, create, update, delete | /evidence, /evidence/{id} |
keel_webhooks |
list, create, rotate, delete | /hooks, /hooks/{id}, /hooks/{id}/rotate |
Some actions are absent. Each is a gap in the REST surface, and each is stated in the tool description so a model reads an answer rather than a hole:
keel_taskshas no delete. Keel has no delete-a-task operation anywhere, the app included. Update the status tocancelledinstead, which keeps the record.keel_controlscreatetakes no state, owner or mappings. It takes a name, a description and an optionalkeyof your own, which is all the app’s “Add a control” form takes. A new control startsnot_started, unowned and unmapped: setstateandownerEmailwithupdate, and clauses withmap, which attaches any control to any clause of an applied framework.- Applying a framework is not here. It is plan-metered and happens in the app;
keel_starter_controlsandmaprefuse a framework the workspace has not applied. keel_webhookshas no get or update. The API has neither. List them to read one, and replace a subscription by deleting it and creating another.
インストール
npx -y keelgrc-mcp設定
{
"mcpServers": {
"keel": {
"command": "npx",
"args": ["-y", "keelgrc-mcp"],
"env": { "KEEL_API_KEY": "keel_live_..." }
}
}
}