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


一、Coze插件集成方案
1.1 部署方式选择
项目初期尝试采用SSE(Server-Sent Events)方式部署MCP服务,但在Coze平台配置时遇到调用失败问题。经过技术评估,我们最终选择API方式作为替代方案,确保了服务稳定性和兼容性。
1.2 云端插件配置
在Coze平台配置云端插件的步骤如下:选择"云端插件"类型,填写完整的API接口地址,最后使用JSON格式批量导入接口定义(导入模板参考:Coze官方导入文档)。
配置示例:

二、内网穿透(FRP)
由于Coze平台要求HTTPS协议的URL,而我们的服务目前部署在本地环境,需要通过内网穿透实现公网访问。
2.1 准备工作
- 服务器与域名:购买云服务器并完成域名解析备案
- SSL证书:为域名配置HTTPS证书(参考:SSL证书免费获取与配置)
- 服务发布:通过域名实现安全的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

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 关键技术点
- 从SSE迁移到API方式,确保了服务兼容性
- 通过SSL证书和TLS加密保障数据传输安全
- 合理规划端口使用,避免冲突
- 利用Nginx实现标准端口访问和负载分发
更多推荐

所有评论(0)