HTTP请求工具

一个提供curl功能的MCP服务器,用于发送HTTP请求和下载文件,优化了GPT模型的兼容性,提供简洁的JSON响应。

  • by bonald
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 bonald/curl-mcp-server

使用说明

卷曲MCP服务器v1.2.0

一种模型上下文协议(MCP)服务器,提供用于发出HTTP请求和下载文件的curl功能,针对GPT模型与干净、简单的JSON响应的兼容性进行了优化。

特性

  • curl_request:向任何支持以下内容的URL发出HTTP请求:

    • 多种HTTP方法(GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS)
    • 自定义头
    • 请求数据/正文
    • 超时配置
    • 用户代理定制
    • 重定向以下内容
    • 包含响应标头
    • 响应大小限制 (新增)-通过截断大响应来防止过度输出
  • curl下载:从以下URL下载文件:

    • 自定义输出路径规范
    • 超时配置
    • 重定向以下内容
    • 进度跟踪

v1.2.0中的新功能

针对GPT模型进行了优化

  • 默认情况下,简化的响应格式仅返回数据,不包含元数据包装器
  • 响应为有效JSON时自动进行JSON解析
  • 干净、最少的错误消息
  • 更好地处理大型JSON数组和对象
  • 直接数据传递,使AI模型更容易处理

v1.1.0版本的功能

响应大小限制

  • 添加 max_response_size 参数(默认值:800KB)
  • 自动截断大型响应以防止系统过载
  • 提供有关截断的元数据(原始大小、截断大小、警告消息)
  • 安全地处理非常大的API响应(如Binance exchange信息)

更好的错误处理

  • 增加内部缓冲区大小,以便在截断之前处理大型响应
  • 额外的安全检查,以防止系统内存问题
  • 改进了错误消息和截断通知

安装

  1. 安装Node.js依赖项:
cd C:\claude\curl-mcp-server
npm install
  1. 确保 curl 已安装并在系统PATH中可用。

配置

克劳德桌面配置(v1.2.0)

将此添加到您的Claude Desktop配置文件中(通常位于 %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "curl-mcp-server": {
      "command": "node",
      "args": ["C:\\claude\\curl-mcp-server\\index.js"],
      "env": {}
    }
  }
}

使用示例

简单GET请求

{
  "tool": "curl_request",
  "args": {
    "url": "https://api.github.com/users/octocat"
  }
}

响应格式(v1.2.0)

所有响应现在都直接返回干净的JSON或文本数据,使GPT模型更容易处理:

{
  "tool": "curl_request",
  "args": {
    "url": "https://fapi.binance.com/fapi/v1/exchangeInfo"
  }
}

直接返回实际的API响应,而不使用元数据包装器。

具有大小限制的大响应

{
  "tool": "curl_request",
  "args": {
    "url": "https://fapi.binance.com/fapi/v1/exchangeInfo",
    "max_response_size": 500000
  }
}

带数据的POST请求

{
  "tool": "curl_request",
  "args": {
    "url": "https://httpbin.org/post",
    "method": "POST",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Bearer your-token"
    },
    "data": "{\"name\": \"John\", \"email\": \"john@example.com\"}"
  }
}

下载文件

{
  "tool": "curl_download",
  "args": {
    "url": "https://example.com/file.zip",
    "output_path": "C:\\downloads\\file.zip"
  }
}

具有自定义响应大小限制的请求

{
  "tool": "curl_request",
  "args": {
    "url": "https://api.example.com/large-dataset",
    "method": "GET",
    "max_response_size": 1000000,
    "headers": {
      "Accept": "application/json"
    }
  }
}

响应大小限制

服务器现在会自动限制响应大小,以防止系统不堪重负:

  • 默认限制:800KB(800000字节)
  • 可定制的:使用 max_response_size 参数
  • 截断信息:当响应被截断时,您将收到:
    • truncated: true
    • original_size:原始响应大小(字节)
    • truncated_size:截断后的大小
    • truncation_note:人类可读的截断消息
    • warning:关于使用max_response_size参数的建议

示例响应(v1.2.0)

对于JSON API,直接返回解析后的JSON:

{
  "result": [...],  // Direct API response
  "timestamp": "2024-01-01T00:00:00Z"
}

对于文本响应,返回原始文本:

Plain text response from the server

对于错误,返回一个简单的错误对象:

{
  "error": "Connection timeout"
}

安全说明

  • 此服务器在本地执行curl命令,因此请确保您信任正在访问的URL
  • 小心文件下载路径,避免覆盖重要文件
  • 考虑在沙盒环境中运行以获得额外的安全性
  • 响应大小限制有助于防止内存耗尽攻击

故障排除

  1. 未找到卷曲:确保curl已安装并位于系统PATH中
  2. 权限不足:确保输出目录存在并且可写
  3. 超时错误:增加慢速连接的超时值
  4. 大量回应:使用 max_response_size 控制截断的参数
  5. 内存问题:服务器现在通过自动截断安全地处理大型响应

参数参考

curl_request参数

  • url (必填):目标URL
  • method:HTTP方法(默认值:“GET”)
  • headers:具有自定义标头的对象
  • data:请求正文数据
  • timeout:请求超时(秒)(默认值:30)
  • follow_redirects:遵循重定向(默认:true)
  • include_headers:包含响应标头(默认值:false)
  • user_agent:自定义用户代理(默认:“curl mcp服务器/1.1.0”)
  • max_response_size:最大响应大小(以字节为单位)(默认值:800000)

依赖项

  • Node.js(v14或更高版本)
  • curl(系统依赖性)
  • @模型上下文协议/sdk

版本历史记录

  • v1.2.0版本:针对GPT模型进行了优化-默认情况下简化了响应格式,自动JSON解析,输出更清晰
  • v1.1.0版本:增加了响应大小限制,更好的错误处理,增加了缓冲区大小
  • v1.0.0:具有基本卷曲功能的初始版本

许可证

MIT许可证