# MCP Server 调用文档

## 服务信息

- **服务地址**: `http://192.168.192.223:18082/sse`
- **传输协议**: SSE（Server-Sent Events）
- **监听端口**: `18082`
- **监听地址**: `0.0.0.0`（本机所有网卡，内网其他机器可直接访问）

MCP Server 统一封装了本机三个内部服务：

| 内部服务 | 本机地址 | 说明 |
|---------|---------|------|
| RAG 知识库 | `http://127.0.0.1:8765` | 向量检索 |
| SeaweedFS Filer | `http://127.0.0.1:8888` | 文件存储 |
| 邮件网关 | `http://127.0.0.1:18081` | 发邮件 + RAG/FS 代理 |

---

## 可用 Tools

### 1. `rag_query`

- **描述**: 查询 RAG 知识库，搜索相关文档内容
- **参数**:
  - `q` (string, required): 搜索关键词
- **示例**:
  ```json
  {
    "q": "部署文档"
  }
  ```

### 2. `fs_list`

- **描述**: 列出 SeaweedFS 文件存储的目录内容
- **参数**:
  - `path` (string, optional, default: `/`): 目录路径
- **示例**:
  ```json
  {
    "path": "/ota"
  }
  ```

### 3. `fs_download`

- **描述**: 从 SeaweedFS 文件存储下载文件，返回文件内容（Base64 编码）
- **参数**:
  - `path` (string, required): 文件完整路径
- **示例**:
  ```json
  {
    "path": "/ota/0018/mcu_app.bin"
  }
  ```
- **返回值**:
  ```json
  {
    "path": "/ota/0018/mcu_app.bin",
    "size": 123456,
    "content_base64": "..."
  }
  ```

### 4. `send_email`

- **描述**: 发送邮件到指定邮箱
- **参数**:
  - `subject` (string, required): 邮件标题
  - `body` (string, required): 邮件正文
  - `to` (string, optional, default: `691622093@qq.com`): 收件人邮箱
- **示例**:
  ```json
  {
    "subject": "测试邮件",
    "body": "这是一封测试邮件",
    "to": "691622093@qq.com"
  }
  ```

---

## 其他机器如何配置 MCP Client

### 方式一：Hermes Agent

在 `~/.hermes/config.yaml` 中添加：

```yaml
mcp_servers:
  local-services:
    transport: sse
    url: http://192.168.192.223:18082/sse
```

重启 Hermes 后，tools 会自动加载，对话中可直接调用 `rag_query`、`fs_list`、`fs_download`、`send_email`。

### 方式二：通用 MCP Client（Python）

```python
import asyncio
from mcp import ClientSession
from mcp.client.sse import sse_client

async def main():
    async with sse_client("http://192.168.192.223:18082/sse") as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print(tools)

            result = await session.call_tool("rag_query", {"q": "关键词"})
            print(result)

asyncio.run(main())
```

### 方式三：直接 HTTP 调用（不经过 MCP）

如果客户端不支持 MCP，也可以直接调用邮件网关的 REST 接口：

```bash
# 查 RAG（中文需 URL 编码）
curl "http://192.168.192.223:18081/rag/query?q=%E6%B5%B7%E8%97%BB"

# 列目录
curl "http://192.168.192.223:18081/fs/list?path=/"

# 下载文件
curl -o xxx.bin "http://192.168.192.223:18081/fs/download?path=/ota/0018/mcu_app.bin"

# 发邮件
curl -X POST "http://192.168.192.223:18081/send-email" \
  -F "subject=测试" -F "body=你好" -F "to=691622093@qq.com"
```

---

## 启动/停止 MCP Server

代码位置: `/home/jyq/mcp-server/main.py`

启动：

```bash
cd /home/jyq/mcp-server && source venv/bin/activate
nohup python3 main.py > /tmp/mcp_server.log 2>&1 &
```

停止：

```bash
# 找到监听 18082 的 python3 进程并 kill
ss -ltnp | grep 18082
kill <PID>
```

日志文件: `/tmp/mcp_server.log`
