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 分