配置与管理
让 AI 客户端通过 MCP 调用 AskTable
通过 MCP 将 AskTable 的查询和管理能力提供给 AI 客户端。
AskTable 的 MCP Server 把问数和管理能力按 Model Context Protocol 暴露成工具,让 Claude、MCP Inspector 等支持 MCP 的 AI 客户端直接调用。它是单一 server(名字 asktable),共 43 个工具。MCP 不绕过 AskTable 的权限:客户端能调什么,仍由 API-Key 类型和项目权限决定。
开始前
- 一个 AskTable 项目和项目 API-Key。只要问数用
asker;要调管理类工具用admin。 - 创建位置:左侧主导航 → 「设置」 → 「API-Key」 → 「创建 API-KEY」,弹窗里选类型。
- 客户端支持 Streamable HTTP 或 stdio。生产接入用 HTTP。
- 地址要先确认清楚,三种部署不一样,见下。
- 界面入口:底部头像 → 「文档」 → 「MCP 服务」,会按当前部署打开对应地址。
操作步骤
确认你的 MCP 地址
| 部署方式 | 地址 |
|---|---|
| SaaS(cloud.asktable.com) | https://mcp.asktable.com/ |
私有部署,一体化镜像(容器内 nginx 反代 /mcp/) | https://<你的 AskTable 站点>/mcp/ |
私有部署,独立 asktable-mcp 容器 | http://<mcp-host>:8690/ |
独立容器的 HTTP transport 接受任意路径,不要求 /mcp/ 前缀;一体化镜像对外只暴露 /mcp/,nginx 会剥掉前缀再转给 8690。
在客户端里填地址和 Key
Streamable HTTP 的配置(字段名以你的客户端为准):
{
"mcpServers": {
"asktable": {
"type": "http",
"url": "https://mcp.asktable.com/",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Authorization 头是必传的。服务端每个请求构造独立的客户端实例,不跨租户持有状态。
确认客户端能列出工具
连上后让客户端列出工具,应该看到 43 个。按域分组如下:
| 域 | 工具 | 数量 |
|---|---|---|
| datasource | datasource_list、datasource_get、datasource_create、datasource_update、datasource_delete、datasource_upload_file、datasource_test_connection | 7 |
| meta | datasource_meta_get、datasource_meta_export、meta_sync、meta_import | 4 |
| training | training_pair_list、training_pair_create、training_pair_update、training_pair_delete | 4 |
| field | field_set_visibility、field_set_description、field_set_ai_value_index | 3 |
| table | table_set_description | 1 |
| role | role_list、role_get、role_create、role_update、role_delete | 5 |
| policy | policy_list、policy_get、policy_create、policy_update、policy_delete | 5 |
| chat | chat_ask、chat_followup | 2 |
| conversation | conversation_list、conversation_get、conversation_delete | 3 |
| data_agent | data_agent_list、data_agent_get、data_agent_create、data_agent_update、data_agent_delete | 5 |
| project | project_get、project_preference_get、project_update、project_preference_update | 4 |
列表类工具接受 page 和 size(size 上限 200),不传就走后端默认。
用 chat_ask 问一次,再用 chat_followup 追问
让客户端调用 chat_ask 发起提问。需要多轮时用 chat_followup 接上一次的对话。客户端提供 progressToken 时,这两个工具会在每次轮询之间发进度通知。
删除类工具(*_delete)的入参强制要求 confirm 为 true,不传会被判为参数错误。
本机调试时改用 stdio
需要单独调试或用 MCP Inspector 时,在 mcp/ 目录下起 stdio:
bun src/main.ts --stdiostdio 模式下 Key 从环境变量取:
export ASKTABLE_API_URL='https://<你的 AskTable 站点>'
export ASKTABLE_API_KEY='YOUR_API_KEY'服务端用 ASKTABLE_API_URL 指向 AskTable 的 API,默认值是 https://api.asktable.com;一体化镜像里它被设为 http://127.0.0.1:8688,走同容器 localhost。
上生产前收口凭证
客户端配置文件通常会被同步或备份。生产环境用客户端的密钥管理能力注入 Authorization,不要把 Key 明文留在配置仓库里。Key 泄露时立即到「设置」 → 「API-Key」删除该 Key 并重建。
关键约束
| 项目 | 值或默认 | 在哪里改 |
|---|---|---|
| server 名称与工具数 | 单一 asktable,43 个工具 | 无界面开关 |
| 云端地址 | https://mcp.asktable.com/ | 底部头像 → 「文档」 → 「MCP 服务」 |
| 私有部署(一体化镜像) | <你的站点>/mcp/ | 见私有部署(Docker) |
| 私有部署(独立容器) | http://<mcp-host>:8690/ | 容器的 ports 与 ASKTABLE_API_URL |
| 认证 | Authorization: Bearer <API-Key>,必传 | 客户端配置 |
ASKTABLE_API_URL | 默认 https://api.asktable.com | MCP 容器的环境变量 |
列表分页 size | 上限 200,不传走后端默认 | 工具入参 |
| 删除类工具 | 必须显式传 confirm: true | 工具入参 |
| 审计日志 | 每次调用写一行 JSON 到 stderr,Key 只留 sha256 前 16 位 | 容器日志 |
| 生产传输方式 | Streamable HTTP;stdio 只用于本机调试 | 启动参数 |
出问题怎么判断
| 现象 | 判定条件 | 处理 |
|---|---|---|
客户端报 InvalidRequest | 服务端把 HTTP 401 或 404 映射成这个错误 | 检查 Authorization 头是否带 Bearer 前缀、Key 是否有效、URL 是否写对 |
客户端报 InvalidParams | 服务端把 HTTP 422 映射成这个错误 | 参数类型或必填项不对,按工具 schema 改正 |
客户端报 InternalError | 上游返回其他状态码 | 看错误对象里保留的 httpStatus;再到 AskTable 服务日志里按时间关联 |
调 *_delete 报参数错误 | 入参里没有 confirm: true | 显式传 confirm: true |
| 独立容器连不上 | http://<mcp-host>:8690/ 不通 | 确认容器端口已发布、ASKTABLE_API_URL 指向可访问的后端 |
一体化镜像里 /mcp/ 404 | 容器内 8690 没起来 | 看容器内 mcp-server 进程与 nginx 反代配置 |
调 meta_sync 立刻返回 {"status":"triggered"} | 没传 wait | 这是预期行为;要等结果就传 wait、poll_interval_ms、max_attempts |
| 列表工具返回的条数少于预期 | 没传 size,走了后端默认分页 | 显式传 size(上限 200)和 page |
| 客户端一直收不到进度 | 客户端没提供 progressToken | 进度通知只在客户端带 progressToken 时发送 |
下一步
- 在终端里直接操作 AskTable:命令行工具
- 自己处理请求和响应,不经过 AI 客户端:OpenAPI
- 私有部署单独跑 MCP 容器:私有部署(Docker)