我为 Tally 构建了一个 MCP 服务器,旨在弥补他们复杂 API 与简单自然语言命令之间的差距。
作为一个有 ADHD 的人,我之所以构建这个,是因为在文档、表单构建器和实际工作之间切换会破坏我的工作流程。现在我可以保持在一个对话中,只需描述我需要的内容。
有趣的技术挑战包括:
1. API 复杂性抽象
Tally 的 API 对于简单字段需要深度嵌套的对象。一个电子邮件字段需要大约 10 个嵌套对象和 UUID。我构建了一个翻译层,用户只需用自然语言说“添加一个电子邮件字段”,服务器就会在后台处理复杂的结构。
2. 安全的批量操作
对于破坏性操作,我实现了预览-确认模式。服务器在预览期间生成一个确认令牌,必须在执行时传回。这可以防止意外的大规模删除,同时保持对话的自然流畅。
3. 智能速率限制
服务器监控 API 响应并动态调整其行为。当达到速率限制时,它会自动减少批量大小并在请求之间添加延迟。增加随机化以防止多个实例同时访问 API。
4. 全面类型安全
使用完整的 TypeScript 和运行时验证,适用于 MCP 消息和 Tally API 响应。这在开发过程中捕获了几个未记录的 API 特性。
性能说明:
- 批量创建 100 个表单:约 12 秒(使用批量操作)
- 单独创建 100 个表单:约 5 分钟(由于速率限制)
- 人工创建 100 个表单:可能需要整整一周的重复点击
- 对 10,000 个响应的提交分析:约 3 秒
代码采用 ISC 许可证: [https://github.com/learnwithcc/tally-mcp](https://github.com/learnwithcc/tally-mcp)
这特别有助于当你需要创建多个相似表单但大脑对重复任务感到抵触时。我很好奇其他人是否也在构建 MCP 服务器,以及你们在优化哪些工作流程。
我也对 MCP 与传统 CLI 工具的看法感兴趣。对于简单操作,交互式界面较慢,但对于复杂的多步骤任务则更好,因为在这些情况下你可能会忘记确切的语法。
返回首页