
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_..." }
}
}
}