拓冰建站拓冰建站
首页 / 资讯中心 / 正文

用 MCPO 与 Cloudflare Tunnel 将 Serena MCP 服务器接入 ChatGPT(Custom GPT)

用 MCPO 与 Cloudflare Tunnel 将 Serena MCP 服务器接入 ChatGPTCustom GPT【免费下载链接】serenaA powerful MCP toolkit for coding, providing semantic retrieval and editing capabilities - the IDE for your agent项目地址: https://gitcode.com/GitHub_Trending/ser/serena导读本指南讲解如何把本地运行的Serena MCP 服务器借助 MCPO 转换为 HTTP 服务通过Cloudflare Tunnel安全地暴露到公网并在ChatGPT 中创建带工具调用能力的 Custom GPT。配置完成后ChatGPT 将成为直接读写你代码库、文件系统和 Shell 的编码 Agent能够索引、搜索、编辑代码甚至按配置执行命令。全文基于仓库文档 docs/03-special-guides/serena_on_chatgpt.md 展开并结合仓库源码补充底层原理与安全细节。前置条件开始前请确保本机已安装两个命令行工具uv用于通过uvx运行 MCPO 与 Serena 本身Serena 的依赖管理、安装与 CLI 均围绕 uv 工作流设计仓库根目录的uv.lock与pyproject.toml即由 uv 维护。cloudflaredCloudflare Tunnel 官方客户端负责把本地端口安全地暴露为公网 HTTPS 地址。此外需要拥有一个 ChatGPT 账号并在 ChatGPT → Explore GPTs → Create 页面具备创建 Custom GPT 的权限。1. 用 MCPO 启动 Serena MCP 服务器Serena 自带start-mcp-server子命令用于以 MCP 服务器模式启动。MCPOMCP 到 OpenAI 协议的代理则将其封装为带 API Key 鉴权的 HTTP 服务。执行uvx mcpo --port 8000 --api-key YOUR_SECRET_KEY -- \ serena start-mcp-server --context chatgpt --project $(pwd)各参数含义uvx mcpo --port 8000MCPO 监听 8000 端口--api-key YOUR_SECRET_KEY必填为 HTTP 服务设置访问密钥后续 ChatGPT 将用它做 Bearer 鉴权--之后是传给serena start-mcp-server的参数--context chatgpt使用内置的chatgpt上下文见下文源码分析--project $(pwd)将当前工作目录激活为项目根目录即你的代码库根目录。--project参数指向代码库根目录如果希望同时处理多个项目或稍后再通过工具激活项目也可以不传--project。完整的选项列表可通过帮助命令查看serena start-mcp-server --help从源码看start-mcp-server的更多可选参数从仓库源码 src/serena/cli.py 可以看到该命令还支持一批可用于生产部署的选项选项默认值说明--transportstdio传输协议可选stdio、sse、streamable-http。本指南中 MCPO 负责提供 HTTP 能力故 Serana 侧保持默认即可--host/--port127.0.0.1/8000HTTP 传输下的监听地址与端口--context内置默认上下文内置上下文名或自定义上下文 YAML 路径chatgpt是其中之一--mode/--add-mode空叠加默认模式或新增模式用于调整 Agent 行为--enable-web-dashboard跟随配置是否启用 Serena Web Dashboard推荐启用便于监控会话与工具调用--open-web-dashboard跟随配置启动后是否自动在浏览器打开 Dashboard--enable-gui-log-window跟随配置是否启用 GUI 日志窗口当前仅展示日志--log-level跟随配置覆盖日志级别DEBUG/INFO/WARNING/ERROR/CRITICAL--tool-timeout跟随配置覆盖工具执行超时时间--trace-lsp-communication关闭是否跟踪 LSP 通信用于排查语言服务器问题--project-from-cwd关闭从当前工作目录自动探测最近包含.serena/project.yml或.git的目录并激活项目适合 CLI 型 Agent如 Claude Code、Gemini、Codex日志方面启动时会同时向 stderr、内存日志处理器和SerenaPaths().get_next_log_file_path(mcp)对应的日志文件输出且明确禁止向 stdout 写日志——因为 stdout 是 MCP 服务器与客户端通信的通道见 src/serena/cli.py。这在通过 MCPO 做协议转换时尤其重要任何污染 stdout 的输出都会破坏协议流。--context chatgpt的底层作用在 src/serena/mcp.py 中服务器启动后会检查当前上下文名openai_tool_compatible self.context.name in [chatgpt, codex, oaicompat-agent]当使用--context chatgpt或codex、oaicompat-agent时Serena 会把所有 MCP 工具的工具 Schema 处理为OpenAI 工具兼容格式并依据上下文配置决定是否使用结构化输出。这正是 ChatGPTCustom GPT能够直接识别并自动生成函数调用的关键——普通 MCP 客户端无需这一层转换而 OpenAI 生态则需要。2. 用 Cloudflare Tunnel 暴露服务器保持第 1 步的服务器运行另开一个终端执行cloudflared tunnel --url http://localhost:8000cloudflared 会创建一个到本地 8000 端口的公网隧道并返回一个类似下面的HTTPS 公网 URLhttps://serena-agent-tunnel.trycloudflare.com此时服务器已经通过安全的 HTTPS 通道暴露到公网。注意trycloudflare.com是 Cloudflare 的快速隧道Quick Tunnel域名URL 为随机生成适合临时联调生产场景可改用命名隧道named tunnel以固定域名。该 URL 是敏感信息它指向你本机的代码库与 Shell。不要把它贴到公开渠道也不要长期无人值守地挂着详见第 4 节安全警告。3. 连接到 ChatGPTCustom GPT操作步骤打开 ChatGPT → Explore GPTs → Create 进入 Custom GPT 编辑器。在配置过程中点击Add APIs添加 API。鉴权方式选择API Key认证类型设为Bearer填入第 1 步启动 MCPO 服务器时使用的--api-key值。在SchemaSchema 定义区域点击import from URL从 URL 导入粘贴上一步得到的公网 URL 并追加/openapi.jsonhttps://serena-agent-tunnel.trycloudflare.com/openapi.jsonMCPO 会把 MCP 工具集合自动翻译为 OpenAPI 3.x 规范文档ChatGPT 据此了解每个工具的名称、参数与返回结构。在导入的 JSON Schema最顶部加入一行声明服务器地址servers: [url: cloudflared_url],重要URL 末尾不要带斜杠/否则请求路径拼接会出错。保存后ChatGPT 会读取 Schema 并自动创建对应的函数工具。之后在对话中向这个 Custom GPT 下达编码任务它就会按需调用这些工具完成索引、搜索、编辑甚至执行命令等工作。一条链路的工作方式从端到端看完整调用链为ChatGPT (Custom GPT) │ Bearer API Key OpenAPI 调用 ▼ cloudflared tunnel公网 HTTPS │ TLS 隧道转发 ▼ MCPOhttp://localhost:8000 │ OpenAI 协议 → MCP 协议 ▼ serena start-mcp-server--context chatgpt │ OpenAI 兼容工具 Schema 项目上下文 ▼ 代码库 / 文件系统 / Shell具体工具其中OpenAI 兼容工具 Schema与项目激活两个环节分别由 src/serena/mcp.py 的openai_tool_compatible逻辑和--project参数保证这正是本方案能稳定工作于 ChatGPT 而不需要额外插件的原因。4. 安全警告 —— 务必仔细阅读Serena 的 MCP 服务器根据你的配置与启用的工具可能具备以下能力执行任意 Shell 命令读取、写入、修改代码库中的文件。也就是说接入后 ChatGPT 相当于在你机器上拥有一个远程开发者的全部权限。这在带来便利的同时也意味着巨大的风险敞口。⚠️ 核心规则绝不要泄露你的 API Key。任何拿到该 Key 的人都可以通过公网 URL 操纵你的机器。仅在需要时短暂暴露服务器用完后立即关闭隧道与进程并持续监控其使用情况可通过第 1 节提到的 Serena Web Dashboard 查看会话与工具调用记录。用配置收紧工具权限在项目根目录的.serena/project.yml或全局配置中可以禁用高风险工具并将服务器切换为只读模式excluded_tools: - execute_shell_command # 可按需追加其他工具例如 # - edit_file # - write_file read_only: trueexcluded_tools从可用工具集中剔除指定工具。源码层面该配置在 src/serena/config/serena_config.py 中定义并与fixed_tools/included_optional_tools存在互斥校验——三者不可同时使用配置错误会在加载阶段直接抛错。read_only: true将服务器整体切换为只读模式禁止任何写操作。该字段定义于 src/serena/config/serena_config.py。被excluded_tools禁用的execute_shell_command工具在源码中实现为对serena.util.shell.execute_shell_command的封装见 src/serena/tools/cmd_tools.py它以项目根目录为默认工作目录执行命令并返回 stdout/stderr它同时在其工具描述中明确警告不得用于启动长期运行的服务或需要用户交互的进程。如果你只需要能看不能改的编码助手强烈建议启用read_only: true并剔除 Shell 执行类工具。5. 收尾与最佳实践完成上述配置后ChatGPT 就变成了一个运行在你本地代码之上的编码助手——能索引、搜索、编辑代码并且取决于你的配置执行 Shell 命令。最后再强调几条可操作的注意事项Key 与 URL 同等敏感--api-key与隧道 URL 都等于你机器的访问凭证传输时使用私密渠道避免写入仓库或聊天记录明文。用完即关联调结束后CtrlC关闭cloudflared与uvx mcpo不要长期挂机。从最小权限起步先以read_only: true 精简excluded_tools验证全链路确认可信后再逐步放开。善用 Dashboard 审计启动时开启--enable-web-dashboard便于实时观察 ChatGPT 的每次工具调用及时发现异常行为。多项目场景不传--project启动之后在对话中让 ChatGPT 通过项目激活类工具切换目标代码库可同时管理多个项目。在享受让 ChatGPT 直接写你本地代码的高效体验时请务必保持上述安全纪律——负责任地使用安全始终优先。【免费下载链接】serenaA powerful MCP toolkit for coding, providing semantic retrieval and editing capabilities - the IDE for your agent项目地址: https://gitcode.com/GitHub_Trending/ser/serena创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门