背景

在火山引擎举办的"火山杯"AI应用创新大赛中,我们设计了一款基于Agent的含能分子性质预测与分析应用。深度集成EM-Studio内部功能,通过开放MCP服务,并借助Coze平台编排工作流,实现了用户在线事件驱动下基于Smiles的AI大模型自主决策分子性质预测、2D图像生成、分析以及分子生成。效果如下`:

image-20251220143001058image-20251220143943511

一、Coze插件集成方案

1.1 部署方式选择

项目初期尝试采用SSE(Server-Sent Events)方式部署MCP服务,但在Coze平台配置时遇到调用失败问题。经过技术评估,我们最终选择API方式作为替代方案,确保了服务稳定性和兼容性。

1.2 云端插件配置

在Coze平台配置云端插件的步骤如下:选择"云端插件"类型,填写完整的API接口地址,最后使用JSON格式批量导入接口定义(导入模板参考Coze官方导入文档)。

配置示例
云端插件配置界面

API接口导入界面

二、内网穿透(FRP)

由于Coze平台要求HTTPS协议的URL,而我们的服务目前部署在本地环境,需要通过内网穿透实现公网访问。

2.1 准备工作

  1. 服务器与域名:购买云服务器并完成域名解析备案
  2. SSL证书:为域名配置HTTPS证书(参考:SSL证书免费获取与配置
  3. 服务发布:通过域名实现安全的HTTPS访问

2.2 技术选型:FRP内网穿透

我们选择FRP作为内网穿透工具,它具有配置简单、性能稳定、支持多协议等优势。

三、FRP服务端配置

3.1 环境准备

# 下载FRP(选择对应版本)
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

# 解压安装包
tar -zxvf frp_0.65.0_linux_amd64.tar.gz
cd frp_0.65.0_linux_amd64

FRP版本选择

3.2 配置文件(frps.toml)

# 基础连接配置
bindPort = 7000  # FRP服务监听端口

# HTTP/HTTPS服务端口
vhostHTTPPort = 8101      # HTTP服务端口
vhostHTTPSPort = 8443     # HTTPS服务端口

# Web控制台配置
webServer.port = 7500
webServer.user = "admin"
webServer.password = "1234"

# 安全配置
transport.tls.force = true  # 强制TLS加密

端口选择说明:由于服务器80/443端口已被Nginx占用,我们使用8101和8443作为替代端口。

3.3 服务启动与验证

# 启动FRP服务
./frps -c ./frps.toml

启动成功后显示:

frps tcp listen on 0.0.0.0:7000
http service listen on 0.0.0.0:8101
https service listen on 0.0.0.0:8443
dashboard listen on 127.0.0.1:7500
frps started successfully

服务启动成功

注意:这个地方的7500控制台需要隧道访问

3.4 Nginx反向代理配置

为实现标准的HTTPS访问(443端口),配置Nginx反向代理:

server {
    listen 80;
    server_name sse.xxxxx.xyz;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name sse.xxxxx.xyz;
    
    # SSL证书配置
    ssl_certificate /data/ssl_certificate/sse.xxxxx.xyz.pem;
    ssl_certificate_key /data/ssl_certificate/sse.xxxxx.xyz.key;
    
    location / {
        # 反向代理到FRP服务
        proxy_pass http://127.0.0.1:8101;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

四、FRP客户端配置

4.1 配置文件(frpc.toml)

# 连接服务端配置
serverAddr = "117.xxx.xxx.125"  # FRP服务端公网IP
serverPort = 7000               # 服务端bindPort

# 传输协议
transport.protocol = "tcp"

# 身份验证
auth.method = "token"
auth.token = "你的安全token"

# 代理配置
[[proxies]]
name = "sse-web"
type = "http"
localIP = "127.0.0.1"
localPort = 8080  # 本地服务端口
customDomains = ["sse.xxxxx.xyz"]

4.2 客户端启动

# 启动FRP客户端
./frpc -c frpc.toml

LAST:

用户访问 → HTTPS://sse.xxxxx.xyz → Nginx(443) → 
FRP服务端(8101) → FRP客户端 → 本地服务(8080)

五、总结

5.1 关键技术点

  1. 从SSE迁移到API方式,确保了服务兼容性
  2. 通过SSL证书和TLS加密保障数据传输安全
  3. 合理规划端口使用,避免冲突
  4. 利用Nginx实现标准端口访问和负载分发

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐