Skip to main content
Glama
LING71671

Grok HTTP MCP Server

by LING71671
README.md
# Grok HTTP MCP Server

> [!WARNING]
> **本项目已归档 (Archived)**
>
> 归档原因:作者认为这个项目没啥价值,有点傻。不再进行任何维护与更新。

[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)

[English](README.en.md)

基于 Cloudflare Workers 的 MCP 服务器,为 Grok 提供底层 HTTP 能力,适用于 Web/CTF 场景:任意请求、Cookie 会话持久化、重定向追踪与结构化响应。

## 功能特性

- **`http_request`** — 发送任意 HTTP 方法,完全控制 URL、Header、Body、Cookie
- **`http_session`** — 管理命名 Cookie 容器(`default`、`victim`、`attacker` 等)
- **会话持久化** — 通过 Durable Objects 跨多次 tool call 保持 Cookie
- **双传输协议** — Streamable HTTP(`/mcp`)与旧版 SSE(`/sse`)
- **默认无鉴权** — 便于 CTF/测试快速接入(见下方安全说明)

## 快速开始

```bash
npm install
npx wrangler login
npm run dev
```

健康检查:`http://127.0.0.1:8787/health`

部署:

```bash
npm run deploy
```

部署完成后会显示 Worker 地址(例如 `https://grok2web.<account>.workers.dev`)。

## Grok 自定义连接器

1. 打开 [grok.com/connectors](https://grok.com/connectors)
2. 点击 **New Connector** → **Custom**(新建连接器 → 自定义)
3. 填入以下 URL 之一:
   - **推荐:** `https://<your-worker>.workers.dev/mcp`
   - **SSE 兼容:** `https://<your-worker>.workers.dev/sse`
4. 填写名称(如 `Grok HTTP MCP`)并保存

Grok 会自动发现 `http_request` 和 `http_session` 两个工具。

## 工具说明

### `http_request`

```json
{
  "method": "POST",
  "url": "https://target.example/login",
  "headers": { "Content-Type": "application/x-www-form-urlencoded" },
  "body": "user=admin&pass=test",
  "http_session_id": "default",
  "follow_redirects": true,
  "timeout_ms": 30000
}
```

返回字段包括:`status`、`headers`、`cookies_set`、`cookies_jar`、`body`、`redirect_chain`、`timing_ms`。

### `http_session`

| action | 说明 |
|--------|------|
| `list` | 列出所有会话及 Cookie 数量 |
| `create` | 创建命名空 Cookie 容器 |
| `reset` | 清空指定会话的 Cookie |
| `get_cookies` | 读取全部 Cookie(含 domain/path 元数据) |
| `set_cookies` | 手动注入 Cookie |
| `delete` | 删除命名会话(不可删除 `default`) |

## CTF 示例流程

**步骤 1 — 设置 Cookie:**

```json
{
  "method": "GET",
  "url": "https://httpbin.org/cookies/set?session=abc123"
}
```

**步骤 2 — 验证持久化:**

```json
{
  "method": "GET",
  "url": "https://httpbin.org/cookies"
}
```

第二次请求会自动携带 `session=abc123`。

**并行会话(多角色攻击链):**

```json
{ "action": "create", "session_id": "victim" }
```

之后在 `http_request` 中使用 `"http_session_id": "victim"`。

## 本地测试

```bash
npm run verify                    # MCP + Cookie 持久化测试
npx @modelcontextprotocol/inspector
```

连接 `http://127.0.0.1:8787/mcp`,在 UI 中调用工具。

## 安全说明

当前部署**无鉴权**。任何知道 URL 的人均可通过 Worker 发送 HTTP 请求。仅建议用于 CTF 实验和测试环境;生产使用前请添加 API Key 或 OAuth。

## 项目结构

```
src/
├── index.ts           # /mcp、/sse、/health 路由
├── mcp-agent.ts       # GrokHttpMCP(McpAgent + DO 状态)
├── tools/
│   ├── http-request.ts
│   └── http-session.ts
└── lib/
    ├── cookie-jar.ts
    ├── http-client.ts
    ├── response-format.ts
    └── session-store.ts
```

## 许可证

本项目采用 [GNU General Public License v3.0 或更高版本](LICENSE) 授权。