提交qiming-mcp-proxy
This commit is contained in:
1
qiming-mcp-proxy/docker/.npmrc
Normal file
1
qiming-mcp-proxy/docker/.npmrc
Normal file
@@ -0,0 +1 @@
|
||||
registry=https://registry.npmmirror.com/
|
||||
79
qiming-mcp-proxy/docker/Dockerfile.document-parser
Normal file
79
qiming-mcp-proxy/docker/Dockerfile.document-parser
Normal file
@@ -0,0 +1,79 @@
|
||||
# 多阶段构建 Dockerfile,用于跨平台编译 document-parser 和 voice-cli
|
||||
FROM rust:1.90 AS builder
|
||||
|
||||
# 安装必要的构建依赖
|
||||
RUN apt-get update && apt-get install -y \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
openssl \
|
||||
ca-certificates \
|
||||
# C/C++ 开发环境
|
||||
build-essential \
|
||||
libc6-dev \
|
||||
gcc \
|
||||
g++ \
|
||||
# LLVM/Clang (bindgen 需要)
|
||||
libclang-dev \
|
||||
clang \
|
||||
# CMake (whisper-rs-sys 需要)
|
||||
cmake \
|
||||
make \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 验证基础环境
|
||||
RUN echo "=== Verifying build environment ===" && \
|
||||
gcc --version && \
|
||||
cmake --version && \
|
||||
echo "=== Build environment verified ==="
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 添加 glibc 目标和 rustfmt 组件
|
||||
RUN rustup target add x86_64-unknown-linux-gnu
|
||||
RUN rustup target add aarch64-unknown-linux-gnu
|
||||
RUN rustup component add rustfmt
|
||||
|
||||
# 复制整个项目
|
||||
COPY . .
|
||||
|
||||
# 设置 libclang 路径 (bindgen 需要)
|
||||
ENV LIBCLANG_PATH=/usr/lib/llvm-14/lib
|
||||
|
||||
# 根据目标架构编译所有包
|
||||
ARG TARGETARCH
|
||||
RUN echo "=== Starting build process ==="
|
||||
RUN echo "Target architecture: $TARGETARCH"
|
||||
RUN if [ "$TARGETARCH" = "arm64" ]; then \
|
||||
echo "Building for ARM64 architecture..." && \
|
||||
apt-get update && apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu && \
|
||||
else \
|
||||
echo "Building for x86_64 architecture..." && \
|
||||
fi
|
||||
|
||||
RUN cargo build --release
|
||||
|
||||
# 复制编译好的二进制文件到指定位置
|
||||
RUN mkdir -p /output && \
|
||||
if [ "$TARGETARCH" = "arm64" ]; then \
|
||||
cp target/aarch64-unknown-linux-gnu/release/document-parser /output/ && \
|
||||
cp target/aarch64-unknown-linux-gnu/release/voice-cli /output/; \
|
||||
else \
|
||||
cp target/x86_64-unknown-linux-gnu/release/document-parser /output/ && \
|
||||
cp target/x86_64-unknown-linux-gnu/release/voice-cli /output/; \
|
||||
fi
|
||||
|
||||
# 最终阶段 - 创建最小运行时镜像(document-parser)
|
||||
FROM scratch AS runtime
|
||||
COPY --from=builder /output/document-parser /document-parser
|
||||
ENTRYPOINT ["/document-parser"]
|
||||
|
||||
# 最终阶段 - 创建最小运行时镜像(voice-cli)
|
||||
FROM scratch AS runtime-voice-cli
|
||||
COPY --from=builder /output/voice-cli /voice-cli
|
||||
ENTRYPOINT ["/voice-cli"]
|
||||
|
||||
# 导出阶段 - 用于提取所有二进制文件
|
||||
FROM scratch AS export
|
||||
COPY --from=builder /output/document-parser /document-parser
|
||||
COPY --from=builder /output/voice-cli /voice-cli
|
||||
139
qiming-mcp-proxy/docker/Dockerfile.mcp-proxy
Normal file
139
qiming-mcp-proxy/docker/Dockerfile.mcp-proxy
Normal file
@@ -0,0 +1,139 @@
|
||||
# Dockerfile for mcp-proxy
|
||||
# 多阶段构建,用于构建 mcp-proxy
|
||||
# 与线上环境保持依赖一致
|
||||
|
||||
# ==============================================================================
|
||||
# 第一阶段:构建阶段
|
||||
# ==============================================================================
|
||||
FROM rust:1.92 AS builder
|
||||
|
||||
# 设置环境变量避免交互式提示
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
||||
# 设置 ARG TARGETARCH
|
||||
ARG TARGETARCH
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /build
|
||||
|
||||
# 安装构建依赖
|
||||
RUN apt-get update && apt-get install -y \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
openssl \
|
||||
ca-certificates \
|
||||
build-essential \
|
||||
libc6-dev \
|
||||
gcc \
|
||||
g++ \
|
||||
libclang-dev \
|
||||
clang \
|
||||
cmake \
|
||||
make \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 设置 libclang 路径 (bindgen 需要)
|
||||
ENV LIBCLANG_PATH=/usr/lib/llvm-14/lib
|
||||
|
||||
# 复制源代码(复制所有 workspace 成员)
|
||||
COPY Cargo.toml Cargo.lock ./
|
||||
COPY mcp-common/ ./mcp-common/
|
||||
COPY mcp-sse-proxy/ ./mcp-sse-proxy/
|
||||
COPY mcp-streamable-proxy/ ./mcp-streamable-proxy/
|
||||
COPY mcp-proxy/ ./mcp-proxy/
|
||||
COPY oss-client/ ./oss-client/
|
||||
COPY document-parser/ ./document-parser/
|
||||
COPY voice-cli/ ./voice-cli/
|
||||
COPY fastembed/ ./fastembed/
|
||||
|
||||
# 根据 TARGETARCH 设置交叉编译环境
|
||||
RUN echo "=== Starting build process ==="
|
||||
RUN echo "Target architecture: $TARGETARCH"
|
||||
RUN if [ "$TARGETARCH" = "arm64" ]; then echo "Building for ARM64 architecture..." && apt-get update && apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu; else echo "Building for x86_64 architecture..."; fi
|
||||
|
||||
# 构建 mcp-stdio-proxy
|
||||
RUN cargo build --release --bin mcp-proxy
|
||||
|
||||
# ==============================================================================
|
||||
# 第二阶段:运行阶段
|
||||
# ==============================================================================
|
||||
FROM rust:1.92 AS runtime
|
||||
|
||||
# 设置环境变量
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Asia/Shanghai
|
||||
ENV PATH="/root/.deno/bin:/root/.cargo/bin:/root/.local/bin:${PATH}"
|
||||
ENV UV_INDEX_URL=https://mirrors.aliyun.com/pypi/simple
|
||||
|
||||
# 安装基础依赖
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python3 \
|
||||
python3-venv \
|
||||
python3-dev \
|
||||
python3-pip \
|
||||
curl \
|
||||
vim \
|
||||
net-tools \
|
||||
gettext-base \
|
||||
telnet \
|
||||
wget \
|
||||
ffmpeg \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
|
||||
&& echo $TZ > /etc/timezone
|
||||
|
||||
# 安装 Node.js
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
||||
&& apt-get install -y nodejs
|
||||
|
||||
|
||||
# 安装 Deno
|
||||
RUN curl -fsSL https://deno.land/install.sh | sh
|
||||
|
||||
|
||||
# 添加uv到PATH
|
||||
ENV PATH="/root/.local/bin:${PATH}"
|
||||
|
||||
# 安装 uv
|
||||
RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
|
||||
/root/.local/bin/uv --version
|
||||
|
||||
# 创建虚拟环境
|
||||
RUN uv venv
|
||||
# 设置 uv 镜像加速地址
|
||||
ENV UV_INDEX_URL=https://mirrors.aliyun.com/pypi/simple
|
||||
|
||||
# ==============================================================================
|
||||
# 应用配置
|
||||
# ==============================================================================
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 复制构建产物
|
||||
COPY --from=builder /build/target/release/mcp-proxy ./mcp-proxy
|
||||
|
||||
# 复制默认配置文件
|
||||
COPY docker/config.yml /app/config.yml
|
||||
|
||||
# 复制 npm 配置文件(配置国内镜像源)
|
||||
COPY docker/.npmrc /root/.npmrc
|
||||
|
||||
# 复制 pip 配置文件(配置国内镜像源)
|
||||
COPY docker/pip.conf /etc/pip.conf
|
||||
|
||||
# 创建日志目录
|
||||
RUN mkdir -p /app/logs
|
||||
|
||||
# ==============================================================================
|
||||
# 暴露端口和健康检查
|
||||
# ==============================================================================
|
||||
# 暴露端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 健康检查
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
||||
CMD curl -f http://localhost:8080/health || exit 1
|
||||
|
||||
# 入口点 - 服务器模式会自动加载 /app/config.yml
|
||||
ENTRYPOINT ["/app/mcp-proxy"]
|
||||
198
qiming-mcp-proxy/docker/README.md
Normal file
198
qiming-mcp-proxy/docker/README.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# Docker 配置说明
|
||||
|
||||
本目录包含 mcp-proxy 项目的所有 Docker 相关配置文件,与线上环境保持依赖一致。
|
||||
|
||||
## 文件说明
|
||||
|
||||
### Dockerfile.mcp-proxy
|
||||
mcp-proxy 的 Docker 构建文件,采用多阶段构建:
|
||||
|
||||
**构建阶段:**
|
||||
- 基础镜像:`rust:1.90`
|
||||
- 设置时区:`Asia/Shanghai`
|
||||
- 构建命令:`cargo build --release --bin mcp-proxy`
|
||||
|
||||
**运行阶段:**
|
||||
- 基础镜像:`rust:1.90`
|
||||
- 包含完整的运行时环境(与线上环境一致)
|
||||
- 支持 Node.js 22.x、Python 3、Deno、Go 1.24.3
|
||||
|
||||
### Dockerfile.document-parser
|
||||
document-parser 和 voice-cli 的 Docker 构建文件,采用多阶段构建:
|
||||
|
||||
**构建阶段:**
|
||||
- 基础镜像:`rust:1.90`
|
||||
- 构建命令:`cargo build --release`
|
||||
|
||||
**运行阶段:**
|
||||
- 使用 `scratch` 基础镜像(最小化镜像)
|
||||
- 支持两个目标:
|
||||
- `runtime` - document-parser 运行时
|
||||
- `runtime-voice-cli` - voice-cli 运行时
|
||||
- `export` - 导出所有二进制文件
|
||||
|
||||
### config.yml
|
||||
mcp-proxy 的默认配置文件。
|
||||
|
||||
### docker-compose.yml
|
||||
Docker Compose 配置文件,用于快速启动 mcp-proxy 服务。
|
||||
|
||||
### .npmrc
|
||||
npm 国内镜像源配置(淘宝镜像),用于 Node.js 包管理:
|
||||
```ini
|
||||
registry=https://registry.npmmirror.com/
|
||||
```
|
||||
|
||||
### pip.conf
|
||||
pip 国内镜像源配置(清华大学镜像),用于 Python 包管理:
|
||||
```ini
|
||||
[global]
|
||||
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
trusted-host = pypi.tuna.tsinghua.edu.cn
|
||||
```
|
||||
|
||||
## 运行时环境
|
||||
|
||||
### mcp-proxy 容器
|
||||
|
||||
| 环境 | 版本 | 用途 |
|
||||
|------|------|------|
|
||||
| Rust | 1.90 | 基础运行时 |
|
||||
| Node.js | 22.x | run_code 功能执行 Node.js 代码 |
|
||||
| Python | 3.x + uv | run_code 功能执行 Python 代码 |
|
||||
| Deno | 最新版 | run_code 功能执行 TypeScript/JavaScript 代码 |
|
||||
| Go | 1.24.3 | run_code 功能执行 Go 代码 |
|
||||
|
||||
### 额外工具
|
||||
|
||||
| 工具 | 用途 |
|
||||
|------|------|
|
||||
| ffmpeg | 音视频处理 |
|
||||
| vim | 文本编辑 |
|
||||
| net-tools | 网络工具 |
|
||||
| telnet | 网络调试 |
|
||||
| wget | 文件下载 |
|
||||
|
||||
### document-parser/voice-cli 容器
|
||||
|
||||
使用 `scratch` 基础镜像,仅包含二进制文件,无额外依赖。
|
||||
|
||||
## 国内镜像源配置
|
||||
|
||||
容器内已配置以下国内镜像源:
|
||||
|
||||
| 工具 | 镜像源 | 配置位置 |
|
||||
|------|--------|----------|
|
||||
| npm | 淘宝镜像 | `/root/.npmrc` |
|
||||
| pip | 清华大学镜像 | `/etc/pip.conf` |
|
||||
| uv | 阿里云镜像 | `UV_INDEX_URL` 环境变量 |
|
||||
|
||||
## Go MCP 工具
|
||||
|
||||
mcp-proxy 容器内预装了 `go-mcp-mysql` 工具用于测试:
|
||||
```bash
|
||||
go install -v github.com/Zhwt/go-mcp-mysql@latest
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 构建 mcp-proxy 镜像
|
||||
|
||||
```bash
|
||||
# 使用 docker build
|
||||
docker build -f docker/Dockerfile.mcp-proxy -t mcp-proxy:latest ..
|
||||
|
||||
# 或使用 Make 命令
|
||||
make build-image
|
||||
|
||||
# 构建 ARM64 镜像
|
||||
docker build -f docker/Dockerfile.mcp-proxy --platform linux/arm64 -t mcp-proxy:latest ..
|
||||
```
|
||||
|
||||
### 构建 document-parser 镜像
|
||||
|
||||
```bash
|
||||
# 使用 docker build
|
||||
docker build -f docker/Dockerfile.document-parser --target runtime -t document-parser:latest ..
|
||||
|
||||
# 或使用 Make 命令
|
||||
make build-image-document-parser
|
||||
|
||||
# 构建 voice-cli 镜像
|
||||
docker build -f docker/Dockerfile.document-parser --target runtime-voice-cli -t voice-cli:latest ..
|
||||
```
|
||||
|
||||
### 使用 docker-compose(推荐)
|
||||
|
||||
```bash
|
||||
# 启动服务
|
||||
cd docker && docker-compose up
|
||||
|
||||
# 后台启动
|
||||
cd docker && docker-compose up -d
|
||||
|
||||
# 查看日志
|
||||
cd docker && docker-compose logs -f
|
||||
|
||||
# 停止服务
|
||||
cd docker && docker-compose down
|
||||
```
|
||||
|
||||
### 使用 Make 命令
|
||||
|
||||
```bash
|
||||
# mcp-proxy 相关
|
||||
make build-mcp-proxy-x86_64 # 构建 mcp-proxy x86_64 版本
|
||||
make build-image # 构建 mcp-proxy Docker 镜像
|
||||
make run-compose # 使用 docker-compose 启动
|
||||
|
||||
# document-parser 相关
|
||||
make build-document-parser-x86_64 # 构建 document-parser x86_64 版本
|
||||
make build-image-document-parser # 构建 document-parser Docker 镜像
|
||||
|
||||
# voice-cli 相关
|
||||
make build-voice-cli-x86_64 # 构建 voice-cli x86_64 版本
|
||||
```
|
||||
|
||||
## 环境变量
|
||||
|
||||
### mcp-proxy 容器
|
||||
|
||||
| 环境变量 | 说明 | 默认值 |
|
||||
|----------|------|--------|
|
||||
| RUST_LOG | 日志级别 | info |
|
||||
| TZ | 时区 | Asia/Shanghai |
|
||||
| UV_INDEX_URL | uv 镜像源 | https://mirrors.aliyun.com/pypi/simple |
|
||||
|
||||
## 挂载目录
|
||||
|
||||
### mcp-proxy 容器
|
||||
|
||||
- `./config.yml` - 配置文件(只读)
|
||||
- `./logs` - 日志目录(持久化)
|
||||
|
||||
## 健康检查
|
||||
|
||||
mcp-proxy 容器包含健康检查,定期检查 `/health` 端点:
|
||||
- 检查间隔:30 秒
|
||||
- 超时时间:10 秒
|
||||
- 重试次数:3 次
|
||||
- 启动等待:5 秒
|
||||
|
||||
## 线上环境一致性
|
||||
|
||||
本目录的 Dockerfile 与线上环境保持依赖一致:
|
||||
- `Dockerfile.mcp-proxy` 对应 `/Volumes/soddygo/git_work/build-agent-docker/build_config/mcp_proxy/Dockerfile`
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
docker/
|
||||
├── Dockerfile.mcp-proxy # mcp-proxy Docker 构建文件
|
||||
├── Dockerfile.document-parser # document-parser/voice-cli Docker 构建文件
|
||||
├── config.yml # mcp-proxy 默认配置
|
||||
├── docker-compose.yml # Docker Compose 配置
|
||||
├── .npmrc # npm 国内镜像源配置
|
||||
├── pip.conf # pip 国内镜像源配置
|
||||
└── README.md # 本文档
|
||||
```
|
||||
15
qiming-mcp-proxy/docker/config.yml
Normal file
15
qiming-mcp-proxy/docker/config.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
# mcp-proxy 默认配置文件(用于 Docker 环境)
|
||||
|
||||
server:
|
||||
# 监听端口
|
||||
port: 8080
|
||||
# 监听地址
|
||||
host: 0.0.0.0
|
||||
|
||||
log:
|
||||
# 日志级别: trace, debug, info, warn, error
|
||||
level: info
|
||||
# 日志文件路径(Docker 环境下输出到 stdout,此配置仅用于本地文件日志)
|
||||
path: /app/logs
|
||||
# 保留最近 N 个日志文件
|
||||
retain_days: 3
|
||||
37
qiming-mcp-proxy/docker/docker-compose.yml
Normal file
37
qiming-mcp-proxy/docker/docker-compose.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
# Docker Compose 配置文件 for mcp-proxy
|
||||
# 用于快速启动和测试 mcp-proxy 服务
|
||||
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mcp-proxy:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: docker/Dockerfile.mcp-proxy
|
||||
image: mcp-proxy:latest
|
||||
container_name: mcp-proxy
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
# 挂载配置文件(可选,用于覆盖默认配置)
|
||||
- ./config.yml:/app/config.yml:ro
|
||||
# 挂载日志目录(可选,用于持久化日志)
|
||||
- ./logs:/app/logs
|
||||
environment:
|
||||
# 日志级别(可通过环境变量覆盖配置文件)
|
||||
- RUST_LOG=info
|
||||
# 服务端口(可通过环境变量覆盖配置文件)
|
||||
- MCP_PROXY_PORT=8080
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 5s
|
||||
networks:
|
||||
- mcp-network
|
||||
|
||||
networks:
|
||||
mcp-network:
|
||||
driver: bridge
|
||||
3
qiming-mcp-proxy/docker/pip.conf
Normal file
3
qiming-mcp-proxy/docker/pip.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
[global]
|
||||
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
trusted-host = pypi.tuna.tsinghua.edu.cn
|
||||
256
qiming-mcp-proxy/docker/test/mcp-proxy.rest
Normal file
256
qiming-mcp-proxy/docker/test/mcp-proxy.rest
Normal file
@@ -0,0 +1,256 @@
|
||||
###############################################################################
|
||||
# MCP Proxy API 测试文件
|
||||
# 使用 VS Code REST Client 扩展或 IntelliJ HTTP Client 执行
|
||||
###############################################################################
|
||||
#
|
||||
# 测试流程:
|
||||
# 1. 先调用 /check_status 接口创建 MCP 服务(服务会异步启动)
|
||||
# 2. 再次调用 /check_status 确认服务状态变为 Ready
|
||||
# 3. 使用返回的 SSE/Stream URL 在 MCP 客户端中连接
|
||||
#
|
||||
# SSE 协议 URL 格式:
|
||||
# - 连接: {{baseUrl}}/mcp/sse/proxy/{mcp_id}/sse
|
||||
# - 消息: {{baseUrl}}/mcp/sse/proxy/{mcp_id}/message
|
||||
#
|
||||
# Streamable HTTP 协议 URL 格式:
|
||||
# - 请求: {{baseUrl}}/mcp/stream/proxy/{mcp_id}
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@baseUrl = http://localhost:8085
|
||||
@ssePrefix = /mcp/sse
|
||||
@streamPrefix = /mcp/stream
|
||||
|
||||
###############################################################################
|
||||
# 环境变量(根据实际情况修改)
|
||||
###############################################################################
|
||||
# 如果需要认证,取消下行注释并设置 token
|
||||
# @token = your-auth-token-here
|
||||
|
||||
# Coze API Token(用于测试 Coze MCP 服务)
|
||||
# 从环境变量 COZE_API_TOKEN 读取,使用前请设置: export COZE_API_TOKEN=your_token_here
|
||||
@cozeApiToken = {{$dotenv COZE_API_TOKEN}}
|
||||
|
||||
###############################################################################
|
||||
# 健康检查接口
|
||||
###############################################################################
|
||||
|
||||
### 健康检查
|
||||
GET {{baseUrl}}/health
|
||||
|
||||
### 就绪检查
|
||||
GET {{baseUrl}}/ready
|
||||
|
||||
###############################################################################
|
||||
# SSE 协议 - MCP 服务状态检查与创建
|
||||
###############################################################################
|
||||
|
||||
### 检查/创建 SSE 协议的 MCP 服务 - Time MCP (stdio)
|
||||
# @name checkTimeMcpSse
|
||||
POST {{baseUrl}}{{ssePrefix}}/check_status
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcpId": "time-mcp-sse",
|
||||
"mcpJsonConfig": "{\"mcpServers\":{\"time\":{\"command\":\"uvx\",\"args\":[\"mcp-server-time\"]}}}",
|
||||
"mcpType": "OneShot"
|
||||
}
|
||||
|
||||
### 检查/创建 SSE 协议的 MCP 服务 - Coze Plugin (remote URL)
|
||||
# @name checkCozeMcpSse
|
||||
POST {{baseUrl}}{{ssePrefix}}/check_status
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcpId": "coze_plugin_tianyancha",
|
||||
"mcpJsonConfig": "{\"mcpServers\":{\"coze_plugin_tianyancha\":{\"url\":\"https://mcp.coze.cn/v1/plugins/7407724292865130515\",\"headers\":{\"Authorization\":\"Bearer {{cozeApiToken}}\"}}}}",
|
||||
"mcpType": "OneShot"
|
||||
}
|
||||
|
||||
### SSE 连接端点 - 连接 Time MCP
|
||||
# 在 MCP 客户端中使用此 URL
|
||||
# SSE URL: {{baseUrl}}{{ssePrefix}}/proxy/time-mcp-sse/sse
|
||||
# Message URL: {{baseUrl}}{{ssePrefix}}/proxy/time-mcp-sse/message
|
||||
GET {{baseUrl}}{{ssePrefix}}/proxy/time-mcp-sse/sse
|
||||
Accept: text/event-stream
|
||||
|
||||
### SSE 连接端点 - 连接 Coze Plugin
|
||||
# SSE URL: {{baseUrl}}{{ssePrefix}}/proxy/coze_plugin_tianyancha/sse
|
||||
# Message URL: {{baseUrl}}{{ssePrefix}}/proxy/coze_plugin_tianyancha/message
|
||||
GET {{baseUrl}}{{ssePrefix}}/proxy/coze_plugin_tianyancha/sse
|
||||
Accept: text/event-stream
|
||||
|
||||
### SSE 发送消息示例
|
||||
POST {{baseUrl}}{{ssePrefix}}/proxy/time-mcp-sse/message
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "tools/list"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Streamable HTTP 协议 - MCP 服务状态检查与创建
|
||||
###############################################################################
|
||||
|
||||
### 检查/创建 Stream 协议的 MCP 服务 - Time MCP (stdio)
|
||||
# @name checkTimeMcpStream
|
||||
POST {{baseUrl}}{{streamPrefix}}/check_status
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcpId": "time-mcp-stream",
|
||||
"mcpJsonConfig": "{\"mcpServers\":{\"time\":{\"command\":\"uvx\",\"args\":[\"mcp-server-time\"]}}}",
|
||||
"mcpType": "OneShot"
|
||||
}
|
||||
|
||||
### 检查/创建 Stream 协议的 MCP 服务 - Coze Plugin (remote URL)
|
||||
# @name checkCozeMcpStream
|
||||
POST {{baseUrl}}{{streamPrefix}}/check_status
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcpId": "coze_plugin_tianyancha_stream",
|
||||
"mcpJsonConfig": "{\"mcpServers\":{\"coze_plugin_tianyancha\":{\"url\":\"https://mcp.coze.cn/v1/plugins/7407724292865130515\",\"headers\":{\"Authorization\":\"Bearer {{cozeApiToken}}\"}}}}",
|
||||
"mcpType": "OneShot"
|
||||
}
|
||||
|
||||
### Streamable HTTP 请求 - Time MCP
|
||||
# 在 MCP 客户端中使用此 URL
|
||||
# Stream URL: {{baseUrl}}{{streamPrefix}}/proxy/time-mcp-stream
|
||||
POST {{baseUrl}}{{streamPrefix}}/proxy/time-mcp-stream
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "tools/list"
|
||||
}
|
||||
|
||||
### Streamable HTTP 请求 - Coze Plugin
|
||||
POST {{baseUrl}}{{streamPrefix}}/proxy/coze_plugin_tianyancha_stream
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "tools/list"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# 查询服务状态(GET 方式)
|
||||
###############################################################################
|
||||
|
||||
### 查询 Time MCP SSE 服务状态
|
||||
GET {{baseUrl}}/mcp/check/status/time-mcp-sse
|
||||
|
||||
### 查询 Coze Plugin SSE 服务状态
|
||||
GET {{baseUrl}}/mcp/check/status/coze_plugin_tianyancha
|
||||
|
||||
### 查询 Time MCP Stream 服务状态
|
||||
GET {{baseUrl}}/mcp/check/status/time-mcp-stream
|
||||
|
||||
###############################################################################
|
||||
# 添加路由(/mcp/sse/add)- 同步方式创建服务
|
||||
# 注意:此接口使用 snake_case 参数名
|
||||
###############################################################################
|
||||
|
||||
### 添加 Time MCP 服务(同步创建)
|
||||
POST {{baseUrl}}{{ssePrefix}}/add
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcp_json_config": "{\"mcpServers\":{\"time\":{\"command\":\"uvx\",\"args\":[\"mcp-server-time\"]}}}",
|
||||
"mcp_type": "OneShot"
|
||||
}
|
||||
|
||||
### 添加 Coze Plugin 服务(同步创建)
|
||||
POST {{baseUrl}}{{ssePrefix}}/add
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcp_json_config": "{\"mcpServers\":{\"coze_plugin_tianyancha\":{\"url\":\"https://mcp.coze.cn/v1/plugins/7407724292865130515\",\"headers\":{\"Authorization\":\"Bearer {{cozeApiToken}}\"}}}}",
|
||||
"mcp_type": "OneShot"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# MCP 客户端配置示例
|
||||
###############################################################################
|
||||
|
||||
### 在 Claude Desktop 或其他 MCP 客户端中使用以下配置:
|
||||
|
||||
# SSE 协议配置(Time MCP):
|
||||
# {
|
||||
# "mcpServers": {
|
||||
# "time-proxy": {
|
||||
# "url": "http://localhost:3000/mcp/sse/proxy/time-mcp-sse/sse"
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
# SSE 协议配置(Coze Plugin):
|
||||
# {
|
||||
# "mcpServers": {
|
||||
# "coze-proxy": {
|
||||
# "url": "http://localhost:3000/mcp/sse/proxy/coze_plugin_tianyancha/sse"
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
# Streamable HTTP 协议配置(Time MCP):
|
||||
# {
|
||||
# "mcpServers": {
|
||||
# "time-proxy-stream": {
|
||||
# "url": "http://localhost:3000/mcp/stream/proxy/time-mcp-stream",
|
||||
# "type": "streamable-http"
|
||||
# }
|
||||
# }
|
||||
# }
|
||||
|
||||
###############################################################################
|
||||
# 常用 MCP 服务配置示例
|
||||
###############################################################################
|
||||
|
||||
### 文件系统 MCP
|
||||
POST {{baseUrl}}{{ssePrefix}}/check_status
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcpId": "filesystem-mcp",
|
||||
"mcpJsonConfig": "{\"mcpServers\":{\"filesystem\":{\"command\":\"npx\",\"args\":[\"-y\",\"@modelcontextprotocol/server-filesystem\",\"/tmp\"]}}}",
|
||||
"mcpType": "OneShot"
|
||||
}
|
||||
|
||||
### GitHub MCP
|
||||
POST {{baseUrl}}{{ssePrefix}}/check_status
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcpId": "github-mcp",
|
||||
"mcpJsonConfig": "{\"mcpServers\":{\"github\":{\"command\":\"npx\",\"args\":[\"-y\",\"@modelcontextprotocol/server-github\"],\"env\":{\"GITHUB_PERSONAL_ACCESS_TOKEN\":\"your-github-token\"}}}}",
|
||||
"mcpType": "OneShot"
|
||||
}
|
||||
|
||||
### SQLite MCP
|
||||
POST {{baseUrl}}{{ssePrefix}}/check_status
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"mcpId": "sqlite-mcp",
|
||||
"mcpJsonConfig": "{\"mcpServers\":{\"sqlite\":{\"command\":\"uvx\",\"args\":[\"mcp-server-sqlite\",\"--db-path\",\"/tmp/test.db\"]}}}",
|
||||
"mcpType": "OneShot"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# 删除服务路由
|
||||
###############################################################################
|
||||
|
||||
### 删除 Time MCP SSE 服务
|
||||
DELETE {{baseUrl}}/mcp/config/delete/time-mcp-sse
|
||||
|
||||
### 删除 Coze Plugin SSE 服务
|
||||
DELETE {{baseUrl}}/mcp/config/delete/coze_plugin_tianyancha
|
||||
|
||||
### 删除 Time MCP Stream 服务
|
||||
DELETE {{baseUrl}}/mcp/config/delete/time-mcp-stream
|
||||
Reference in New Issue
Block a user