关于 Data Studio
Data Studio 是通过 dockit 和 sqlkit 桌面应用连接数据库的 MCP 服务,供编码 Agent 查询和管理 SQL 与 NoSQL 数据。凭据留在本机应用中,并可按风险设置权限。
主要功能
- 01统一访问 SQL 与 NoSQL 数据库
- 02支持 70 多种 SQL 数据库
- 03浏览结构并执行查询
- 04分级控制读写与破坏性操作
- 05凭据保留在本机应用中
适用场景
- 01用自然语言检查数据库结构
- 02查询 PostgreSQL 或 MongoDB 数据
- 03限制 Agent 可执行的数据库操作
MCP 相关
作为 MCP 服务,它通过本机桥接连接 dockit 和 sqlkit,并向兼容客户端提供数据库工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Data Studio Agent
让你的 AI 编码 Agent 以安全的方式,通过自然语言访问所有数据库。
本地优先。企业级安全。开源。
📖 产品页面 · npm · dockit · sqlkit · 发布版本
English · 简体中文
此仓库包含 Data Studio MCP Server,这是一个 Model Context Protocol 服务,通过 dockit 和 sqlkit 桌面应用,让 AI 编码 Agent 直接访问你的数据库。
- SQL(通过 sqlkit):70 多种数据库(PostgreSQL、MySQL、SQL Server、Oracle、SQLite、DuckDB、ClickHouse、Snowflake、BigQuery 等)
- NoSQL(通过 dockit):Elasticsearch、OpenSearch、MongoDB、DynamoDB
功能
- 支持任意 AI 编码 Agent。 Claude Code、Cursor、Windsurf、OpenCode、Codex、Cline、Pi、Qoder、GitHub Copilot,或任意 MCP 客户端。
- 支持任意操作系统。 macOS、Windows、Linux。
- 支持任意大模型。 使用你自己的提供商,不受绑定。
- 一个 MCP 服务,一份配置。 通过 localhost 将请求路由到 SqlKit(SQL)和 DocKit(NoSQL)桥接服务。
- 企业级安全。 详见下文。
快速开始
1. 前置条件
安装并启动 dockit 和/或 sqlkit,添加数据库连接,并确保已启用 Settings → MCP Bridge → Auto-start(默认已启用)。要使用完整的 SQL + NoSQL 工具集,请安装这两个应用。
2. 安装 MCP 服务
npm install -g @geek-fun/data-studio-mcp
也可以不安装直接运行(npx 会在首次运行时下载):
npx -y @geek-fun/data-studio-mcp
3. 将其添加到 AI 工具
OpenAI Codex,一条命令:
codex mcp add data-studio -- npx -y @geek-fun/data-studio-mcp
Claude Code,一条命令:
claude mcp add --transport stdio data-studio -- npx -y @geek-fun/data-studio-mcp
Cursor。 创建 .cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局):
{
"mcpServers": {
"data-studio": {
"command": "npx",
"args": ["-y", "@geek-fun/data-studio-mcp"]
}
}
}
Windsurf。 创建 ~/.codeium/windsurf/mcp_config.json(仅限全局):
{
"mcpServers": {
"data-studio": {
"command": "npx",
"args": ["-y", "@geek-fun/data-studio-mcp"]
}
}
}
OpenCode。 添加到 opencode.json(项目级)或 ~/.config/opencode/opencode.json(全局):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"data-studio": {
"type": "local",
"command": ["npx", "-y", "@geek-fun/data-studio-mcp"],
"enabled": true
}
}
}
任何其他 MCP 客户端。 注册一个 stdio 服务,命令为 npx,参数为 -y @geek-fun/data-studio-mcp。
4. 调整权限(可选)
在 dockit/sqlkit 中打开 Settings → MCP Bridge,控制 Agent 可以执行的操作:
| 权限模式 | Agent 可以执行的操作 |
|---|---|
| Read Only(默认) | 查看架构、运行 SELECT 查询。不能写入。 |
| Data Read/Write | 执行 INSERT、UPDATE、索引操作。不能删除或删除对象。 |
| Full Access | 执行所有操作,包括 DELETE、DROP、TRUNCATE。 |
5. 开始提问
使用日常语言。Agent 会为你查询数据库:
- “列出我的 PostgreSQL 数据库中的所有表”
- “显示 Elasticsearch 索引
orders*中最近的 10 笔订单” - “找出 MongoDB 中所有年龄超过 30 岁的用户”
- “运行此查询并解释结果”
Agent 会读取架构、运行查询并探索数据,然后向你展示执行过的每条查询。
企业级安全性
大模型可以广泛访问你的数据,但永远看不到你的凭据。策略模型会根据风险级别限制每项功能。
- 凭据绝不会离开应用。 大模型只能看到不透明的
connection_id。实际凭据会在 dockit/sqlkit 内部解析,绝不会跨越 MCP 边界。密码和密钥都留在你的设备上的应用中。 - 基于 ID 的资源访问。 Agent 严格通过连接 ID 访问数据库。凭据不会出现在提示词或工具参数中,因此模型无法获取或窃取连接密钥。
- 三级权限模型。 Read Only / Data Read-Write / Full Access 模式会根据风险级别限制每项功能,并支持按连接覆盖设置。你可以将任意连接设为只读,或将特定操作加入允许列表。
- 明确的用户确认。 破坏性操作(DELETE、DROP、TRUNCATE)会在策略中标记为
Ask。执行任何破坏性操作前,客户端都会提示用户明确确认。 - 按操作级别分类语句。 执行前会解析 SQL,并按语句类型(Read / Write / Delete / DDL)分类。仅写入工具会拒绝 DELETE 语句;删除工具会拒绝 DDL。
- 仅限本地的桥接。 桥接仅绑定到
127.0.0.1。其他设备无法访问,无需托管服务,也无需管理 API 密钥。
工具
所有工具都遵循 data_studio__{backend}__{action} 命名规范。用户确认列显示哪些操作会在运行前于 AI 客户端中弹出明确的确认提示。
| 工具 | 后端 | 风险 | 需要权限 | 用户确认 |
|---|---|---|---|---|
data_studio__list_connections | 服务 | 🟢 安全 | 只读 | 否 |
data_studio__get_status | 服务 | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_databases | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_schemas | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_tables | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__get_schema | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__describe_table | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__explain_query | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_indexes | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_foreign_keys | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_views | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_procedures | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_functions | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_triggers | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__get_table_info | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__get_foreign_keys | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_sessions | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__get_slow_queries | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__list_connections | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__execute_query | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__get_object_ddl | sqlkit | 🟢 安全 | 只读 | 否 |
data_studio__sqlkit__execute_write | sqlkit | 🟡 较高 | 数据读写 | 否 |
data_studio__sqlkit__kill_session | sqlkit | 🟡 较高 | 数据读写 | 否 |
data_studio__sqlkit__grant_privilege | sqlkit | 🟡 较高 | 数据读写 | 否 |
data_studio__sqlkit__revoke_privilege | sqlkit | 🟡 较高 | 数据读写 | 否 |
data_studio__sqlkit__execute_delete | sqlkit | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__sqlkit__execute_ddl | sqlkit | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__es__search | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__get_document | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__cat_indices | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__get_mapping | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__cat_aliases | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__get_alias | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__count | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__cluster_health | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__cat_nodes | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__cat_shards | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__list_snapshots | dockit · Elasticsearch | 🟢 安全 | 只读 | 否 |
data_studio__es__index_document | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__update_document | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__create_index | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__put_mapping | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__put_alias | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__update_aliases | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__bulk | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__reindex | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__restore_snapshot | dockit · Elasticsearch | 🟡 较高 | 数据读写 | 否 |
data_studio__es__delete_document | dockit · Elasticsearch | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__es__delete_by_query | dockit · Elasticsearch | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__es__delete_index | dockit · Elasticsearch | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__es__delete_alias | dockit · Elasticsearch | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__mongo__list_databases | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__list_collections | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__find | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__collection_stats | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__database_stats | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__server_status | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__repl_set_status | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__shard_status | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__count_documents | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__list_indexes | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__sample_documents | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__distinct | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__get_slow_queries | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__list_users | dockit · MongoDB | 🟢 安全 | 只读 | 否 |
data_studio__mongo__aggregate | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__insert_one | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__update_many | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__create_database | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__create_collection | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__update_document | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__rename_collection | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__clone_collection | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__create_index | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__drop_index | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__insert_many | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__find_one_and_update | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__bulk_write | dockit · MongoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__mongo__delete_many | dockit · MongoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__mongo__drop_database | dockit · MongoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__mongo__drop_collection | dockit · MongoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__mongo__delete_document | dockit · MongoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__mongo__truncate_collection | dockit · MongoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__dynamo__execute_query | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__describe_table | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__list_tables | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__query_table | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__scan_table | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__batch_get_items | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__describe_continuous_backups | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__describe_ttl | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__get_table_metrics | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__list_backups | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__describe_backup | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__describe_limits | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__list_tags | dockit · DynamoDB | 🟢 安全 | 只读 | 否 |
data_studio__dynamo__execute_write | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__create_item | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__batch_write_items | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__update_item | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__transact_write_items | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__create_gsi | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__update_gsi | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__create_table | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__update_table_config | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__update_ttl | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__update_pitr | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__update_streams | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__restore_table | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__create_backup | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__tag_resource | dockit · DynamoDB | 🟡 较高 | 数据读写 | 否 |
data_studio__dynamo__execute_delete | dockit · DynamoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__dynamo__delete_item | dockit · DynamoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__dynamo__delete_gsi | dockit · DynamoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__dynamo__delete_table | dockit · DynamoDB | 🔴 破坏性 | 完全访问权限 | 是 |
data_studio__dynamo__truncate_table | dockit · DynamoDB | 🔴 破坏性 | 完全访问权限 | 是 |
| 共 116 个工具。 只读操作会在 只读 模式下自动运行。较高风险操作(写入、索引/架构更改)需要 数据读写 权限。破坏性操作(DELETE、DROP、TRUNCATE)需要 完全访问权限,并且始终会显示明确的用户确认提示。 |
工作原理
code agent (Claude Code / Cursor / OpenCode ...)
|
| MCP stdio protocol
v
@geek-fun/data-studio-mcp ← npm package (pure TypeScript)
|
| HTTP (localhost)
+----------------+----------------+
v v |
dockit:9120 sqlkit:9121 |
(NoSQL bridge) (SQL bridge) |
| | |
v v |
Elasticsearch PostgreSQL |
MongoDB MySQL |
DynamoDB SQL Server |
OpenSearch SQLite |
MCP 服务是一个轻量级路由层。所有数据库驱动程序、SSH 隧道和连接管理都由桌面应用处理,这些应用会公开一个本地 HTTP 桥接端点(仅限 127.0.0.1)。MCP 服务会通过各应用的端口文件自动发现正在运行的后端。
面向开发者
此代码库还包含 data-studio-agent Rust 框架,这是一个共享的 AI Agent 循环(提供商适配器、流式传输、工具调用、上下文压缩),为 dockit 和 sqlkit 中的内置助手提供支持。
安装、架构和集成指南请参阅 crates/data-studio-agent/README.md。
许可证
Apache 2.0。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。