Data Studio

io.github.geek-fun由 GitHub 账号 geek-fun 发布v0.1.12更新于 Nov 3, 2026

Unified MCP server for SQL and NoSQL databases, powered by dockit and sqlkit desktop apps

已验证STDIO仅桌面数据库开发者工具

概览

AI 生成的概览

本地 MCP 服务器,让 AI 编程助手通过 dockit 和 sqlkit 桌面应用浏览并查询 SQL 与 NoSQL 数据库。

可以做什么
  • 列出连接、数据库、模式、表、视图、索引、键、存储过程与函数,读取 DDL 或解释查询
  • 通过 sqlkit 在 70 多种 SQL 数据库上执行 SELECT 查询,查看会话与慢查询
  • 在 Elasticsearch 和 OpenSearch 中搜索、读取、计数,并查看映射、别名、节点与分片
  • 在 MongoDB 中查找、聚合、计数、抽样,并查看统计信息与索引
  • 在 DynamoDB 中查询、扫描、描述表,并查看备份、TTL 与指标
  • 写入、更新、创建、授权或回收权限,以及删除或丢弃对象,受权限模式与确认提示约束
适用场景
适合希望用自然语言让 AI 助手读取表结构并查询自有数据库的场景,覆盖多种 SQL 引擎以及 Elasticsearch、MongoDB、DynamoDB,且无需把凭据粘贴到提示词中。
运行要求
以 npm 包形式通过 stdio 在本地运行,需要 Node.js 与 npx。必须安装并启动 dockit 和/或 sqlkit 桌面应用,添加数据库连接,并启用 MCP Bridge 自动启动;桥接仅监听本机。未声明任何 API 密钥或环境变量。
安装前请注意
助手对你的数据拥有较广的访问权限。写入、索引与结构变更需要 Data Read-Write 模式;DELETE、DROP、TRUNCATE 需要 Full Access 并会弹出确认。除非确实需要写入,否则保持默认的 Read Only 模式,并检查按连接设置的覆盖项。凭据保留在桌面应用中,模型只看到连接 ID,但查询结果会发送给你的 LLM 服务商。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Data Studio,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[Data Studio Agent logo]

Data Studio Agent

Let your AI coding agent securely access all your databases, in plain language.

Local-first. Enterprise-grade security. Open source.

[Release] [Downloads] [npm] [License] [Stars] [CI] [MCP Toplist]

[图片] [图片] [图片] [图片]

[Ask your database in plain language — live demo]

📖 Product Page · npm · dockit · sqlkit · Releases

English · 简体中文


This repository contains the Data Studio MCP Server, a Model Context Protocol server that gives AI coding agents direct access to your databases through the dockit and sqlkit desktop apps.

  • SQL (via sqlkit): 70+ databases (PostgreSQL, MySQL, SQL Server, Oracle, SQLite, DuckDB, ClickHouse, Snowflake, BigQuery, and more)
  • NoSQL (via dockit): Elasticsearch, OpenSearch, MongoDB, DynamoDB

Features

  • Any AI coding agent. Claude Code, Cursor, Windsurf, OpenCode, Codex, Cline, Pi, Qoder, GitHub Copilot, or any MCP client.
  • Any OS. macOS, Windows, Linux.
  • Any LLM model. Bring your own provider. No lock-in.
  • One MCP server, one config. Routes to both SqlKit (SQL) and DocKit (NoSQL) bridges over localhost.
  • Enterprise-grade security. See below.

Quick start

1. Prerequisites

Install and launch dockit and/or sqlkit, add a database connection, and make sure Settings → MCP Bridge → Auto-start is enabled (it is by default). Install both apps for the full SQL + NoSQL tool set.

2. Install the MCP server

bash
npm install -g @geek-fun/data-studio-mcp

Or run it without installing (npx downloads it on first run):

bash
npx -y @geek-fun/data-studio-mcp

3. Add it to your AI tool

OpenAI Codex, one command:

bash
codex mcp add data-studio -- npx -y @geek-fun/data-studio-mcp

Claude Code, one command:

bash
claude mcp add --transport stdio data-studio -- npx -y @geek-fun/data-studio-mcp

Cursor. Create .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

json
{  "mcpServers": {    "data-studio": {      "command": "npx",      "args": ["-y", "@geek-fun/data-studio-mcp"]    }  }}

Windsurf. Create ~/.codeium/windsurf/mcp_config.json (global only):

json
{  "mcpServers": {    "data-studio": {      "command": "npx",      "args": ["-y", "@geek-fun/data-studio-mcp"]    }  }}

OpenCode. Add to opencode.json (project) or ~/.config/opencode/opencode.json (global):

json
{  "$schema": "https://opencode.ai/config.json",  "mcp": {    "data-studio": {      "type": "local",      "command": ["npx", "-y", "@geek-fun/data-studio-mcp"],      "enabled": true    }  }}

DeepSeek Harness. Save the overlay as data-studio.cordis.yml:

yaml
- insert:    - id: data-studio-mcp      name: '@deepseek-ai/dsh-mcp-client'      config:        serverName: data-studio        transport: stdio        command: npx        args: ['-y', '@geek-fun/data-studio-mcp']

Run dsh web --patch "$PWD/data-studio.cordis.yml", or merge the insert patch into $DSH_HOME/cordis.patch.yml to keep it across runs. Tools appear as mcp__data-studio__* (DSH is developer preview — its config surface may change).

WorkBuddy / CodeBuddy CLI. One command:

bash
codebuddy mcp add --scope user data-studio -- npx -y @geek-fun/data-studio-mcp

Or add the same mcpServers JSON shown for Cursor above to the project-level .mcp.json (~/.codebuddy/.mcp.json for user scope).

Any other MCP client. Register a stdio server with command npx and args -y @geek-fun/data-studio-mcp.

4. Tune permissions (optional)

Open Settings → MCP Bridge in dockit/sqlkit to control what the agent can do:

Permission modeWhat the agent can do
Read Only (default)Explore schemas, run SELECT queries. No writes.
Data Read/WriteINSERT, UPDATE, index operations. No deletes/drops.
Full AccessEverything, including DELETE, DROP, TRUNCATE.

5. Start asking

Use plain language. The agent queries your databases for you:

  • "List all tables in my PostgreSQL database"
  • "Show me the last 10 orders from the Elasticsearch index orders*"
  • "Find all users older than 30 in MongoDB"
  • "Run this query and explain the results"

The agent reads schemas, runs queries, and explores your data, then shows you every query it executed.

Enterprise-grade security

The LLM gets broad access to your data, but it never sees your credentials. The policy model gates every capability by risk level.

  • Credentials never leave the apps. The LLM only ever sees an opaque connection_id. Real credentials are resolved inside dockit/sqlkit and never cross the MCP boundary. Your passwords and keys stay on your machine, in your app.
  • ID-based resource access. Agents access databases strictly by connection ID. Credentials never appear in prompts or tool arguments, so there is no path for the model to obtain or exfiltrate connection secrets.
  • Three-tier permission model. Read Only / Data Read-Write / Full Access modes gate every capability by risk level, with per-connection overrides. You can mark any connection read-only or allowlist specific actions.
  • Explicit user confirmation. Destructive operations (DELETE, DROP, TRUNCATE) surface as Ask in the policy. The client prompts the user for explicit confirmation before anything destructive runs.
  • Action-level statement classification. SQL is parsed and classified by statement kind (Read / Write / Delete / DDL) before execution. Write-only tools reject DELETE statements; delete tools reject DDL.
  • Local-only bridge. The bridge binds to 127.0.0.1 exclusively. It is unreachable from other machines, with no server to host and no API keys to manage.

Tools

All tools follow the data_studio__{app}__{backend}__{action} convention: app is the desktop app exposing the bridge (sqlkit or dockit), and backend is the data source behind it (sqlkit, es, mongo, dynamo). The two server-level tools (data_studio__list_connections, data_studio__get_status) have no app segment. The User confirmation column shows which operations surface an explicit confirmation prompt in your AI client before they run.

The exact tool set advertised at runtime depends on your apps' permission mode and configured connections — call data_studio__get_status to see what is currently available.

ToolBackendRiskRequires permissionUser confirmation
data_studio__list_connectionsServer🟢 SafeRead OnlyNo
data_studio__get_statusServer🟢 SafeRead OnlyNo
data_studio__dockit__dockit__list_connectionsdockit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_databasessqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_schemassqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_tablessqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__get_schemasqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__describe_tablesqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__explain_querysqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_indexessqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_foreign_keyssqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_viewssqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_proceduressqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_functionssqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_triggerssqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__get_table_infosqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__get_foreign_keyssqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_sessionssqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__get_slow_queriessqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__list_connectionssqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__execute_querysqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__get_object_ddlsqlkit🟢 SafeRead OnlyNo
data_studio__sqlkit__sqlkit__execute_writesqlkit🟡 ElevatedData Read-WriteNo
data_studio__sqlkit__sqlkit__kill_sessionsqlkit🟡 ElevatedData Read-WriteNo
data_studio__sqlkit__sqlkit__grant_privilegesqlkit🟡 ElevatedData Read-WriteNo
data_studio__sqlkit__sqlkit__revoke_privilegesqlkit🟡 ElevatedData Read-WriteNo
data_studio__sqlkit__sqlkit__execute_deletesqlkit🔴 DestructiveFull AccessYes
data_studio__sqlkit__sqlkit__execute_ddlsqlkit🔴 DestructiveFull AccessYes
data_studio__dockit__es__searchdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__get_documentdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__cat_indicesdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__get_mappingdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__cat_aliasesdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__get_aliasdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__countdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__cluster_healthdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__cat_nodesdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__cat_shardsdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__list_snapshotsdockit · Elasticsearch🟢 SafeRead OnlyNo
data_studio__dockit__es__index_documentdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__update_documentdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__create_indexdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__put_mappingdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__put_aliasdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__update_aliasesdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__bulkdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__reindexdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__restore_snapshotdockit · Elasticsearch🟡 ElevatedData Read-WriteNo
data_studio__dockit__es__delete_documentdockit · Elasticsearch🔴 DestructiveFull AccessYes
data_studio__dockit__es__delete_by_querydockit · Elasticsearch🔴 DestructiveFull AccessYes
data_studio__dockit__es__delete_indexdockit · Elasticsearch🔴 DestructiveFull AccessYes
data_studio__dockit__es__delete_aliasdockit · Elasticsearch🔴 DestructiveFull AccessYes
data_studio__dockit__mongo__list_databasesdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__list_collectionsdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__finddockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__collection_statsdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__database_statsdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__server_statusdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__repl_set_statusdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__shard_statusdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__count_documentsdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__list_indexesdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__sample_documentsdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__distinctdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__get_slow_queriesdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__list_usersdockit · MongoDB🟢 SafeRead OnlyNo
data_studio__dockit__mongo__aggregatedockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__insert_onedockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__update_manydockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__create_databasedockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__create_collectiondockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__update_documentdockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__rename_collectiondockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__clone_collectiondockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__create_indexdockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__drop_indexdockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__insert_manydockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__find_one_and_updatedockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__bulk_writedockit · MongoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__mongo__delete_manydockit · MongoDB🔴 DestructiveFull AccessYes
data_studio__dockit__mongo__drop_databasedockit · MongoDB🔴 DestructiveFull AccessYes
data_studio__dockit__mongo__drop_collectiondockit · MongoDB🔴 DestructiveFull AccessYes
data_studio__dockit__mongo__delete_documentdockit · MongoDB🔴 DestructiveFull AccessYes
data_studio__dockit__mongo__truncate_collectiondockit · MongoDB🔴 DestructiveFull AccessYes
data_studio__dockit__dynamo__execute_querydockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__describe_tabledockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__list_tablesdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__query_tabledockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__scan_tabledockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__batch_get_itemsdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__describe_continuous_backupsdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__describe_ttldockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__get_table_metricsdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__list_backupsdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__describe_backupdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__describe_limitsdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__list_tagsdockit · DynamoDB🟢 SafeRead OnlyNo
data_studio__dockit__dynamo__execute_writedockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__create_itemdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__batch_write_itemsdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__update_itemdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__transact_write_itemsdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__create_gsidockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__update_gsidockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__create_tabledockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__update_table_configdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__update_ttldockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__update_pitrdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__update_streamsdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__restore_tabledockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__create_backupdockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__tag_resourcedockit · DynamoDB🟡 ElevatedData Read-WriteNo
data_studio__dockit__dynamo__execute_deletedockit · DynamoDB🔴 DestructiveFull AccessYes
data_studio__dockit__dynamo__delete_itemdockit · DynamoDB🔴 DestructiveFull AccessYes
data_studio__dockit__dynamo__delete_gsidockit · DynamoDB🔴 DestructiveFull AccessYes
data_studio__dockit__dynamo__delete_tabledockit · DynamoDB🔴 DestructiveFull AccessYes
data_studio__dockit__dynamo__truncate_tabledockit · DynamoDB🔴 DestructiveFull AccessYes
117 tools total. Read-only operations run automatically under Read Only mode. Elevated operations (writes, index/schema changes) require Data Read-Write. Destructive operations (DELETE, DROP, TRUNCATE) require Full Access and always surface an explicit user confirmation prompt.

How it works

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               |

The MCP server is a thin routing layer. All database drivers, SSH tunnels, and connection management live in the desktop apps, which expose a local HTTP bridge (127.0.0.1 only). The MCP server auto-discovers running backends via each app's port file.


For developers

This repository also contains the data-studio-agent Rust framework, the shared AI agent loop (provider adapters, streaming, tool calling, context compaction) that powers the built-in assistants in dockit and sqlkit.

See crates/data-studio-agent/README.md for installation, architecture, and integration guides.

License

Apache 2.0. See LICENSE.

来源:README.md,提交 c3f962b

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.12最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分