卷曲mcp
curl-mcp 是一个开源的HTTP/cURL工具 模型上下文协议(MCP).
它提供了一个单一的工具:
curl_request –为AI助手和MCP感知开发工具设计的结构化HTTP客户端。此服务器用于 任何兼容MCP的客户端例如:
- ChatGPT桌面
- Roo代码
- 光标
- 克莱恩
- Continue.dev
- 定制MCP代理
这里没有包含特定于客户端的配置示例——每个MCP客户端都提供了自己的添加本地MCP服务器的方法。\ 你只要跑 curl-mcp,然后在您的客户端中注册。
______________________________________________________________________
✨ 特性
- 🔌 MCP传输\
Stdio用于本地开发,基于Express的HTTP服务器用于托管客户端。
- 🧰 完全HTTP支持\
支持 GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.
- 🧱 结构化响应\
状态、标题、内容类型、时间、大小、正文(文本/漂亮的JSON/base64)、建议。
- 🍪 会话和重定向控制\
每个主机的内存cookie jar(persist_session), follow_redirects 切换, clear_session 帮手。
- 🕒 超时和网络处理\
中止控制器,键入错误:超时、DNS、连接、SSL、通用网络。
- 🧪 集成测试友好\
自我描述JSON场景 docs/integration-tests.json.
______________________________________________________________________
🚀 快速开始
- 来自源(本地克隆):
npm install
npm run dev:stdio # stdio transport
npm run dev:http # HTTP transport (default: http://localhost:3000/mcp)- 从CLI(已安装):
brew install calibress/mcp/curl-mcp # or: npm install -g @calibress/curl-mcp
curl-mcp # stdio
curl-mcp --http # HTTP (set PORT or MCP_PORT to change 3000)然后将MCP客户端指向您使用的命令(请参阅下面的配置)。
______________________________________________________________________
📦 安装(来源)
npm install
npm run build______________________________________________________________________
▶️ 运行MCP服务器
你可以跑 curl-mcp 直接从此源代码仓库,或通过您的 PATH.
来自源(本地克隆)
从你当地的根 curl-mcp 克隆:
npm run dev:stdio这将启动 curl-mcp stdio上的MCP服务器。\ 配置您的MCP客户端以在repo目录中运行相同的命令。\ 有些客户端允许您显式设置工作目录;如果你通过了考试,其他人的表现会更好 --prefix 指向你的克隆体。\ 例如,a mcpServers JSON块可能看起来像:
{
"mcpServers": {
"curl-mcp": {
"command": "npm",
"args": [
"--prefix",
"/PATH/TO/YOUR/curl-mcp",
"run",
"dev:stdio"
]
}
}
}确保该命令的工作目录是本地的根目录 curl-mcp 克隆。
来自CLI(curl-mcp 在PATH上)
如果 curl-mcp 在你的 PATH (例如通过Homebrew或npm),将MCP客户端直接指向它,而无需使用 npm run:
{
"mcpServers": {
"curl-mcp": {
"command": "curl-mcp",
"args": []
}
}
}重要提示:\ MCP客户端都有自己添加本地MCP服务器和选择工作目录的方法。\ 使用上述示例作为指导,但请参阅客户的文档以了解确切的配置格式。
HTTP传输(Express)
启动HTTP服务器:
# from source
npm run dev:http
# or from the installed CLI
curl-mcp --http端口和硬化(可选):
- 端口:默认为3000;用以下方式覆盖
PORT或MCP_PORT(例如。,PORT=3400 npm run dev:http). - MCP客户端配置应与服务器端口匹配,例如。
"url": "http://localhost:3400/mcp". - 如果端口正在使用中,请选择另一个空闲端口并将其反映在URL中(一些客户端允许您单独设置主机/端口;否则将端口包含在URL中)。
- Auth/allowlist(默认:关闭)。通过env变量选择加入:
- MCP_REQUIRE_KEY=true 和 MCP_API_KEYS=key1,key2 (检查 Authorization: Bearer 或 X-API-Key) - MCP_ALLOWED_HOSTS=host:port,otherhost:port (主机标头检查) - MCP_ALLOWED_ORIGINS=https://yourapp.com (来源检查+CORS分配列表) 如果未设置,服务器将保持打开状态,供本地/dev使用。
将MCP客户端指向HTTP端点(默认 http://localhost:3000/mcp):
{
"mcpServers": {
"curl-mcp": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}🔍 烟雾测试(HTTP)
- 启动HTTP服务器:
npm run dev:http(或curl-mcp --http). - 运行冒烟脚本:
npm run smoke:http(套MCP_URL覆盖端点)。 - 您应该看到一行摘要,其中包含返回的状态/时间。
______________________________________________________________________
🛠 工具: curl_request
输入(模式概述)
{
"url": "string",
"method": "GET | POST | PUT | PATCH | DELETE | HEAD | OPTIONS",
"headers": { "Header-Name": "value" },
"body": "string or null",
"timeout_seconds": 1,
"response_type": "text | json | binary (optional; default text)",
"persist_session": "boolean (optional; per-host cookie jar for chained calls)",
"follow_redirects": "boolean (optional; default true; set false to capture redirect + cookies)",
"clear_session": "boolean (optional; clear stored cookies for this host before the request)"
}输出(模式概述)
{
"ok": true,
"code": 200,
"status": "OK",
"message": "Request completed successfully.",
"timing_ms": 123,
"size_bytes": 4096,
"request": { ... },
"response": {
"status_code": 200,
"status_text": "OK",
"headers": { ... },
"content_type": "",
"body": "",
"body_base64": "",
"cookies": ["set-cookie if present"]
},
"advice": [],
"error_type": "timeout | dns_error | connect_error | ssl_error | network_error (when applicable)",
"error_details": "raw error message when applicable"
}笔记:
- 默认
User-Agent如果没有提供,则注射(curl-mcp/);如果需要,可以通过标头覆盖。 response_type默认为文本。使用json解析/漂亮打印JSON,binary用于base64+内容类型/大小元数据(通过response.content_type).persist_session为链式调用在每个主机的内存中保存Cookie;follow_redirects=false允许您捕获重定向+设置Cookie;clear_session在发出请求之前为主机擦除Cookie。- 允许在任何动词上使用Bodies(对于接受带Bodies的GET的API很有用)。
常见标题示例:
{
"User-Agent": "curl-mcp/0.0.5",
"Accept": "application/json",
"Content-Type": "application/json"
}______________________________________________________________________
🧪 集成测试
文件:
docs/integration-tests.json包含人类和人工智能可读的集成场景,例如:
- 简单GET
- 后回声
- 头部往返
- 超时和错误处理
- 重定向打开/关闭
- Cookie+会话重用+清除
- 二进制base64+内容类型
- JSON解析回退
- 笑话/猫/狗API
- 美国国家航空航天局
- 伦敦的天气数据
这些可以手动执行,也可以由MCP客户端/代理使用 curl_request.
______________________________________________________________________
📁 公共项目结构
packages/
core-engine/ # HTTP engine (fetch wrapper, response shaping)
mcp-stdio/ # stdio + Express HTTP transports exposing curl_request
docs/
integration-tests.json______________________________________________________________________
🖥 需求
- Node.js 20或更高版本 (本地
fetch支持)
______________________________________________________________________
🧭 路线图
- 用于托管部署的HTTP身份验证选项(API密钥/承载器)
- 轻量级指标/日志开关
- 更多现成的吸烟/健康检查
- 打包和发布更新
______________________________________________________________________
📄 许可证
麻省理工学院
