关于 HTTPX_MCP
HTTPX MCP 使用 httpx 库,让 AI 客户端测试 HTTP 接口。它支持常见请求方法和原始请求重放,并显示响应详情,默认限制对非公网地址的访问。
主要功能
- 01支持 7 种 HTTP 方法
- 02支持 JSON、表单和纯文本正文
- 03自定义请求头与查询参数
- 04重放捕获的原始请求
- 05显示状态码、响应头、正文和耗时
- 06默认阻止访问非公网地址
适用场景
- 01测试 REST API 端点
- 02调试时检查 HTTP 响应
- 03发送自定义请求进行安全测试
- 04重放 Burp Suite 捕获的请求
MCP 相关
它通过 `http_request` 和 `http_raw` 两个 MCP 工具发送 HTTP 请求并重放原始请求文本。服务默认阻止向非公网地址发起请求。
详细介绍
HTTPX MCP
一个基于 httpx 库构建、面向 AI 的 HTTP 接口测试 MCP 工具。
功能
- 🚀 全面支持 HTTP 方法:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS
- 📝 支持多种请求格式:JSON、表单数据、原始文本
- 🔧 自定义请求头:支持任意 HTTP 请求头
- 📋 解析原始请求:直接粘贴 Burp Suite 捕获的请求
- ⏱️ 响应详情:状态码、响应头、响应正文、耗时统计
- 🔒 SSL 控制:可选择验证 SSL 证书
安装
cd httpx-mcp
pip install -e .
或
pip install httpx-mcp
MCP 配置
添加到 MCP 配置文件中:
{
"mcpServers": {
"httpx-mcp": {
"command": "python",
"args": ["-m", "httpx_mcp.server"],
"cwd": "c:/Users/ZHEFOX/Desktop/mcptools/httpx-mcp"
}
}
}
或在安装后直接使用:
{
"mcpServers": {
"httpx-mcp": {
"command": "httpx-mcp"
}
}
}
安全
httpx-mcp 可以从 MCP 服务运行所在的机器发起出站 HTTP 请求。为降低工具调用受大模型输出或提示词注入影响时的 SSRF 风险,默认会阻止向非公共网络地址发送请求。这包括 localhost/loopback、RFC1918 私有地址范围、云元数据端点等链路本地地址、IPv6 唯一本地地址,以及其他无法通过全球路由访问的目标。每次重定向前都会验证重定向目标。
对于有意需要访问内部网络的可信隔离安全测试环境,可在 MCP 服务环境中设置 HTTPX_MCP_ALLOW_PRIVATE_NETWORK=true:
{
"mcpServers": {
"httpx-mcp": {
"command": "httpx-mcp",
"env": {
"HTTPX_MCP_ALLOW_PRIVATE_NETWORK": "true"
}
}
}
}
只有在了解启用此选项后,该工具便可访问 MCP 服务进程能够访问的任意 HTTP(S) 端点时,才启用此选项。
可用工具
1. http_request - 通用 HTTP 请求
发送任意 HTTP 请求,通过 method 参数切换请求方法。
参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
url | string | ✅ | - | 完整 URL |
method | string | - | GET | HTTP 方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS |
params | string | - | - | URL 查询参数,支持 JSON 或 key=value 格式 |
headers | string | - | - | 请求头,JSON 格式 |
body | string | - | - | 请求正文 |
content_type | string | - | application/json | Content-Type |
timeout | number | - | 30 | 超时时间,单位为秒 |
follow_redirects | boolean | - | true | 是否跟随重定向 |
verify_ssl | boolean | - | true | 是否验证 SSL |
include_headers | boolean | - | true | 是否在响应中包含请求头 |
示例:
# GET request
method="GET", url="https://httpbin.org/get"
# GET with query parameters
method="GET", url="https://httpbin.org/get", params='{"page": "1", "size": "10"}'
# POST JSON
method="POST", url="https://httpbin.org/post", body='{"name": "test", "value": 123}'
# PUT update
method="PUT", url="https://httpbin.org/put", body='{"id": 1, "name": "updated"}'
# DELETE
method="DELETE", url="https://httpbin.org/delete"
# With authentication header
method="GET", url="https://api.example.com/users", headers='{"Authorization": "Bearer token123"}'
# POST form
method="POST", url="https://httpbin.org/post", body="username=admin&password=123", content_type="application/x-www-form-urlencoded"
# Disable SSL verification
method="GET", url="https://self-signed.example.com", verify_ssl=false
2. http_raw - 原始 HTTP 请求
直接解析由 Burp Suite 等工具捕获的原始 HTTP 请求。
参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
raw_request | string | ✅ | - | 原始 HTTP 请求文本 |
base_url | string | - | - | 基础 URL(如果请求中不包含完整 URL) |
verify_ssl | boolean | - | true | 是否验证 SSL |
示例:
raw_request="""
POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/json
Cookie: session=abc123
{"username":"admin","password":"123456"}
"""
base_url="https://example.com"
响应格式
该工具会返回格式化的响应信息:
HTTP/1.1 200 OK
=== Response Headers ===
content-type: application/json
date: Mon, 01 Jan 2024 00:00:00 GMT
...
=== Response Body ===
{
"result": "success",
"data": {...}
}
=== Request Info ===
Time: 0.234s
Size: 1024 bytes
使用场景
- API 测试:快速测试 REST API 端点
- 安全测试:发送自定义载荷进行安全测试
- 接口调试:查看详细的请求/响应信息
- 请求重放:直接使用 Burp 捕获的内容重放请求
许可证
MIT
致谢
Syed Anas Mohiuddin 私下报告了 SSRF 加固问题。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。