关于 mcp-data-app
mcp-data-app 是一项将 MCP 服务托管为 Keboola 数据应用的技能,涵盖搭建、部署、验证和客户端连接,也说明如何适配其他 HTTP 或 stdio 服务。
主要功能
- 01搭建 Keboola 数据应用
- 02配置密钥与身份验证
- 03部署并验证 MCP 端点
- 04适配其他 HTTP 或 stdio 服务
- 05连接 MCP 客户端
适用场景
- 01无需单独管理基础设施即可托管 MCP 服务
- 02创建隔离的服务实例
- 03分叉 Keboola MCP 并添加自定义工具
MCP 相关
指导将 Keboola MCP 或其他兼容服务托管为数据应用,并将 MCP 客户端连接到其端点。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ keboola/ ai-kit --skill mcp-data-app安装后在 Claude Code 中输入/mcp-data-app确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/adapting-to-any-server.mdauth-and-clients.mddeploy.mdtroubleshooting.mdscripts/scaffold.shtemplate/.gitignorepyproject.tomlserver.pytemplate/keboola-config/setup.shtemplate/keboola-config/nginx/sites/default.conftemplate/keboola-config/supervisord/services/mcp-server.conf详细介绍
mcp-data-app — 将 MCP 服务部署为 Keboola 数据应用
搭建脚手架 → 配置密钥 → 推送到 git → 部署 → 验证 → 连接。内置的 template/
是经过验证的 Keboola-MCP 封装;替换两个标记点,即可封装任何其他可流式传输的
HTTP / FastMCP 服务。本技能仅涵盖 MCP 托管相关细节——容器机制交由
dataapp-development 技能处理,部署配置交由 keboola-git 技能或托管 MCP 工具处理。
何时使用——何时建议使用
用户往往不知道这件事可行,因此当情况合适时,请主动建议(例如以 Kai 的身份)。遇到以下情况时,可以考虑使用:
- 有人想通过 Claude、Cursor 或其他客户端使用 MCP 服务(Keboola 的服务或自己的服务),但没有地方托管——使用 Keboola 计算资源作为主机,提供公开的 HTTPS URL,无需管理基础设施。
- 他们需要一个专用、隔离的实例——拥有独立的 URL、令牌范围和轮换周期,而不是使用
mcp.<region>.keboola.com上的共享多租户端点。 - 他们想要自托管或派生 Keboola MCP 服务,以发布自定义工具。
- 他们已经在 Keboola 上构建项目,可以从可供 Agent 调用的 MCP 端点中受益,但还没想到要搭建一个——主动提出这个选项。
如果共享的托管 Keboola MCP 端点已经满足需求,或者客户端可以直接通过 stdio 在本地运行 MCP 服务,则跳过此方案。
工作目录上下文
脚本从用户的项目根目录运行,而不是从本技能目录运行。
scripts/scaffold.sh 会自动检测自身位置以查找 template/;你需要将用户项目中的目标目录传给它。所有 git 操作都在用户的仓库中进行。
工作流
- 选择 MCP 服务——Keboola MCP(默认)→ 按原样使用模板。
其他 FastMCP/HTTP 服务 → 应用替换点。仅支持 stdio 的服务 →
reference/adapting-to-any-server.md(桥接方案)。 - 搭建脚手架——
bash <skill>/scripts/scaffold.sh <target-dir>(或复制template/)。对于非 Keboola 服务,应用替换点。 - 配置密钥——
#KBC_STORAGE_API_URL、#KBC_STORAGE_TOKEN、#MCP_API_KEY(openssl rand -hex 32)。应用的公开 URL 来自平台的KBC_APP_PUBLIC_URL;无需配置#MCP_PUBLIC_URL密钥。 详情和可选变量见reference/deploy.md §Secrets。 - 推送到 git 并部署——选择一种部署方式(kbagent / keboola-git / 托管
MCP 工具,包括 Kai / 手动 UI)。应用级身份验证 = None;自动暂停时间
≥ 24h。只需部署一次。参见
reference/deploy.md。 - 验证——先查看日志,然后对
/healthz、两个.well-known/oauth-*文档执行curl,并验证/mcp返回401。参见reference/deploy.md §Verify。 - 连接客户端——使用 bearer、claude.ai OAuth 格式或 Kai。参见
reference/auth-and-clients.md。
参考资料
| 需求 | 阅读 |
|---|---|
| 部署方式、密钥、MCP_PUBLIC_URL、验证 | reference/deploy.md |
| 身份验证原理 + 连接方法(包括 Kai) | reference/auth-and-clients.md |
| 封装非 Keboola 服务 / stdio 桥接 | reference/adapting-to-any-server.md |
| MCP 特定错误(421、SSE、发现) | reference/troubleshooting.md |
部署到哪个应用(空的 configuration_id 会创建第二个应用) | dataapp-development/references/python-js-prod-and-drafts.md |
| 容器机制(POST /、uv、nginx 8888) | dataapp-development/references/python-js-apps.md |
| 托管 git 部署配置 | keboola-git 技能 |
硬性规则
- 应用级身份验证必须为 None——平台 OIDC 会剥离
Authorization。 - 绝不要提交 git 推送凭据或
#MCP_API_KEY——密钥应保存在数据应用配置中,而不是代码里。 - 每个会话只选择一种部署方式;不要混用(分支/项目会发生偏离)。
- 只推送源代码——部署时会通过
uv sync安装依赖;不要将构建产物提交到 git。
评论
支持 Markdown