mcpField
K
Kurlo

Kurlo

本地服务
kurlo.dev开发工具313 天前更新

关于 Kurlo

Kurlo 是面向开发团队的开源 API 客户端,可将工作区以 YAML 保存在 Git 中。其 MCP 服务让 Agent 能运行请求、编写测试并查看失败原因,同时遮蔽模型可见的密钥。

主要功能

  1. 01运行带身份验证和测试的请求
  2. 02以 YAML 和 Git 管理工作区
  3. 03导入 Postman、OpenAPI 等格式
  4. 04浏览器 CORS 与 CSP 检查
  5. 05集合运行器和 CI 命令行工具

适用场景

  1. 01让 Agent 执行已保存的 API 请求
  2. 02在 CI 中运行请求和测试脚本
  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 Agent 驱动的开源 Postman 替代品。
无需账户,无付费方案,无遥测。集合以 YAML 格式保存在你的 Git 仓库中。

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 Agent 可以使用它。 kurlo mcp 让 Claude Code、Cursor、Codex 和任何其他 MCP 客户端能够使用保存的请求及其身份验证和测试,编写新请求和测试,并说明上次调用失败的原因。密钥会发送到 API,但绝不会展示给模型。
  • 预先了解浏览器会如何处理请求。 按浏览器的 CORS 和 CSP 规则发送请求,在用户遇到错误之前就发现问题。Postman、Insomnia 和 Bruno 都不支持此功能。
  • 轻巧且原生。 使用 Go 和系统 WebView 构建,而非 Electron,因此 macOS 下载包仅 22.7 MB,Linux 下载包仅 12.0 MB。
KurloPostmanInsomniaBruno
免费方案✅ 所有功能,团队规模不限1 位用户最多 3 位 Git Sync 用户私有 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 Agent 的 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 — 将 curl 命令粘贴到 URL 字段,即可自动解析
  • 批量编辑参数、请求头和表单字段 — 可将表格切换为 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)、美化、JSON 和 JUnit 报告器、变量导出,以及失败时返回非零退出码 AI Agent(MCP 服务)——Kurlo 二进制文件也是 Model Context Protocol 服务,因此 Claude Code、Codex、Cursor、Claude Desktop 或任何其他 MCP 客户端都可以列出你的集合和环境,运行已保存的请求和整个集合(包括它们的身份验证、脚本和测试),并使用你的 {{variables}} 发送一次性调用。它还能让工作区保持最新:添加和修改请求及其 pm.* 测试,将响应保存为示例并设置环境变量,使用与应用写入时相同的 YAML 格式,且绝不存储机密。它会读取你在应用中最近发送的请求,因此询问“为什么失败了?”不需要复制内容。机密值会发送到 API,但在模型看到的所有内容中都会屏蔽为 [secret];你标记为受保护的环境则无法访问。一条命令即可为这台机器上的所有客户端完成设置:
npx -y @kurlo/cli mcp install --env Staging

添加 --project,即可改为写入仓库共享的 .mcp.json 和 .cursor/mcp.json,这样整个团队只需克隆仓库即可获得该服务。手动设置、工具和标志的说明见 MCP 服务指南。

响应示例——将任意响应保存为其请求下的命名示例:保存返回的状态码、标头和正文,以及生成该响应的请求。捕获时会遮盖机密,干净的正文会逐字节存储;导入和导出 Postman、OpenCollection、HAR 和 OpenAPI 时,也会保留这些示例。可以将响应与示例进行差异比较,而不是与上一次发送的响应比较。

Cookie——每个工作区都有独立的 Cookie 罐,并提供按域名编辑的功能;也可以按请求禁用。

  • Cookie 同步:将 Kurlo 与仓库内的浏览器扩展(apps/desktop/extension,支持 Chromium + Firefox)配对后,Kurlo 发送请求时使用的就是你当前在浏览器中已有的会话。仅限环回地址的桥接功能默认关闭,只有你手动开启后才会启用;你需要在 Kurlo 中匹配六位数代码以批准连接;双方都会强制执行按域名设置的允许列表。Cookie 只会单向传输:从浏览器传入 Kurlo。

模拟服务——在本地端口上通过 HTTP 提供集合中保存的示例,以便针对尚不存在的端点构建客户端。路由根据方法和示例的路径模板(/orders/:id)匹配;记录的查询参数可缩小响应示例的匹配范围;实时日志会显示客户端发送的请求以及响应所用的示例。仅限环回地址;任何来源的 CORS 预检请求都会得到响应。

响应查看器

  • 带行号的语法高亮正文
  • 支持大型响应的分页渲染(每页 512 KB,响应超过 10 MB 时启用)
  • 全文搜索并可逐个跳转匹配项
  • 将响应保存到文件、复制到剪贴板
  • 标头表、测试结果、脚本日志——全部集中在一个面板中
  • 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 罐、超时、代理、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 加密。密钥会在可用时存储于操作系统凭据库中,同时也会作为 0600 权限的恢复文件保存在 Kurlo 的应用数据目录中。由 Git 管理的工作区 YAML 文件有意保持为人类可读格式;密钥值会替换为本地占位符。


从源代码构建

先决条件

  • Go 1.25+
  • Node.js 22.12+
  • Wails v2 — go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • macOS:Xcode 命令行工具
  • 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)输出到“脚本”面板

require 会解析 lodash、ajv、tv4、uuid、crypto-js 和 chai 的捆绑替代库。没有事件循环:setTimeout、async 和 await 均不可用,且 pm.sendRequest 的回调会立即运行。


贡献

欢迎提交 Bug 报告、功能请求和拉取请求。请先阅读 CONTRIBUTING.md——其中介绍了开发环境设置、CI 强制执行的要求,以及如何确定更改范围。所有参与者都应遵守行为准则。

发现安全问题?请不要公开提交 issue——请参阅 SECURITY.md,了解私下报告的方式。


许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。