我如何使用 Goose 为 Apollo MCP Server 添加实验性 MCP Apps 支持

发布: (2026年1月11日 GMT+8 05:27)
7 min read
原文: Dev.to

Source: Dev.to

(请提供您希望翻译的完整文本,我将按照要求保留源链接、格式和技术术语进行简体中文翻译。)

挑战

使用代理式开发工作流,以我不熟悉的语言为公司代码库做贡献。

作为一名开发者倡导者,我通常编写演示和教学代码,而不是向我们的产品代码库贡献代码。假期期间,我想挑战自己,全面投入代理式编码,通过向 Apollo MCP Server(仓库:)添加 对 MCP Apps 草案规范的实验性支持 来实现这一点。

是时候在真实场景中检验我所教授的一切了——使用我不熟悉的语言…… Rust

Apollo MCP Server 是开源的,用于在无需编写额外代码的情况下将 GraphQL 操作暴露为 MCP 工具。我们最近加入了对 OpenAI Apps SDK 的支持,因此将其演进为 MCP UI 应用是一个很好的下一步挑战。

Constraints

  • 代理必须为 MCP 应用添加实验性支持,在不破坏现有功能或干扰 OpenAI 应用实现的前提下。
  • 为了验证更改,我还需要一个 独立的仓库,其中包含我的 Luma Community Analytics 工具的原型 MCP UI 应用。

工具

  • Goose – CLI 和桌面
  • Markdown files – 用于提供指令、MCP 规范细节以及项目目标/规则给代理
  • Apollo MCP Server – 目标代码库
  • MCP Jam – MCP Inspector 的替代方案,用于测试

构建

我使用 research → plan → code‑in‑chunks → test → report deviations → repeat 循环与代理合作。

研究提示

Research all files in the apollo-mcp-server local repo to understand the OpenAI apps implementation and the details of the draft MCP UI Apps spec. Then create a plan to add experimental support for MCP apps that preserves the OpenAI SDK version.

第一个计划并不完美;对其进行迭代是我所做的最“人类在环”工作。根据我的经验,在向现有代码库添加新/实验性功能时,花时间进行规划阶段至关重要。

计划的关键部分是 立即测试每个代码块。这能及早发现错误,防止最终集成混乱。我还要求代理报告因错误或新信息导致的任何计划偏差。

计划执行后,我构建了 Rust 二进制文件并将其添加到 MCP Apps 项目中进行测试。

第一次运行

第一次运行成功了吗?没有。

使用 Goose,我快速调试了一些细节——最突出的是我们 OpenAI SDK 版本中使用的一个查询参数不符合 MCP‑App 标准,因此在测试中未被标记。

违规的查询参数代码

应用运行后,我在 MCP Jam 中进行初步测试,它是 MCP Inspector 的替代方案(常规检查器目前不支持应用)。

MCP Jam 中的初始加载测试

此时我只能等待。MCP Apps 仍在草案阶段,代理生态系统尚未开始支持它。Goose 团队几乎完成了,但正值假期,我关掉了笔记本电脑(去触摸草地?)。

最终测试!

当 Goose 团队发布草案规范支持时,我急于在 Goose Desktop 代理中进行测试——结果遇到了一些问题。回到 Goose 进行调试!

Goose 帮我发现了 Goose 中 MCP 应用支持早期版本的 两个小错误,我已向团队报告,以便他们进行修复。

你没看错。我让 Goose 调试 Goose!

Spiderman pointing meme

最终,我做出了我的 Luma 事件仪表盘 的早期原型,这个工具将帮助 Apollo 内部人员了解我主办的活动的社区指标。

Goose Desktop with a running MCP App

学习要点

  • 你不必成为语言专家也能有效贡献。
  • 充分的研究与规划阶段能显著降低添加实验性功能时的摩擦。
  • 增量测试能及早捕获回归,保持集成的可管理性。
  • 主动工作流可以发现不仅是代码中的 bug,还包括驱动它们的工具中的 bug。

为代码库贡献有意义的功能

  • 计划 → 迭代 → 计划
  • 代理以小块工作并始终进行测试 意味着他们可以及早捕获错误,修复它们,然后在你去喝咖啡时继续前进。
  • 完美是目标吗? 根据我的经验,还不是——但我作为开发者能够更快地推进。服务器更新和新应用在半天内完成,尽管我起初对草案规范或代码库一无所知。

注意: 完成后,我看到 Angie Jones 发布的一篇关于 Research → Plan → Implement 流程的帖子,其中包含她在假期期间发布的配方。如果我今天重新开始这个流程,这就是 应该开始的地方。
在此查看文档.

你能做到吗? 可以!我很想听听你在测试此工作流或其他你正在尝试的代理式编码流程中的经验。

Back to Blog

相关文章

阅读更多 »

介绍 graphql-complexity-validation

✨ 特性 - 零运行时依赖 - 完全类型化的 TypeScript - 支持 fragments 与 inline fragments - 默认忽略 Introspection 适用于: - Apollo…

适合初学者的 Rust 入门方式

介绍 Rust 是一种强大的语言,但对初学者来说,入门可能会感到不知所措。当我开始学习 Rust 时,我意识到我需要一个简单的、...