HTTP流式服务器

一个提供HTTP流式传输功能的MCP服务器,支持分块传输、完整HTTP请求和服务器发送事件(SSE)。

  • by teerarak
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 teerarak/MCP-App

使用说明

MCP流HTTP服务器

一个提供HTTP流媒体功能的模型上下文协议(MCP)服务器。该服务器使AI助手能够获取和流式传输HTTP内容,包括对服务器发送事件(SSE)的支持。

特点/功能

  • HTTP 流媒体以块为单位流式传输大型HTTP响应
  • 完整的HTTP获取获取包含完整元数据的整个HTTP响应
  • **服务器发送事件(SSE)**实时解析和流式传输SSE事件
  • 灵活的HTTP方法支持 GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS 方法
  • 自定义头部为请求添加自定义头部
  • 请求体支持POST/PUT/PATCH操作中的请求体

安装

npm install
npm run build

可用工具

1. stream_http(直译为“流_HTTP”,但通常根据上下文可理解为“HTTP流传输”或“基于HTTP的流”)

以块的形式流式传输HTTP响应内容。适用于大型响应或实时数据流。

参数:

  • url (必填):要获取的URL
  • method (可选):HTTP 方法(GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS)。默认:GET
  • headers (可选):以键值对形式表示的HTTP头部
  • body (可选):POST、PUT、PATCH 请求的请求体
  • chunkSize (可选):每个数据块的大小(以字节为单位)。默认值:1024

回应:

{
  "success": true,
  "url": "https://example.com",
  "method": "GET",
  "statusCode": 200,
  "statusText": "OK",
  "headers": {...},
  "chunksReceived": 5,
  "totalBytes": 5120,
  "content": "...",
  "chunks": [
    {
      "index": 0,
      "size": 1024,
      "timestamp": 1234567890
    }
  ]
}

2. fetch_http(获取HTTP)

获取包含完整元数据的完整HTTP响应。

参数:

  • url (必需):要获取的URL
  • method (可选):HTTP 方法。默认:GET
  • headers (可选):以键值对形式表示的HTTP头
  • body (可选):POST、PUT、PATCH 请求的请求体

回答:

{
  "success": true,
  "url": "https://example.com",
  "method": "GET",
  "statusCode": 200,
  "statusText": "OK",
  "headers": {...},
  "contentLength": 5120,
  "content": "..."
}

3. stream_sse(可译为“服务器发送事件流”或根据上下文具体含义翻译)

从给定的URL流式传输服务器发送的事件。解析并返回到达的SSE(Server-Sent Events)事件。

参数:

  • url (必需):SSE 端点 URL
  • headers (可选):HTTP 头作为键值对
  • maxEvents (可选):要接收的最大事件数。默认值:100

回答:

{
  "success": true,
  "url": "https://example.com/events",
  "eventsReceived": 10,
  "events": [
    {
      "id": "1",
      "event": "message",
      "data": "Event data",
      "timestamp": 1234567890
    }
  ]
}

配置

与Claude Desktop一起使用

将此添加到您的Claude桌面配置文件中:

MacOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "stream-http": {
      "command": "node",
      "args": ["/path/to/MCP-App/dist/index.js"]
    }
  }
}

与其他MCP客户端一起使用

服务器使用stdio传输方式,并且可以与任何兼容MCP的客户端进行集成。

使用示例

示例1:获取网页

// Using the fetch_http tool
{
  "url": "https://api.example.com/data",
  "method": "GET",
  "headers": {
    "User-Agent": "MCP-Client/1.0"
  }
}

示例2:流式传输大响应

// Using the stream_http tool
{
  "url": "https://example.com/large-file",
  "method": "GET",
  "chunkSize": 2048
}

示例3:带有请求体的POST请求

// Using the fetch_http tool
{
  "url": "https://api.example.com/submit",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": "{\"key\": \"value\"}"
}

示例4:流式服务器发送事件

// Using the stream_sse tool
{
  "url": "https://example.com/events",
  "maxEvents": 50
}

发展

构建

npm run build

手表模式

npm run dev

运行服务器

npm start

错误处理

所有工具都返回一种统一的错误格式:

{
  "success": false,
  "error": "Error message here",
  "url": "https://example.com"
}

技术细节

  • 协议;议定书模型上下文协议(MCP)
  • 交通stdio(标准输入输出)
  • 运行时Node.js
  • 语言TypeScript
  • SDK 版本@modelcontextprotocol/sdk ^1.0.4

建筑学

服务器实现了三种主要工具:

  1. **stream_http(在中文语境下,这个术语通常直接保留原样,因为它是一个特定的技术或网络领域的术语,没有直接的中文对应词汇。但如果需要解释性翻译,可以理解为“HTTP流”或“基于HTTP的流传输”,不过具体翻译还需根据上下文来确定。)**使用 Node.js 流按块处理 HTTP 响应
  2. **fetch_http 可以翻译为“获取HTTP资源”或“通过HTTP获取”**使用 node-fetch 获取完整响应
  3. **stream_sse(可译为“服务器发送事件流”或根据具体上下文简化为“SSE流”,但通常直接保留为“stream_sse”以指代特定技术或功能)**解析服务器发送事件(Server-Sent Events)协议,并进行适当的事件解析

所有工具包括:

  • 全面的错误处理
  • 详细的响应元数据
  • 时间戳追踪
  • 灵活的配置选项

许可证

麻省理工学院(MIT)

贡献

欢迎贡献!请随时提交拉取请求。

支持

对于问题和疑问,请在GitHub仓库中提交一个议题。