使用说明
卷曲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 <key>或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": "<content-type header, if present>",
"body": "<raw text body>",
"body_base64": "<base64 when response_type=binary>",
"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/<version>);如果需要,可以通过标头覆盖。 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密钥/承载器)
- 轻量级指标/日志开关
- 更多现成的吸烟/健康检查
- 打包和发布更新
📄 许可证
麻省理工学院
