-
Notifications
You must be signed in to change notification settings - Fork 1
docs: add Kosli MCP server integration page #359
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+132
−1
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
c8e8059
docs: add Kosli MCP server integration page
dangrondahl 4aa6502
docs: clarify execute_* tools and consolidate org default
dangrondahl 5ec87fa
docs: trim mcp server tool mechanics to what readers act on
dangrondahl ebc82ad
docs: clarify node requirement applies to mcpb installs
dangrondahl 06cb708
fix: mcpb installs do not require node, claude desktop bundles it
dangrondahl eba5640
docs: add missing period in mcp server prerequisites
dangrondahl File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,126 @@ | ||
| --- | ||
| title: MCP server | ||
| description: Connect AI assistants such as Claude Code and Claude Desktop to the Kosli API using the Model Context Protocol. | ||
| tag: "BETA" | ||
| --- | ||
|
|
||
| The Kosli MCP server is a [Model Context Protocol](https://modelcontextprotocol.io) server that exposes the Kosli API to AI assistants. Once it is connected, you can ask questions like _"which environments are non-compliant, and why?"_ and the assistant calls the relevant Kosli endpoints to answer. | ||
|
|
||
| It is published from [`kosli-dev/mcp-server`](https://github.com/kosli-dev/mcp-server) and distributed as an npm package (`@kosli/mcp-server`) and as a `.mcpb` bundle for Claude Desktop. | ||
|
dangrondahl marked this conversation as resolved.
|
||
|
|
||
| <Warning> | ||
| The Kosli MCP server is in beta. Tool names, parameters, and behavior may change between releases. Pin a version if you need stability: `npx -y @kosli/mcp-server@0.5.0`. | ||
| </Warning> | ||
|
|
||
| <Note> | ||
| This server reads the data in your Kosli organization. To let an AI assistant search this documentation instead, see [AI access to these docs](/understand_kosli/ai_docs_access). The two are complementary, and you can connect both. | ||
| </Note> | ||
|
|
||
| ## How it works | ||
|
|
||
| Rather than ship one tool per Kosli endpoint, the server generates a catalog of actions from Kosli's OpenAPI spec and exposes three generic tools: | ||
|
|
||
| | Tool | Purpose | | ||
| |------|---------| | ||
| | `search_actions` | Fuzzy-search the catalog for relevant actions by natural-language query. | | ||
| | `execute_read_action` | Invoke any `GET` action by ID. Auto-allowed in MCP clients. | | ||
| | `execute_write_action` | Invoke any `POST`, `PUT`, `PATCH`, or `DELETE` action by ID. Gated behind user approval. | | ||
|
|
||
| These are the tool names your client shows as the assistant works, and the name in the prompt when it asks you to approve a write. | ||
|
dangrondahl marked this conversation as resolved.
dangrondahl marked this conversation as resolved.
|
||
|
|
||
| <Warning> | ||
| `execute_write_action` creates, modifies, and deletes real resources in your Kosli organization. MCP clients gate these calls behind an approval prompt, and that prompt is the only checkpoint before the call is made. An assistant may choose the wrong action, or the right action with the wrong parameters, so read the action ID and parameters before approving. Treat deletions and anything touching service accounts or API keys with particular care. | ||
| </Warning> | ||
|
|
||
| ## Prerequisites | ||
|
|
||
| - Node.js v22 or higher, for the `npx`-based install methods. You do not need it for the `.mcpb` bundle, because Claude Desktop ships its own Node runtime. | ||
| - A Kosli API key. Use a [personal API key](/user/personal_api_keys) when you run the server on your own machine, or a [service account key](/administration/authentication/service_accounts) for automation. | ||
| - An MCP-capable client, such as Claude Code or Claude Desktop. | ||
|
|
||
| ## Install | ||
|
|
||
| <Tabs> | ||
| <Tab title="Claude Code"> | ||
| Run this from your project directory, or add `--scope user` to install it globally: | ||
|
|
||
| ```bash | ||
| claude mcp add kosli \ | ||
| -e KOSLI_API_TOKEN=your-token \ | ||
| -e KOSLI_ORG=your-org \ | ||
| -- npx -y @kosli/mcp-server | ||
| ``` | ||
| </Tab> | ||
| <Tab title="Claude Desktop (.mcpb)"> | ||
| Download the latest `.mcpb` file from the [releases page](https://github.com/kosli-dev/mcp-server/releases) and drag it into Claude Desktop, or double-click it to install. Claude Desktop prompts you for your API key and organization, and stores the secrets in your operating system keychain. | ||
|
|
||
| This is the recommended method for Claude Desktop. | ||
|
|
||
| <Note> | ||
|
dangrondahl marked this conversation as resolved.
|
||
| Extensions installed from a file show an "unverified by Anthropic" warning and do not auto-update, so you need to download and reinstall new versions manually. Both limitations go away once the extension is listed in Anthropic's [Connectors Directory](https://claude.com/docs/connectors/building/submission). | ||
|
dangrondahl marked this conversation as resolved.
|
||
| </Note> | ||
| </Tab> | ||
| <Tab title="Claude Desktop (manual)"> | ||
| Add the following to `claude_desktop_config.json`, which you can open from **Settings → Developer → Edit Config**: | ||
|
|
||
| ```json | ||
| { | ||
| "mcpServers": { | ||
| "kosli": { | ||
| "command": "npx", | ||
| "args": ["-y", "@kosli/mcp-server"], | ||
| "env": { | ||
| "KOSLI_API_TOKEN": "your-token", | ||
| "KOSLI_ORG": "your-org" | ||
| } | ||
| } | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| This method auto-updates through `npx` on each restart, but stores your API key in plain text. | ||
| </Tab> | ||
| <Tab title="Other MCP clients"> | ||
| The server communicates over stdio. Point any MCP-capable client at the package with `npx -y @kosli/mcp-server` and set the environment variables below. | ||
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ## Configuration | ||
|
|
||
| The server reads its configuration from environment variables. | ||
|
|
||
| | Variable | Required | Default | Notes | | ||
| |----------|----------|---------|-------| | ||
| | `KOSLI_API_TOKEN` | yes | - | `KOSLI_API_KEY` is accepted as a fallback. | | ||
| | `KOSLI_ORG` | yes | - | Default org. Used as the `org` path parameter when an action does not supply one. | | ||
| | `KOSLI_BASE_URL` | no | `https://app.kosli.com` | Use `https://app.us.kosli.com` for US, or your own single-tenant endpoint. | | ||
|
|
||
| ## Example prompts | ||
|
|
||
| These prompts only read data, so they run without an approval step. Replace the environment, flow, and trail names with your own. | ||
|
|
||
| ### Environments and compliance | ||
|
|
||
| - "Which of my environments are non-compliant, and why?" | ||
| - "What is running in `prod-aws` right now?" | ||
| - "Has anything changed in `prod-aws` since yesterday?" | ||
|
|
||
| The assistant answers these from [environment snapshots](/getting_started/environments), so it can report both the current state and the reasons an environment is not compliant. | ||
|
|
||
| ### Audit and evidence | ||
|
|
||
| - "List every deployment to `prod-aws` in the last 30 days." | ||
| - "What attestations are on trail `release-456` in flow `my-release`?" | ||
| - "Which artifacts running in `prod-aws` have no security scan attestation?" | ||
|
|
||
| The last prompt takes several tool calls, because the assistant has to list what is running and then check the [attestations](/getting_started/attestations) on each artifact. Expect it to be slower than a single lookup, and check the artifact list it worked from before relying on the answer. | ||
|
|
||
| ## Limitations | ||
|
|
||
| - The action catalog is generated from a snapshot of the OpenAPI spec. New endpoints become available when the catalog is regenerated and a new version of the package is published. | ||
| - Ambiguous questions may take several `search_actions` calls before the assistant settles on the right action. | ||
| - Responses are whatever the Kosli API returns. Large responses consume a lot of context, so ask for specific fields when you can. | ||
|
|
||
| ## Feedback | ||
|
|
||
| The server is in beta and we want to hear how it works for you. Email [support@kosli.com](mailto:support@kosli.com) or open an issue in [`kosli-dev/mcp-server`](https://github.com/kosli-dev/mcp-server/issues). | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.