Vibecodr。太空MCP网关
生产级远程MCP服务器和摄取服务,用于将Codex、ChatGPT、Cursor、VS Code、Windsurf和其他MCP客户端的vibecoded创建导入Vibecodr。
文档
- docs/mcp-server.md
- docs/canonical-architecture.md
- docs/build-with-vibecodr-mcp.md
- docs/mcp-client-setup.md
- docs/mcp-tool-surface-execution-plan.md
- docs/cloudflare-mcp生产架构规范.md
- docs/cloudflare-mcp-alignment.md
- docs/cloudflare-demo-migration-plan.md
- docs/dynamic-worker-sandbox-configuration.md
- docs/public-repo.md
回购范围
此存储库是Vibecodr MCP服务器的面向公众的网关。
它是Vibecodr的单一托管MCP服务器。ChatGPT、Codex、Cursor、VS Code、Windsurf和第一方CLI是此服务器的客户端;在主动生产设计中没有单独的OpenAI应用服务器。
它包含:
- MCP服务器和工具界面
- OAuth网关层
- 与Vibecodr对话的导入/发布编排
确实如此 不 包含完整 vibecodr.space 前端或完全私有 api.vibecodr.space 后端源代码树。
许可证
此代码发布于 PolyForm非商业版1.0.0 许可证。
这意味着:
- 许可条款允许非商业使用、研究、修改和共享
- 此公共回购许可证不授予商业用途
- 此仓库是源代码可用的,不是OSI批准的开源
存储库许可证管理此存储库中的源代码。它不会阻止托管的Vibecodr服务的正常使用。任何拥有Vibecodr帐户的人都可以使用托管的MCP服务器,而商业重用或转售此源代码仍需要单独的许可。
看 docs/public-repo.md 对于公共回购边界以及故意排除的内容。
实施了什么
- MCP端点位于
/mcp具有客户端中立的工具目录 - Cloudflare Worker运行时入口点位于
src/worker.ts - OAuth帐户链接流:
- /auth/start - /auth/callback - /oauth_callback (本地兼容性别名)
- Vibecodr CLI授权交换集成:
- 在Vibecodr上交换OAuth访问令牌 /auth/cli/exchange
- 摄入适配器:
- codex_v1 - chatgpt_v1
- 摄入模式:
- direct_files - staged_upload 对于已经通过Vibecodr分阶段上传验证的整个ZIP/repo有效载荷;分段ZIP导入默认为异步路径,因此Vibecodr可以自动将较大的项目移动到繁重的导入通道中 - zip_import 作为5 MB以下内联ZIP有效载荷的小型传统兼容性回退 - github_import 对于HTTPS github.com 仅限存储库URL
- 起草、编译、发布、取消操作工具
- 列表草稿和详细工具草稿
- 具有幂等性的持久操作存储
- 节点运行时:文件支持的存储在 data/operations.json - Worker runtime:通过KV支持的存储 OPERATIONS_KV 绑定
- 密封的无状态身份验证会话Cookie(AES-GCM)
- 提交打包脚本和部署连接
本地运行
- 安装依赖项:
npm install
- 配置环境:
- 复制
.env.example到.env或使用.env.local - 设置OAuth和会话值
- 验证环境:
npm run validate:env
- 构建并运行:
npm run buildnpm run dev
Cloudflare本地员工:
npm run dev:worker
MCP客户端兼容性
网关为远程MCP客户端公开了一个通用的OAuth兼容层。
兼容的客户端应该能够:
- 使用官方客户端元数据文档
/.well-known/oauth-client/vibecodr-mcp.json - 当为其他第一方托管的流颁发预注册的公共客户端时,使用该客户端
- 在以下位置动态注册
/register当不存在预先注册的客户端关系时 - 在以下位置发现身份验证元数据
/.well-known/oauth-authorization-server - 授权通过
/authorize - 交换代码
/token
Codex设置示例:
codex mcp add vibecodr-space --url https://openai.vibecodr.space/mcp
当前公开的食品法典委员会文件明确记录了 codex mcp add, codex mcp list,直接 ~/.codex/config.toml 编辑MCP配置。受保护的HTTP身份验证行为应在首次受保护使用时根据当前Codex构建进行验证,而不是假设单独的Codex特定登录命令界面。
CLI工具发现:
- 发现命令的规范MCP方法是
initialize紧随其后tools/list - 此服务器还通过以下方式公开可选的工作流提示
prompts/list和prompts/get - 此repo包含一个助手:
- npm run mcp:tools - 原始JSON: node scripts/list-mcp-tools.mjs --raw
- 这列出了暴露给所有远程MCP客户端的相同MCP工具表面
- 可在以下网址找到选择加入代码模式
https://openai.vibecodr.space/mcp?codemode=search_and_execute,在哪里tools/list仅返回search和execute
这使Clerk成为身份提供者,同时让通用MCP客户端在不手动输入承载令牌的情况下完成OAuth。 当 offline_access 如果包括在内,网关可以使用自己的刷新令牌续订MCP会话,同时保持上游Clerk刷新令牌在服务器端。
重要流量分流:
GET /auth/start是浏览器身份验证流,通常返回/GET /authorize是远程MCP客户端使用的MCP OAuth流,并重定向回客户端的注册redirect_uri- 如果你想测试Codex、Cursor、VS Code、Windsurf或ChatGPT MCP实际使用的是什么,请测试
/authorize,不/auth/start
公共包装边界:
- 此存储库仍然是可用的源托管MCP服务器和OAuth网关
- 任何公共CLI安装程序/运行时都应该位于一个单独的许可仓库中,这样托管服务的使用就与此源代码的商业重用明显不同
规范架构边界:
Vibecodr-MCP是托管网关/服务器实现Vibecodr-MCP-CLI是一个单独的客户端/分发包- ChatGPT是网关的一个远程MCP客户端,而不是一个单独的服务器产品
- 以前的嵌入式小部件表面不是生产的一部分;
resources/list保持空白,工具不做广告openai/outputTemplate
MCP客户端的令牌生命周期模型:
- 网关颁发的承载访问令牌是短暂的,大约1小时
- MCP客户端在以下情况下也会收到网关刷新令牌
offline_access被授予 - 普通客户端应自动刷新并保持登录状态,而无需通过登录将用户送回
- 刷新轮换对于短时间启动和重新连接比赛是重试安全的,因此重复的刷新尝试应该重放成功的响应,而不是使会话无效
- 只有当用户断开连接、网关撤销会话或上游Clerk刷新令牌无效时,长期授权才会中断
端点
GET /healthGET /health/observabilityGET /.well-known/oauth-client/vibecodr-mcp.jsonGET /auth/startGET /auth/callbackGET /oauth_callbackPOST /mcpGET /mcpGET /api/auth/sessionPOST /api/auth/logoutGET /api/observability/summary
OAuth配置
必修的:
OAUTH_CLIENT_IDSESSION_SIGNING_KEYAPP_BASE_URL- 回调URL必须与提供程序配置中的重定向URI匹配
然后选择一个端点策略:
- 发卡机构/发现模式(推荐):
OAUTH_ISSUER_URL(或OAUTH_DISCOVERY_URL)
- 显式端点模式:
OAUTH_AUTHORIZATION_URLOAUTH_TOKEN_URL
可选:
OAUTH_CLIENT_SECRET(机密客户)OAUTH_SCOPES(默认值:openid profile email offline_access)OAUTH_REDIRECT_URI以(权力)否决OAUTH_AUDIENCEMCP_STATIC_CLIENT_ID(可选的预先注册的第一方MCP客户端)MCP_STATIC_CLIENT_SECRET(仅当预先注册的客户是保密的)MCP_STATIC_CLIENT_REDIRECT_URIS(空格或逗号分隔的满列表;环回http条目仅忽略端口)COOKIE_SECURE(默认为trueAPP_BASE_URL使用https)
官方公共CLI路径现在使用提交的基于URL的客户端元数据文档,该文档来自:
https://openai.vibecodr.space/.well-known/oauth-client/vibecodr-mcp.json
运行时安全控制:
MAX_REQUEST_BODY_BYTES(默认值8500000)RATE_LIMIT_WINDOW_SECONDS(默认值60)RATE_LIMIT_REQUESTS_PER_WINDOW(默认值240)RATE_LIMIT_MCP_REQUESTS_PER_WINDOW(默认值120)CODEMODE_ENABLED(默认值true应用内配置;部署示例保留它false直到配置了Worker Loader)CODEMODE_DEFAULT(默认值false)CODEMODE_REQUIRE_DYNAMIC_WORKER(默认值true生产中)CODEMODE_ALLOW_NATIVE_FALLBACK(部署示例:false)CODEMODE_MAX_EXECUTION_MS(默认值5000)CODEMODE_MAX_OUTPUT_BYTES(默认值32768)CODEMODE_MAX_LOG_BYTES(默认值8192)CODEMODE_MAX_NESTED_CALLS(默认值5)
网关/API错误响应包括 traceId JSON和 x-trace-id 用于请求关联的响应标头。 Cloudflare部署应配置 GLOBAL_RATE_LIMITER 和 MCP_RATE_LIMITER Wrangler中用于交叉隔离执行的绑定。 代码模式部署应配置特定目的 CODEMODE_WORKER_LOADER 在生产中启用狗粮路线之前进行绑定。
可观测性
- 结构化遥测技术用于:
- HTTP请求完成 - 认证开始、挑战、成功和失败 - MCP方法和工具调用结果 - 导入/编译/发布生命周期转换 - 上游Vibecodr API延迟和状态
- 最近的遥测和汇总指标可在以下网址获得:
- GET /health/observability - GET /api/observability/summary (需要经过身份验证的会话)
- 活动警报出现在以下两个可观察性端点中
alerts,与alertCount上/health/observability. - 发出的核心计数器:
- imports_started_total - imports_completed_total - imports_failed_total - compile_failures_total - publish_failures_total - auth_challenge_total - auth_failure_total - duplicate_idempotency_hits_total
回调流使用以下方式将提供者访问令牌交换为Vibecodr发布范围令牌:
POST VIBECDR_API_BASE/auth/cli/exchange身体:
- { "access_token": "" }
本地秘密存储
本地非repo secret env文件可以存储在:
deploy/cloudflare/secrets.local.env
您可以将可检索凭据保存在那里,并根据需要将值复制到运行时环境中。
职员设置检查表
- 为此应用程序创建一个Clerk OAuth应用程序。
- 配置回调URL:
https:///auth/callback
- 使用生产Clerk Frontend API代理进行计算机OAuth发现:
OAUTH_ISSUER_URL=https://vibecodr.space/__clerkOAUTH_DISCOVERY_URL=https://vibecodr.space/__clerk/.well-known/openid-configuration
- 保持
accounts.vibecodr.space网关外OAuth配置。它是职员账户门户UI,而不是MCP客户端的发卡机构或代币表面。 - 设置:
OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET(如果Clerk应用程序是保密的)
- 在Clerk Component路径中,首选生产应用程序的应用程序域身份验证页面:
- 登录:
https://vibecodr.space/sign-in - 注册:
https://vibecodr.space/sign-up - 退出回退:
https://vibecodr.space/sign-in
- 确保将Vibecodr API配置为在以下位置接受Clerk颁发的访问令牌:
POST /auth/cli/exchange
MCP工具
默认 tools/list 故意仅暴露产品级表面:
get_vibecodr_platform_overviewget_guided_publish_requirementsget_upload_capabilitiesprepare_publish_packagevalidate_creation_payloadget_launch_best_practicesget_pulse_setup_guidanceget_account_capabilitiesget_publish_readinessget_runtime_readinessresume_latest_publish_flowlist_vibecodr_draftsget_vibecodr_draftlist_my_live_vibesget_live_vibeget_vibe_engagement_summaryget_vibe_share_linkdiscover_vibesget_public_postget_public_profilesearch_vibecodrget_remix_lineagebuild_share_copyget_launch_checklistinspect_social_previewsuggest_post_publish_next_stepsget_engagement_followup_contextupdate_live_vibe_metadataquick_publish_creationpublish_standalone_pulsepublish_standalone_pulse
恢复处理程序仍然可以按确切名称调用,以实现兼容性、脚本诊断和未来的Codemode目录执行,但它们不再在默认工具列表中公告:
list_import_operationsget_import_operationwatch_operationexplain_operation_failurestart_creation_importcompile_draft_capsulepublish_draft_capsulecancel_import_operationlist_pulsesget_pulseget_pulse_statusrun_pulsearchive_pulserestore_pulse
建议ChatGPT/Codex用户的第一印象流程:
quick_publish_creation(一键导入+编译+发布)get_publish_readiness(如果用户希望在发布前进行明确的门检查)get_runtime_readiness(如果用户需要当前启动状态、阻止程序和下一步操作)explain_operation_failure仅当恢复流程需要更深入的故障指导时,才使用确切的名称
代码模式:
POST /mcp?codemode=search_and_execute仅做广告search和execute.search检查服务器端功能目录,而不将每个本机模式加载到模型上下文中。execute通过网关拥有的处理程序和与本机工具相同的身份验证挑战契约路由选定的功能。- 跑
npm run mcp:measure比较默认本地工具、所有本地工具、代码模式描述符和功能目录。
quick_publish_creation 支持:
sourceType:chatgpt_v1 | codex_v1payload:规范化的创建包负载
- 直接文件有效负载在中使用正常的斜线分隔的项目路径 payload.files[].path;客户端不应进行预编码 / 作为 %2F
autoCompile:默认为truetimeoutSeconds,pollIntervalMs- 发布元数据选项:
visibility,coverKey,thumbnailStagedUpload,thumbnailFile,thumbnailUpload,seo
所有工具现在都定义 outputSchema 以及运行时输出验证 structuredContent ChatGPT路由和首次运行可靠性的合约稳定。 结构化工具错误包括 errorId 用于确定性故障排除和支持切换。
publish_draft_capsule 支持可选的发布元数据:
visibility:public | unlisted | privatecoverKey:现有上传密钥(例如thumbnails//.png)thumbnailStagedUpload:第一方上传客户端时的首选参考,例如vibecodr upload,已经上演了cover_image并完成验证:
- uploadId - fileName (可选) - 发布调用中不包括预签名的URL或图像字节
thumbnailFile:来自可以上传或附加启动图的客户端的首选托管文件引用:
- fileId - downloadUrl - contentType - fileName (可选) - 已接受的哑剧: image/png, image/jpeg, image/webp, image/avif - 最大尺寸: 5 MB
thumbnailUpload:在一次通话中上传+附加:
- contentType - fileBase64 - fileName (可选) - 已接受的哑剧: image/png, image/jpeg, image/webp, image/avif - 内联原始文件应保留在 900 KB - 仅在以下情况下回退 thumbnailStagedUpload 和 thumbnailFile 不可用 - 上传的发布艺术现在自动遵循vibe可见性:公共/未上市的发布使用公共 app_cover lane和private发布使用private standalone 车道
seo:
- title, description, imageKey - og: title, description, imageKey - twitter: title, description, imageKey
部署
请参阅:
deploy/README.mdDockerfiledeploy/cloudflare/README.mddeploy/cloudflare/wrangler.gateway.toml.example
对于本地部署,请将示例文件复制到 deploy/cloudflare/wrangler.gateway.toml 并将本地覆盖从Git中删除。
当前生产Cloudflare Worker服务名称仍为 vibecodr-openai-gateway 用于路由、绑定、机密和日志连续性。将其视为基础设施名称,而不是产品架构。新的例子应该使用 vibecodr-mcp-gateway.
安全飞行前
在生产部署之前运行:
npm run validate:envnpm run security:preflightnpm run security:regressionnpm run build
Cloudflare部署(安全网关模式)
请参阅:
deploy/cloudflare/README.mddeploy/cloudflare/wrangler.gateway.toml.exampledeploy/cloudflare/set-secrets.ps1