通过MCP发送通用HTTP请求并获得标准化的API响应。
一种模型上下文协议(MCP)服务器,它公开HTTP/HTTPS请求执行,用于测试API、集成web服务和在代理工作流中获取远程数据。
______________________________________________________________________
概述
CL HTTP MCP服务器提供无状态、与身份无关的HTTP访问:
- 多方法请求执行(GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS)
- 使用标头、查询参数和JSON/原始正文进行灵活的请求整形
- 具有元数据、截断处理和JSON/body规范化的结构化响应有效载荷
非常适合:
- 从MCP兼容客户端调用外部REST API
- 快速测试Webhook和端点集成
- 在自动化和多代理系统中检索远程内容
______________________________________________________________________
工具
health_check — Check server readiness
返回一个轻量级的就绪负载,以便客户端可以验证服务器是否已启动。
输入:
- 无
输出:
{
"status": "ok",
"server": "CL HTTP MCP Server"
}使用示例:
POST /mcp/http/health_check
{}______________________________________________________________________
http_request — Execute an HTTP/HTTPS request
执行出站HTTP调用并返回规范化的请求/响应详细信息,包括状态、标头、经过的时间和序列化的正文内容。
输入:
method(string,必填)--HTTP方法(GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS)url(字符串,必填)--以开头的绝对目标URLhttp://或https://headers(object,可选)--请求头作为键/值对params(object,可选)--将字符串参数作为键/值对进行查询json_body(any,可选)--JSON有效载荷正文body(string,可选)--原始字符串有效负载体(不能与json_body)timeout_seconds(number,可选)--HTTP超时时间(秒)(默认值:30.0)follow_redirects(布尔值,可选)--是否遵循重定向(默认值:true)max_response_chars(整数,可选)--返回的最大正文字符数/字节数(默认值:50000)
输出:
{
"request": {
"method": "GET",
"url": "https://httpbin.org/get",
"headers": {
"accept": "application/json"
},
"params": {
"source": "cl-mcp-http"
},
"timeout_seconds": 30.0,
"follow_redirects": true,
"max_response_chars": 50000
},
"response": {
"url": "https://httpbin.org/get?source=cl-mcp-http",
"status_code": 200,
"reason_phrase": "OK",
"headers": {
"content-type": "application/json"
},
"elapsed_ms": 94.17,
"body": {
"kind": "text",
"content": "{...}",
"truncated": false,
"original_length": 312,
"json": {
"args": {
"source": "cl-mcp-http"
}
}
}
}
}使用示例:
POST /mcp/http/http_request
{
"method": "GET",
"url": "https://httpbin.org/get",
"headers": {
"accept": "application/json"
},
"params": {
"source": "cl-mcp-http"
}
}______________________________________________________________________
API Parameters Reference
公共参数
timeout_seconds--HTTP请求允许的最长时间(秒)follow_redirects--控制是否自动遵循3xx重定向max_response_chars--限制工具返回的响应体大小
资源格式
URL输入:
https://{host}/{path}?{query}
Example: https://api.example.com/v1/items?limit=10响应体对象:
kind: text | base64
content: string
truncated: boolean
original_length: integer
json: object (only for parseable JSON responses)______________________________________________________________________
Troubleshooting
无效的URL格式
- 原因:
url不以开头http://或https:// - 解决方案:
1. 提供完整的绝对URL(包括协议) 1. 验证主机/路径中没有拼写错误
不支持的HTTP方法
- 原因:
method超出允许设置 - 解决方案:
1. 使用以下选项之一: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS 1. 确保方法以字符串形式传递
身体输入冲突
- 原因: 两者
json_body和body在同一请求中提供 - 解决方案:
1. 使用 json_body 对于JSON有效载荷 1. 使用 body 用于原始文本有效载荷 1. 每次通话只发送一个正文字段
超时或上游网络错误
- 原因: 端点速度慢、网络问题或无法访问主机
- 解决方案:
1. 增加 timeout_seconds 对于长时间运行的端点 1. 确认端点可公开访问 1. 使用减少的有效负载或简化的查询参数重试
响应体似乎被截断
- 原因: 超出响应大小
max_response_chars - 解决方案:
1. 增加 max_response_chars 如果需要更大的输出 1. 从上游API请求具有过滤器/分页的较小有效载荷
______________________________________________________________________
Resources
- HTTP方法参考(MDN) --官方方法行为文档
- HTTP状态代码(MDN) --标准HTTP响应状态参考
- httpx文档 --此服务器使用的Python HTTP客户端
- FastMCP文档 --FastMCP框架和协议使用
______________________________________________________________________
设置
pip install -r requirements.txt运行服务器
# stdio
python server.py
# sse
python server.py --transport sse --host 127.0.0.1 --port 8001
# streamable-http
python server.py --transport streamable-http --host 127.0.0.1 --port 8001