Kosli MCPサーバー
コミット 2026年11月13日検索、読み取り、およびAPIアクションの実行を行う汎用的なツールを通じて、Kosli APIをLLMクライアントに公開します。
別名 kosli-dev/mcp-server
- スター
- 1
- ツール
- —
- ダウンロード数(30日間)
- —
- 最新バージョン
- —
- 最終コミット
- 2026年11月13日
- ライセンス
- MIT
Kosli MCPとは
KosliはMCPサーバーです。 検索、読み取り、およびAPIアクションの実行を行う汎用的なツールを通じて、Kosli APIをLLMクライアントに公開します。.
プロジェクトのREADMEから生成された概要
Kosli MCP server について
開発者は、このMCP serverを使用することで、Claude DesktopやClaude CodeなどのLLMクライアントからKosli APIと直接やり取りできます。個々のエンドポイントごとにカスタムコードを用意する必要はなく、このサーバーはKosli OpenAPI仕様に基づいた動的なカタログを提供します。これにより、AIは一貫した少数のツールセットを通じて、利用可能なAPIアクションを探索し、使用することができます。
ユーザーはKosli APIトークンを使用してサーバーに接続し、USやEUのエンドポイントなど、異なる環境用のベースURLを指定できます。サーバーは主に3つのツールを提供します。自然言語を使用して関連するAPIアクションを見つけるsearch_actions、GETリクエストを実行するexecute_read_action、そしてPOST、PUT、PATCH、またはDELETE操作を行うexecute_write_actionです。読み取りアクションは通常自動的に許可されますが、リソースへの意図しない変更を防ぐため、書き込みアクションはMCPクライアント内での明示的なユーザー承認が必要です。
このセットアップはstdio経由で動作し、ライブ仕様からカタログを再生成することで、AIが常に最新のAPI機能にアクセスできるようにしつつ、ツールのインターフェースを最小限に抑えるように設計されています。
できること
- 1API機能の探索AIは自然言語のクエリを使用して特定のAPIアクションを検索し、利用可能なパラメータを理解できます。
- 2組織データの取得開発者はAIに対し、読み取り専用アクションを使用して環境やスナップショットに関する特定の詳細を取得するよう依頼できます。
- 3クラウドリソースの変更ユーザーが特定のアクションとパラメータを承認することを条件に、AIにリソースの作成や削除をタスクとして割り当てることができます。
- 4トークン使用量の最適化コンテキストウィンドウを小さく保つために、APIレスポンスから特定のフィールドのみを要求するようAIに指示できます。
プロジェクトの README から作成されています。すべてのユースケースは、その引用と照らし合わせて確認されています。
設定
KOSLI_API_TOKEN
| 名前 | 説明 | 種類 |
|---|---|---|
| KOSLI_API_TOKEN | — |
自動チェック
実行日 2026年11月15日完全なレポート →まだ検証されていません。サーバーには80点のスコア、重大な問題がないこと、および検証に必要な十分なデータが必要です。 チェックの仕組み · 点数を上げるための改善点
- ソースリポジトリがリンクされており、アクセス可能kosli-dev/mcp-server is public and reachablegithub.com/kosli-dev/mcp-server ↗合格
- パッケージがこのリポジトリをソースとして指定未チェック
- ビルドの来歴 (Sigstore 証明)未チェック
- オープンソースライセンス (OSI)MITspdx.org/licenses/MIT.html ↗合格
- 過去1年以内にコミットまたはリリースありLast commit or release 2026-11-13github.com/kosli-dev/mcp-server ↗合格
- OpenSSF Scorecard未チェック
- パッケージ名が有名なパッケージに酷似していない未チェック
- パッケージおよびその依存関係に重大な勧告なし未チェック
- モデルへの隠れた指示がない0 tool descriptions and the README read; no override phrases, credential paths or hidden characters合格
- 破壊的なツールがラベル付けされている未チェック
- リモートエンドポイントが MCP ハンドシェイクに応答未チェック
README
GitHubで見るKosli MCP Server
A Model Context Protocol server that exposes the Kosli API to LLM clients (Claude Code, Claude Desktop, etc.).
[!WARNING] This server is in beta. Tool names, parameters, and behaviour may change between releases. If you need stability, pin a version — e.g.
npx -y @kosli/mcp-server@0.4.0instead ofnpx -y @kosli/mcp-server.
Rather than hand-coding a tool per endpoint, the server ships a catalog generated from Kosli's OpenAPI spec and exposes three generic tools:
search_actions— fuzzy-search the catalog for relevant API actions by natural-language query.execute_read_action— invoke any GET action by ID (read-only, auto-allowed by MCP clients).execute_write_action— invoke any POST/PUT/PATCH/DELETE action by ID (requires approval in MCP clients — see the caution under Usage).
This keeps the tool surface small and lets the catalog stay in sync with the Kosli API by regenerating. MCP clients use the tool annotations to auto-allow reads while gating writes behind user approval.
Requirements
- Node.js ≥ 22
- A Kosli API token
Install & build
npm install
npm run build
Configure
The server reads configuration from environment variables:
| Variable | Required | Default | Notes |
|---|---|---|---|
KOSLI_API_TOKEN |
yes | — | Preferred. KOSLI_API_KEY is accepted as a fallback. |
KOSLI_BASE_URL |
no | https://app.kosli.com |
EU (default), US (https://app.us.kosli.com), or your single-tenant endpoint. |
Wire up to an MCP client
Claude Code
Run this from your project directory (or use --scope user for global):
claude mcp add kosli \
-e KOSLI_API_TOKEN=your-token \
-- npx -y @kosli/mcp-server
Claude Desktop (Desktop Extension)
Download the latest .mcpb file from Releases, then drag it into Claude Desktop or double-click to install. Claude Desktop will prompt you for your API token. This is the recommended method for Claude Desktop as secrets are stored in the OS keychain rather than in a plain-text config file.
[!NOTE] When installing from a
.mcpbfile, Claude Desktop shows a warning that the extension has not been verified by Anthropic. This is expected for any extension installed from a file rather than from the built-in directory. Sideloaded extensions also do not auto-update — you'll need to download and reinstall new versions manually. Both of these limitations go away once the extension is listed in Anthropic's Connectors Directory.
To check that a downloaded bundle was built from this repository by its release workflow, verify its build provenance with the GitHub CLI:
gh attestation verify kosli-mcp-server-<version>.mcpb --repo kosli-dev/mcp-server
Each release also attaches kosli-mcp-server-<version>.cdx.json, a CycloneDX SBOM listing every package bundled in the .mcpb, so you can check a release against new vulnerability advisories.
The attached file itself is not signed. The signed copy is the one attested against the bundle: verifying it proves that this SBOM was published for the exact .mcpb you downloaded. Read that copy rather than the attached file when it matters:
gh attestation verify kosli-mcp-server-<version>.mcpb --repo kosli-dev/mcp-server \
--predicate-type https://cyclonedx.org/bom --format json \
| jq '.[0].verificationResult.statement.predicate' > sbom.cdx.json
The npm package has no SBOM: it ships no lockfile, so npm resolves its dependencies on each install.
Claude Desktop (manual)
Alternatively, add the following to your claude_desktop_config.json (Settings → Developer → Edit Config). This method auto-updates via npx on each restart, but stores secrets in plain text:
{
"mcpServers": {
"kosli": {
"command": "npx",
"args": ["-y", "@kosli/mcp-server"],
"env": {
"KOSLI_API_TOKEN": "your-token"
}
}
}
}
Other MCP clients
The server communicates over stdio. Point any MCP-compatible client at the package via npx -y @kosli/mcp-server and set the KOSLI_API_TOKEN environment variable.
Local checkout
If you're running from a local checkout instead:
{
"mcpServers": {
"kosli": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"KOSLI_API_TOKEN": "your-token"
}
}
}
}
Usage
Typical LLM flow:
- Call
search_actionswith a natural-language query (e.g."list environments") to discover action IDs and their parameter schemas. - Call
execute_read_action(for GET actions) orexecute_write_action(for POST/PUT/PATCH/DELETE) with the chosenactionIdand aparamsobject.
[!IMPORTANT]
execute_write_actioncreates, modifies, and deletes real resources in your Kosli organization. MCP clients gate these calls behind an approval prompt — read the action ID and parameters before approving. An LLM may select the wrong action, or the right action with the wrong parameters, and approval is the only checkpoint before the call is made. Treat deletions and anything touching service accounts or API keys with particular care.
For GET/DELETE, non-path params become query parameters; for other methods they become the JSON body.
Naming the organization
Both execute tools take an org, so one running server reaches any organization
your token has access to:
{ "actionId": "list_environments", "org": "cyber-dojo", "fields": ["name"] }
It is required for every action whose path contains {org}, which is all but
a few of them. There is no configured default: a call that names no org is
refused rather than sent to one nobody chose.
KOSLI_ORG used to supply that default and has been removed. A config that
still sets it starts fine, the value is ignored, and the server says so on
stderr.
An org can also arrive as params.org. The two must agree: two different names
are rejected rather than resolved, since the same tools perform writes.
A write's request body may not name any of the action's own parameters, org
included. Such a field would overwrite what you supplied and send the request
somewhere else, while the approval prompt still showed your value.
The org must be one name, given as a non-empty string. Anything else is rejected
rather than coerced, because coercing invents a name: ["cyber-dojo", "kosli-public"] would request the org cyber-dojo,kosli-public.
A few actions are not organization-scoped: get_user_default_org,
list_system_attestation_types, the four /schemas/... actions, and the five
*_personal_api_key(s) actions that manage the authenticated user's own API keys.
Passing an org to one of those is rejected rather than ignored.
An org your token cannot reach returns the usual error object with the API's
status, 403 for both a non-member and a non-existent org. Kosli staff accounts
can read any org, so a successful read does not prove a write would be allowed.
Both execute tools accept an optional fields array to request only specific top-level fields from each object in the response. This dramatically reduces response size and token usage:
{
"actionId": "get_snapshot_snapshots__org___env_name___snapshot_expression__get",
"params": { "env_name": "prod-aws", "snapshot_expression": "-1" },
"fields": ["name", "compliant", "fingerprint", "reasons_for_incompliance"]
}
Regenerate the catalog
src/catalog.json is committed and bundled into the build. Refresh it from the live OpenAPI spec with:
npm run generate-catalog
Development
npm test # run the test suite (vitest)
npm run test:watch # watch mode
npm run typecheck # type-check src, test and scripts
npm run build # compile to dist/
npm start # run the built server over stdio
npm run smoke # start the built server and drive it over stdio
npm run pack:mcpb # build a .mcpb bundle for Claude Desktop
npm run pack:mcpb:dev # same, versioned to install over the release in Claude Desktop
Layout
src/
index.ts # bin: builds a server and connects stdio
org.ts # which parameter is the org, shared by three places
server.ts # registers the three MCP tools
config.ts # env-var loading
types.ts # shared types (CatalogEntry, Config, …)
catalog.json # generated action catalog
client/kosli-client.ts
tools/search-actions.ts
tools/execute-action.ts
scripts/
generate-catalog.ts # fetches OpenAPI spec → catalog.json
test/ # vitest specs mirroring src/
Kosli MCPのよくある質問
Kosli MCP serverをインストールするにはどうすればよいですか?
npm installとnpm run buildを使用してnpm経由でインストールするか、npx -y @kosli/mcp-serverを使用して直接実行できます。
必要な設定変数は何ですか?
このサーバーにはKOSLI_API_TOKENが必要です。また、オプションとしてKOSLI_BASE_URLを設定し、USやEUなどの異なる環境を指定することもできます。
書き込みアクションを実行しても安全ですか?
書き込みアクションは、実際ののリソースを作成、変更、または削除する可能性があります。誤った変更を防ぐため、MCPクライアントはこれらの呼び出しを承認プロンプトの背後で制御する必要があります。