mcpField
K
Kurlo

Kurlo

ローカル
kurlo.dev開発ツール313 日前に更新

Kurlo について

Kurloは、ワークスペースをYAMLとしてGitで管理するチーム向けのオープンソースAPIクライアントです。MCPサーバーを通じてエージェントがリクエスト実行やテスト作成、失敗原因の確認を行え、モデルに見える出力ではシークレットがマスクされます。

主な機能

  1. 01認証とテスト付きリクエストの実行
  2. 02YAMLとGitによるワークスペース管理
  3. 03PostmanやOpenAPIなどのインポート
  4. 04ブラウザーのCORSとCSPの検査
  5. 05コレクション実行とCI用コマンドライン

活用シーン

  1. 01エージェントによる保存済みAPIリクエストの実行
  2. 02CIでのリクエストとテストスクリプトの実行
  3. 03ブラウザーのCORSまたはCSPエラーの再現

MCP 対応

KurloのMCPサーバーは、コレクションや環境の参照、リクエストやコレクションの実行、リクエスト編集、単発呼び出しをMCPクライアントに提供します。シークレットはAPIに送信されますが、モデルに見える内容ではマスクされます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"dev-kurlo-kurlo": {
"command": "npx",
"args": [
"-y",
"@kurlo/cli"
]
}
}
}
起動コマンドnpx -y @kurlo/cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@kurlo/cli2.5.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Kurlo

AI エージェントが操作できる、オープンソースの Postman 代替ツールです。
アカウント不要、有料プランなし、テレメトリーなし。コレクションは Git リポジトリ内に YAML として保存されます。

Latest release GitHub stars CI License: MIT Platforms

ダウンロード · ウェブサイト · ドキュメント · MCP サーバー · 比較

Claude CodeがMCP経由でKurloのコレクションにテストを追加し、料金設定のバグを見つけて修正する間に、テストがKurloに表示されます

Kurloを選ぶ理由

  • チームの規模を問わず無料です。 上位プランへの移行も、アカウントの作成も必要ありません。チームは任意のGitホストを通じてワークスペースを共有でき、すべてのリクエストは読みやすいYAMLファイルとして保存され、APIの変更と同じプルリクエストでレビューできます。
  • Postmanのコレクションをそのまま使えます。 Postman、Insomnia、Bruno、OpenAPI、HARファイルをインポートできます。pm.test、chaiを使ったpm.expect、pm.sendRequest、require('lodash')は、記述されたとおりに動作します。
  • AIエージェントから利用できます。 kurlo mcpを使うと、Claude Code、Cursor、Codex、その他のMCPクライアントで、認証情報やテストを含む保存済みリクエストの実行、新しいリクエストやテストの作成、直前の呼び出しが失敗した理由の説明ができます。シークレットはAPIに送信されますが、モデルには表示されません。
  • ブラウザーでの動作を事前に確認できます。 ブラウザーのCORSおよびCSPルールを適用してリクエストを送信し、ユーザーに影響が出る前にエラーを確認できます。Postman、Insomnia、Brunoにはこの機能がありません。
  • 軽量でネイティブです。 ElectronではなくGoとシステムのWebViewを使って構築されているため、macOS版のダウンロードサイズは22.7 MB、Linux版は12.0 MBです。
KurloPostmanInsomniaBruno
無料プラン✅ すべての機能をチームの規模を問わず利用可能1ユーザーGit Syncユーザーは最大3人プライベートGitホストにはProが必要
アカウントが必要✅ 不要コレクションには必要Scratch Padを超える場合は必要不要
Gitリポジトリ内のコレクション✅デスクトップアプリにネイティブのGit機能✅✅
Postmanのpm.*スクリプト✅ 記述どおりに実行ネイティブ互換レイヤーbru.*に変換
モックサーバー✅ ローカル、上限なしクラウド、アカウントが必要無料枠は月1,000リクエスト✅ ローカル
MCP✅ クライアントとサーバークライアントクライアントコミュニティサーバー
ブラウザーのCORSおよびCSPチェック✅———

2026年10月15日時点の各社の料金ページに基づいています。詳細と情報源:Postmanとの比較、Insomniaとの比較、Brunoとの比較。

Kurloが時間の節約に役立ったら、⭐を付けていただくと、ほかの人にも見つけてもらいやすくなります。


ダウンロード

最新のビルドはリリースページから入手してください。

プラットフォームインストーラー
macOS(Apple Silicon + Intel).dmg
Windows 10/11(x64、arm64).exe(NSIS インストーラー)、.msix
Linux(x64).AppImage

すべてのリリースには SHA256 チェックサムと minisign 署名が付属しており、アプリ内アップデーターは、どちらかの検証に失敗したバイナリを拒否します。

コマンドライン(CI 向けの kurlo run、AI エージェント向けの kurlo mcp)は、npm の @kurlo/cli からも利用でき、x64 と arm64 の macOS、Linux、Windows 用のビルド済みバイナリが用意されています。デスクトップアプリは不要です。

npx -y @kurlo/cli --version

ガイド、スクリプトリファレンス、YAML ワークスペース形式については、**ドキュメントサイト**をご覧ください。


機能

リクエスト

  • すべての HTTP メソッド:GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS
  • クエリパラメーター、ヘッダー、本文(JSON、form-data、x-www-form-urlencoded、プレーンテキスト/XML/HTML、バイナリファイル)
  • cURL インポート — URL フィールドに curl コマンドを貼り付けると、自動的に解析されます
  • パラメーター、ヘッダー、フォームフィールドの一括編集 — テーブルを key: value 形式のテキストエリアに切り替えて編集し、元に戻せます
  • GraphQL、Server-Sent Events、WebSocket、Socket.IO、gRPC、MCP のリクエストタイプ — MCP 呼び出しではサーバーのツール、リソース、プロンプトを検出し、ツールのスキーマに基づいて引数を設定して、生の JSON-RPC の送受信内容を表示します
  • Postman、Insomnia、Bruno/OpenCollection、OpenAPI/Swagger、HAR、cURL、すべてのデータのバックアップをインポート
  • OpenAPI/Swagger はファイルだけでなくリンクからもインポートできます。仕様書の URL を貼り付けると、Kurlo が取得してコレクションを作成します
  • Postman、OpenAPI、OpenCollection、すべてのデータのバックアップをエクスポート

認証

  • Bearer Token
  • Basic Auth
  • Digest Auth — MD5、SHA-256、SHA-512-256 と各 -sess バリアント、qop=auth および auth-int に対応
  • API Key — ヘッダーまたはクエリ文字列
  • OAuth 2.0 — Client Credentials、Authorization Code(PKCE 対応)、Password、Device Code グラントに対応。ループバックを使ったブラウザーサインイン、リフレッシュトークン、送信前の自動トークン更新も利用できます
  • AWS Signature v4
  • クライアント証明書(相互 TLS)。リクエストごとに設定するか、コレクションから継承できます
  • リクエストごとおよびコレクションのデフォルト設定と継承

スクリプト — サンドボックス化された JavaScript によるリクエスト前スクリプトとテストスクリプトに対応し、従来の Tengo もサポートしています:

// pre-request: inject a header
pm.request.headers.set("X-Client", "kurlo")

// pre-request: rewrite and sign the body
pm.request.body.update(JSON.stringify({ ...pm.request.body.json(), nonce: pm.crypto.randomHex(8) }))

// test: assert status and shape
pm.test("status is 200", () => pm.response.to.have.status(200))
pm.test("has an id", () => pm.response.to.have.jsonSchema({ type: "object", required: ["id"] }))

require は lodash、ajv、tv4、uuid、crypto-js、chai の同梱代替モジュールを解決するため、インポートした Postman スクリプトも引き続き動作します。pm.sendRequest はスクリプトから HTTP 呼び出しを行い、pm.execution.skipRequest() はリクエストの送信をスキップします。

環境と変数

  • ワークスペースごとに複数の環境を設定でき、ワンクリックで切り替えられます
  • マトリックス表示 — 各変数を行、各環境を列として表示し、その場で編集できます
  • URL、ヘッダー、パラメーター、本文、認証フィールドで {{variable}} のテンプレート構文を利用できます
  • テストスクリプトから変数を設定できます(pm.variables.set、pm.environment.set)
  • 手動保存モードと自動保存モードの両方で、リクエストと環境の編集内容を保存できます

ワークスペースとコレクション

  • プロジェクトやクライアントごとに複数のワークスペースを作成できます
  • ネストしたフォルダー階層と空フォルダーの保持に対応したコレクション
  • ドラッグ&ドロップで整理できます
  • リクエスト履歴 — 送信ごとに専用ページを作成し、リクエストと保存されたレスポンスを並べて表示します。エディターで再度開くこともできます(保存期間は14日、最大1000件)
  • コレクションランナー — 順次または並列実行、データファイル、反復実行、HTML レポートに対応し、各コレクションの最新の実行結果を保持します
  • 診断機能、競合解決支援、ローカル限定のシークレットに対応した Git 管理の YAML ワークスペース
  • CLI ランナー — npx -y @kurlo/cli run ./workspace --env CI で、リクエストとそのテストスクリプトを CI 向けに実行できます。データ駆動型の反復実行(--data)、pretty/JSON/JUnit レポーター、変数のエクスポートに対応し、失敗時にはゼロ以外の終了コードを返します AI エージェント(MCP サーバー) — Kurlo のバイナリは Model Context Protocol サーバーでもあるため、Claude Code、Codex、Cursor、Claude Desktop、その他の MCP クライアントから、コレクションや環境の一覧表示、認証情報・スクリプト・テストを使った保存済みリクエストやコレクション全体の実行、{{variables}} を使った単発の呼び出しができます。また、ワークスペースを最新の状態に保つこともできます。リクエストを追加・変更して pm.* テストを設定し、レスポンスをサンプルとして保存し、環境変数を設定できます。いずれもアプリが書き込むものと同じ YAML に保存され、シークレットは保存されません。アプリから最後に送信したリクエストを読み取るため、「なぜ失敗したのか?」と尋ねる際にコピーする必要はありません。シークレットの値は API に送信されますが、モデルが参照するすべての内容では [secret] としてマスクされ、保護対象としてマークした環境にはアクセスできません。1 つのコマンドで、このマシン上のすべてのクライアントを設定できます。
npx -y @kurlo/cli mcp install --env Staging

代わりにリポジトリの共有 .mcp.json と .cursor/mcp.json に書き込むには、--project を追加します。これにより、チーム全体がリポジトリをクローンするだけでサーバーを利用できます。手動での設定、ツール、フラグについては、MCP サーバーガイドをご覧ください。

レスポンスのサンプル — 任意のレスポンスを、そのリクエストの名前付きサンプルとして保存できます。ステータス、ヘッダー、返された本文が、そのレスポンスを生成したリクエストとともに保存されます。保存時にシークレットは除外され、本文は変更されずバイト単位で保存されます。また、Postman、OpenCollection、HAR、OpenAPI のインポートとエクスポートでもサンプルが引き継がれます。レスポンスは、前回の送信結果ではなくサンプルと比較できます。

Cookie — ワークスペースごとの Cookie jar と、ドメインごとのエディターを備えています。リクエストごとに無効化できます。

  • Cookie の同期:Kurlo をリポジトリ内のブラウザー拡張機能(apps/desktop/extension、Chromium + Firefox)とペアリングすると、ブラウザーですでに使用しているセッションを Kurlo からの送信にも使えます。ループバックのみで動作するブリッジは有効にするまでオフのままで、Kurlo 上で 6 桁のコードを照合して承認し、両側で適用されるドメインごとの許可リストを設定します。Cookie の送信方向は一方向で、ブラウザーから Kurlo へのみです。

モックサーバー — コレクションの保存済みサンプルをローカルポートで HTTP 配信することで、まだ存在しないエンドポイントを対象にクライアントを構築できます。メソッドとサンプルのパステンプレート(/orders/:id)でルーティングし、記録されたクエリによって応答するサンプルを絞り込みます。また、クライアントからのリクエストと、応答したサンプルをライブログで確認できます。ループバックのみで動作し、すべてのオリジンの CORS プリフライトに応答します。

レスポンスビューアー

  • 行番号付きの構文ハイライトされた本文
  • 大きなレスポンスのページ分割表示(512 KB ごとに分割。レスポンスが 10 MB を超える場合に適用)
  • 全文検索と一致箇所の移動
  • レスポンスをファイルに保存、クリップボードにコピー
  • ヘッダー表、テスト結果、スクリプトログをすべて 1 つのパネルに表示
  • HTML、画像、PDF 用のプレビュータブ。バイナリ本文は文字化けした状態で表示せず、検出されます
  • 前回のレスポンスまたは保存済みサンプルとの差分表示
  • 接続の詳細と、ワイヤー上で送信されたリクエストを表示するタイムライン。シークレットはマスクされ、リダイレクトごとにブロックが分かれます
  • SSE、WebSocket、Socket.IO、gRPC のレスポンス用リアルタイムパネル

コード生成 — 現在のリクエストを、14 種類のターゲットのいずれかで実行可能なスニペットとしてコピーできます:cURL、HTTPie、JavaScript fetch、Node.js fetch、Axios、Python requests、Go net/http、Java OkHttp、C# HttpClient、PHP cURL、Ruby Net::HTTP、Swift URLSession、Kotlin OkHttp、Rust reqwest。シークレット変数は {{name}} のプレースホルダーのままです。

ブラウザーリクエストのエミュレーション — クライアントではなく、ブラウザーのルールに従って送信します。Origin ヘッダー、CORS プリフライトとレスポンスのチェック、Content Security Policy の適用により、フロントエンドを実装する前にブラウザーでの動作を再現できます。

リクエストごとの設定:HTTP バージョン(auto / 1.1 / 2)、SSL 検証、リダイレクトポリシー(追従、メソッドを維持、認証情報を維持)、Cookie jar、タイムアウト、プロキシ、URL エンコード キーボードファースト:すべてのアクションにショートカットを設定できます。コマンドパレット(Cmd/Ctrl K)でリクエストを検索してコマンドを実行し、クイック送信(Cmd/Ctrl Enter)、URL にフォーカス(Cmd/Ctrl L)、タブの切り替え(Cmd/Ctrl 1~8、最後のタブは 9)を行えます。Kurlo は macOS では Cmd、Windows と Linux では Ctrl を表示します。

ダークテーマとライトテーマがあり、組み込みのバリエーションも複数用意されています。

ローカルファーストのストレージ — ローカルの Kurlo プロファイルとそのシークレットは、保存時に AES-256-GCM で暗号化されます。キーは利用可能な場合、OS の認証情報ストアに保存され、Kurlo のアプリデータディレクトリ内にも 0600 のリカバリファイルとして保持されます。Git で管理されるワークスペースの YAML は、意図的に人が読める形式にしています。シークレット値はローカルプレースホルダーに置き換えられます。


ソースからのビルド

前提条件

  • Go 1.25+
  • Node.js 22.12+
  • Wails v2 — go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • macOS:Xcode Command Line Tools
  • Windows:NSIS(インストーラーのビルド用)および Windows SDK(MSIX のパッケージ化/署名ツール用)
  • Linux:libgtk-3-dev、libwebkit2gtk-4.1-dev

開発モード(フロントエンドのホットリロード+Go バックエンド):

git clone https://github.com/stormhop/kurlo
cd kurlo
npm install
make dev

現在のプラットフォーム向けの本番ビルド:

make build

すべてのプラットフォーム(各プラットフォームのツールチェーンが必要です):

make build-all

すべてのチェックを実行 — フロントエンドの型チェック、ユニットテスト、gofmt、go vet、競合検出を有効にした Go テスト:

make check

利用可能なすべてのターゲットについては、make help を参照してください。


プロジェクトの構成

apps/desktop/               Wails v2 desktop application
apps/desktop/main.go        Entry point, window config, native menus
apps/desktop/cmd/kurlo/     Headless CLI (run, mcp) published to npm as @kurlo/cli
apps/desktop/internal/
  api/                      HTTP executor, auth, request store, state
  api/auth/                 Bearer, Basic, Digest, API Key, OAuth2, AWS SigV4
  model/                    Shared Go types (request, response, auth config)
  script/                   JavaScript/Tengo scripting engines + pm.* API
apps/desktop/frontend/src/
  App.svelte                Root shell and layout
  lib/stores/app.svelte.ts  Composed app view-model
  lib/stores/features/      Feature slices for requests, collections, Git, import/export, etc.
  lib/components/           UI components
  lib/backend.ts            Wails bridge type definitions
apps/desktop/extension/     Cookie Sync browser extension (MV3 + Firefox event page)
apps/web/                   Astro Starlight documentation site
npm/cli/                    The @kurlo/cli npm launcher; scripts/build-npm-packages.mjs adds the binaries
schemas/                    Public Git/YAML workspace JSON Schema
perf/                       Generated performance fixtures (ignored by Git)

スクリプト API リファレンス

スクリプトはデフォルトでサンドボックス化された JavaScript 環境で実行されます。既存のリクエストでは、レガシーの Tengo エンジンでも実行できます。インポート、ファイルシステム、プロセス、ネットワークへのアクセスは無効です。実行タイムアウトはデフォルトで 2 秒です。リクエストごとに最大 60 秒まで設定できます。

すべてのメソッド、変数スコープの優先順位ルール、Chai スタイルのアサーションエイリアスを含む全容は、スクリプト API リファレンスを参照してください。概要は次のとおりです。

対象内容
pm.requesturl、method、set_url()、headers.get/set/unset、params.get/set
pm.request.bodyraw、mode、json()、update()、および urlencoded/formdata のフィールドリスト
pm.responsecode、status、responseTime、size、body()、json()、headers.get() — テストスクリプトのみ
pm.variables · pm.globals · pm.environment · pm.collectionVariablesget/set/unset/clear。読み書きするスコープのみが異なります
pm.iterationData.get(key)データ駆動型実行で現在のデータ行の値を取得します(読み取り専用)
pm.inforequestName、eventName、iteration、iterationCount
pm.cookiesこのリクエストの Cookie jar が送信する Cookie に対する get/has/names
pm.crypto · CryptoJSMD5/SHA ダイジェスト、HMAC、base64、randomHex()、uuid()
pm.sendRequest(req, cb)通常のリクエストエンジンを介した同期 HTTP 呼び出し
pm.execution.skipRequest()事前リクエストスクリプトから送信をスキップします。失敗ではなくスキップとして報告されます
pm.test(name, fnOrResult)名前付きアサーションを登録します
pm.expect(value).equal · .contains · .exists · .has_key · … に加えて、.to.equal(v)、.to.include(v)、.to.have.property(k)
pm.response.to.have.*status(code)、header(name)、jsonBody(path?, value?)、jsonSchema(schema)(draft-07)
pm.log(...values)Scripts パネルに出力します

require は、同梱された lodash、ajv、tv4、uuid、crypto-js、chai の代替実装を解決します。イベントループはありません。setTimeout、async、await は利用できず、pm.sendRequest のコールバックは即座に実行されます。


貢献

バグ報告、機能リクエスト、プルリクエストを歓迎します。まずは CONTRIBUTING.md をご覧ください。開発環境のセットアップ、CI でチェックされる項目、変更の範囲の決め方について説明しています。参加するすべての方には、行動規範に従っていただく必要があります。

セキュリティ上の問題を見つけた場合は、公開の issue を作成しないでください。非公開での報告方法については、SECURITY.md をご覧ください。


ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。