StarRocks
官方與 StarRocks 互動
你可以用 Star Rocks MCP 做什麼?
- 執行唯讀 SQL 查詢 — 透過
read_query執行SELECT、SHOW或DESCRIBE陳述式,並可選擇將大量結果儲存至檔案。 - 執行 DDL/DML 指令 — 使用
write_query執行CREATE、INSERT、UPDATE或DELETE操作,並取得受影響行數的確認。 - 探索資料庫結構 — 透過
starrocks://資源列出資料庫、資料表,並取得SHOW CREATE TABLE定義。 - 取得資料表與資料庫概覽 — 使用
table_overview或db_overview擷取欄位定義、行數與範例資料列,並支援記憶體快取。 - 將查詢結果視覺化為圖表 — 提供 SQL 查詢與 Plotly 表達式給
query_and_plotly_chart,即可取得圖表圖片。 - 檢查叢集健康狀態與熱點 — 透過
top_hot_tables識別頻繁存取的資料表,或透過top_bad_tables找出健康度低的資料表,並經由proc://資源存取內部系統指標。
文件
StarRocks 官方 MCP 伺服器
StarRocks MCP 伺服器作為 AI 助理與 StarRocks 資料庫之間的橋樑。它允許直接執行 SQL、探索資料庫、透過圖表進行資料視覺化,以及擷取詳細的結構描述/資料概覽,無需複雜的用戶端設定。
功能特色
- 直接執行 SQL: 執行
SELECT查詢 (read_query) 和 DDL/DML 指令 (write_query)。 - 資料庫探索: 列出資料庫和資料表,擷取資料表結構描述 (
starrocks://資源)。 - 系統資訊: 透過
proc://資源路徑存取內部的 StarRocks 指標和狀態。 - 詳細概覽: 取得資料表 (
table_overview) 或整個資料庫 (db_overview) 的全面摘要,包括欄位定義、資料列計數和範例資料。 - 資料視覺化: 執行查詢並直接從結果產生 Plotly 圖表 (
query_and_plotly_chart)。 - 智慧快取: 資料表和資料庫概覽會快取在記憶體中,以加速重複的請求。必要時可以繞過快取。
- 靈活配置: 透過環境變數設定連線詳細資訊和行為。
先決條件
- Python 3.11 或更新版本。
- 一個可連線的 StarRocks 叢集 (FE 服務)。預設情況下,伺服器會透過 MySQL 協定連線到
localhost:9030。 uv— 來自 Astral 的快速 Python 套件和專案管理器 (一個現代的pip+virtualenv替代品)。此專案使用uv來解析相依性、建立虛擬環境並啟動伺服器。本 README 中的uv run指令會在首次使用時自動建立一個隔離的環境並安裝所需的相依性,因此無需手動執行pip install步驟。
安裝 uv
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or via Homebrew / pipx / pip
brew install uv
# pipx install uv
# pip install uv
請參閱官方 uv 安裝指南以了解其他選項。安裝後,驗證它是否在你的 PATH 中:
uv --version
安裝
你通常不需要手動安裝此套件 — MCP 主機會透過 uv 為你啟動它 (請參閱下方的配置)。uv 會按需擷取套件及其相依性。
若要直接執行以進行測試或開發:
# Run the published package in a throwaway environment
uv run --with mcp-server-starrocks mcp-server-starrocks --help
# Or, from a local checkout of this repository
git clone https://github.com/starrocks/mcp-server-starrocks.git
cd mcp-server-starrocks
uv sync # create the virtual environment and install dependencies
uv run mcp-server-starrocks --help
配置
MCP 伺服器通常透過 MCP 主機執行。配置會傳遞給主機,指定如何啟動 StarRocks MCP 伺服器程序。
使用 Streamable HTTP (建議):
若要以 Streamable HTTP 模式啟動伺服器:
首先測試與 StarRocks 的連線是否正常 (9030 是 StarRocks MySQL 協定埠,而非 HTTP 伺服器埠):
$ STARROCKS_URL=root:@localhost:9030 uv run mcp-server-starrocks --test
啟動伺服器:
uv run mcp-server-starrocks --mode streamable-http --port 8000
然後像這樣配置 MCP:
{
"mcpServers": {
"mcp-server-starrocks": {
"url": "http://localhost:8000/mcp"
}
}
}
使用 uv 搭配已安裝的套件 (個別環境變數):
{
"mcpServers": {
"mcp-server-starrocks": {
"command": "uv",
"args": ["run", "--with", "mcp-server-starrocks", "mcp-server-starrocks"],
"env": {
"STARROCKS_HOST": "default localhost",
"STARROCKS_PORT": "default 9030",
"STARROCKS_USER": "default root",
"STARROCKS_PASSWORD": "default empty",
"STARROCKS_DB": "default empty"
}
}
}
}
使用 uv 搭配已安裝的套件 (連線 URL):
{
"mcpServers": {
"mcp-server-starrocks": {
"command": "uv",
"args": ["run", "--with", "mcp-server-starrocks", "mcp-server-starrocks"],
"env": {
"STARROCKS_URL": "root:password@localhost:9030/my_database"
}
}
}
}
使用 uv 搭配本機目錄 (用於開發):
{
"mcpServers": {
"mcp-server-starrocks": {
"command": "uv",
"args": [
"--directory",
"path/to/mcp-server-starrocks", // <-- Update this path
"run",
"mcp-server-starrocks"
],
"env": {
"STARROCKS_HOST": "default localhost",
"STARROCKS_PORT": "default 9030",
"STARROCKS_USER": "default root",
"STARROCKS_PASSWORD": "default empty",
"STARROCKS_DB": "default empty"
}
}
}
}
使用 uv 搭配本機目錄和連線 URL:
{
"mcpServers": {
"mcp-server-starrocks": {
"command": "uv",
"args": [
"--directory",
"path/to/mcp-server-starrocks", // <-- Update this path
"run",
"mcp-server-starrocks"
],
"env": {
"STARROCKS_URL": "root:password@localhost:9030/my_database"
}
}
}
}
命令列引數:
伺服器支援以下命令列引數:
uv run mcp-server-starrocks --help
--mode {stdio,sse,http,streamable-http}:傳輸模式 (預設值:stdio 或 MCP_TRANSPORT_MODE 環境變數)--host HOST:HTTP 模式的伺服器主機 (預設值:localhost)--port PORT:HTTP 模式的伺服器埠--test:以測試模式執行以驗證功能
範例:
# Start in streamable HTTP mode on custom host/port
uv run mcp-server-starrocks --mode streamable-http --host 0.0.0.0 --port 8080
# Start in stdio mode (default)
uv run mcp-server-starrocks --mode stdio
# Run test mode
uv run mcp-server-starrocks --test
url欄位應指向你的 MCP 伺服器的 Streamable HTTP 端點 (根據需要調整主機/埠)。- 透過此配置,用戶端可以使用標準的 JSON over HTTP POST 請求與伺服器互動。無需特殊的 SDK。
- 所有工具 API 都接受並回傳如上所述的標準 JSON。
注意:
sse(伺服器傳送事件) 模式已棄用且不再維護。請對所有新的整合使用 Streamable HTTP 模式。
環境變數:
連線配置
你可以使用個別環境變數或單一連線 URL 來配置 StarRocks 連線:
選項 1:個別環境變數
STARROCKS_HOST:(可選) StarRocks FE 服務的主機名稱或 IP 位址。預設為localhost。STARROCKS_PORT:(可選) StarRocks FE 服務的 MySQL 協定埠。預設為9030。STARROCKS_USER:(可選) StarRocks 使用者名稱。預設為root。STARROCKS_PASSWORD:(可選) StarRocks 密碼。預設為空字串。STARROCKS_PASSWORD_KEYCHAIN_SERVICE:(可選,僅限 macOS) 從鑰匙圈讀取密碼時要使用的通用密碼服務名稱。僅在未透過STARROCKS_PASSWORD或STARROCKS_URL提供明確密碼時使用。STARROCKS_PASSWORD_KEYCHAIN_ACCOUNT:(可選,僅限 macOS) 從鑰匙圈讀取密碼時要使用的通用密碼帳戶名稱。預設為解析後的 StarRocks 使用者。STARROCKS_DB:(可選) 如果未在工具引數或資源 URI 中指定,則使用的預設資料庫。如果設定,連線將嘗試USE此資料庫。如果引數中省略了資料庫部分,像table_overview和db_overview這樣的工具將使用此資料庫。預設為空 (無預設資料庫)。
選項 2:連線 URL (優先於個別變數)
-
STARROCKS_URL:(可選) 一個包含所有連線參數於單一變數中的連線 URL 字串。格式:[<schema>://]user:password@host:port/database。結構描述部分是可選的。當設定此變數時,它將優先於個別的STARROCKS_HOST、STARROCKS_PORT、STARROCKS_USER、STARROCKS_PASSWORD和STARROCKS_DB變數。範例:
root:mypass@localhost:9030/test_dbmysql://admin:secret@db.example.com:9030/productionstarrocks://user:pass@192.168.1.100:9030/analytics
密碼優先順序:
- 嵌入在
STARROCKS_URL中的密碼優先,包括像user:@host:9030/db這樣的明確空密碼。 - 如果
STARROCKS_URL省略了密碼,則在設定時使用STARROCKS_PASSWORD。 - 如果兩個明確的密碼來源都未設定,且配置了
STARROCKS_PASSWORD_KEYCHAIN_SERVICE,則從 macOS 鑰匙圈讀取密碼。
macOS 鑰匙圈範例
儲存密碼:
security add-generic-password -U -a root -s mcp-server-starrocks -w 'secret'
驗證已儲存的密碼:
security find-generic-password -a root -s mcp-server-starrocks -w
在此伺服器中使用它:
export STARROCKS_URL=root@localhost:9030/test_db
export STARROCKS_PASSWORD_KEYCHAIN_SERVICE=mcp-server-starrocks
export STARROCKS_PASSWORD_KEYCHAIN_ACCOUNT=root
其他配置
-
STARROCKS_FE_ARROW_FLIGHT_SQL_PORT:(可選) StarRocks FE 服務的 Arrow Flight SQL 埠。設定後,伺服器將使用高效能的 Arrow Flight SQL 協定 (透過 ADBC 驅動程式) 連線,而非標準的 MySQL 協定。保留未設定則使用預設的 MySQL 連線。主機、使用者和密碼取自上述相同的連線設定。 -
STARROCKS_OVERVIEW_LIMIT:(可選) 概覽工具 (table_overview、db_overview) 在擷取資料以填充快取時,所產生_總_文字的_近似_字元限制。這有助於防止因非常大的結構描述或眾多資料表而導致過度的記憶體使用。預設為20000。 -
STARROCKS_MCP_OUTPUT_DIR:(可選) 當read_query的output_file引數為相對路徑時所使用的目錄。預設為~/.mcp-server-starrocks/output/。該目錄會按需建立。傳遞給output_file的絕對路徑 (包括以~為前綴的路徑) 會繞過此設定。注意: 檔案會寫入在 MCP 伺服器執行的機器上。對於 Claude Code / Claude Desktop,伺服器在本機執行,因此檔案會存放在你的筆記型電腦上。對於遠端/http 部署,檔案會存放在伺服器上,而非用戶端。 -
STARROCKS_CHART_OUTPUT_DIR:(可選)query_and_plotly_chart寫入互動式 HTML 圖表的目錄 (當format="html"時)。預設為系統暫存目錄。該目錄會按需建立。注意: 與其他輸出檔案一樣,圖表會寫入在 MCP 伺服器執行的機器上。 -
STARROCKS_CHART_INCLUDE_PLOTLYJS:(可選) 控制如何將plotly.js捆綁到 HTML 圖表中。cdn(預設) 保持檔案較小,但檢視時需要網路存取;inline/true嵌入完整程式庫以供離線使用;也接受directory和false(傳遞給 Plotly 的write_html)。 -
STARROCKS_CHART_DEFAULT_FORMAT:(可選) 當省略format引數時,query_and_plotly_chart的預設輸出格式。可以是json、png、jpeg(預設) 或html之一。設定為html即可在每次呼叫時無需傳遞format,而始終將互動式圖表檔案寫入STARROCKS_CHART_OUTPUT_DIR(帶有內嵌 PNG 預覽)。無效的值會退回到jpeg並發出警告。 -
STARROCKS_MYSQL_AUTH_PLUGIN:(可選) 指定連線到 StarRocks FE 服務時要使用的驗證外掛程式。例如,如果你的 StarRocks 部署需要明文密碼驗證 (例如使用某些 LDAP 或外部驗證設定時),則設定為mysql_clear_password。僅在你的環境特別需要時才設定此項;否則,將使用預設的 auth_plugin。
TLS / SSL 配置
這些變數控制連線的 TLS。當它們都未設定時,底層的 mysql.connector 會保持其預設行為 (ssl-mode=PREFERRED):如果伺服器支援 TLS,則連線會加密,但伺服器憑證不會被驗證。為了真正的安全性,請提供 CA 憑證並啟用驗證。
STARROCKS_SSL_DISABLED:(可選) 設定為true以強制停用 TLS。覆蓋所有其他 SSL 設定。預設為false。STARROCKS_SSL_CA:(可選) 用於驗證 StarRocks 伺服器憑證的 CA 憑證 (PEM) 路徑。STARROCKS_SSL_CERT:(可選) 用於相互 TLS (mTLS) 的用戶端憑證 (PEM) 路徑。STARROCKS_SSL_KEY:(可選) 用於相互 TLS (mTLS) 的用戶端私密金鑰 (PEM) 路徑。STARROCKS_SSL_VERIFY_CERT:(可選) 設定為true以根據 CA 驗證伺服器憑證。預設為false。STARROCKS_SSL_VERIFY_IDENTITY:(可選) 設定為true以同時驗證伺服器主機名稱是否與憑證相符。預設為false。STARROCKS_TLS_VERSIONS:(可選) 允許的 TLS 版本清單,以逗號分隔,例如TLSv1.2,TLSv1.3。
範例 (根據 CA 憑證驗證伺服器):
"env": {
"STARROCKS_HOST": "your-fe-host",
"STARROCKS_PORT": "9030",
"STARROCKS_USER": "root",
"STARROCKS_PASSWORD": "your-password",
"STARROCKS_SSL_CA": "/path/to/ca.pem",
"STARROCKS_SSL_VERIFY_CERT": "true",
"STARROCKS_SSL_VERIFY_IDENTITY": "true"
}
對於高效能的 Arrow Flight SQL 連線 (透過 STARROCKS_FE_ARROW_FLIGHT_SQL_PORT 啟用),TLS 是分開控制的:
STARROCKS_FE_ARROW_FLIGHT_SQL_USE_TLS:(可選) 設定為true以使用grpc+tls://而非純文字grpc://。啟用時,STARROCKS_SSL_CA用作 TLS 根憑證,而STARROCKS_SSL_VERIFY_CERT=false(預設) 會跳過伺服器憑證驗證。
安全性注意事項:避免將明文密碼直接儲存在
mcp.json中。建議從秘密管理器或環境中注入STARROCKS_PASSWORD(和憑證路徑),並且永遠不要將憑證提交到版本控制。
MCP_TRANSPORT_MODE:(可選) 指定 MCP 伺服器如何公開其服務的通訊模式。可用選項:stdio(預設):透過標準輸入/輸出進行通訊,適用於 MCP 主機託管。streamable-http(Streamable HTTP):作為 Streamable HTTP 伺服器啟動,支援 RESTful API 呼叫。sse:(已棄用,不建議使用) 以伺服器傳送事件 (SSE) 串流模式啟動,適用於需要串流回應的場景。注意:SSE 模式已不再維護,建議統一使用 Streamable HTTP 模式。
元件
工具
-
read_query- 描述: 執行 SELECT 查詢或其他會回傳 ResultSet 的命令(例如
SHOW、DESCRIBE)。可選擇將完整結果寫入本機檔案,而非內嵌回傳 — 適用於結果過大無法放入模型上下文的情況。 - 輸入:
{ "query": "SQL query string", "db": "database name (optional, uses default database if not specified)", "output_file": "optional path; if set, writes the full result to disk and returns only a summary + small preview. Relative paths resolve against STARROCKS_MCP_OUTPUT_DIR (default: ~/.mcp-server-starrocks/output/); absolute paths and ~ are used as-is", "output_format": "optional: csv | tsv | json | jsonl. If omitted, inferred from output_file extension (.csv/.tsv/.json/.jsonl/.ndjson); defaults to csv" } - 輸出: 若未使用
output_file,則為包含查詢結果的文字內容,格式類似 CSV,包含標題列與列數摘要。若使用output_file,則為簡短摘要,包含解析後的絕對路徑、位元組數與列數,以及一小段預覽。失敗時回傳錯誤訊息。
- 描述: 執行 SELECT 查詢或其他會回傳 ResultSet 的命令(例如
-
write_query- 描述: 執行 DDL(
CREATE、ALTER、DROP)、DML(INSERT、UPDATE、DELETE)或其他不會回傳 ResultSet 的 StarRocks 命令。 - 輸入:
{ "query": "SQL command string", "db": "database name (optional, uses default database if not specified)" } - 輸出: 確認成功的文字內容(例如 "Query OK, X rows affected")或回報錯誤。成功時變更會自動提交。
- 描述: 執行 DDL(
-
analyze_query- 描述: 使用查詢設定檔或 EXPLAIN ANALYZE 分析查詢並取得分析結果。
- 輸入:
{ "uuid": "Query ID, a string composed of 32 hexadecimal digits formatted as 8-4-4-4-12", "sql": "Query SQL to analyze", "db": "database name (optional, uses default database if not specified)" } - 輸出: 包含查詢分析結果的文字內容。若提供 uuid 則使用
ANALYZE PROFILE FROM,否則若提供 sql 則使用EXPLAIN ANALYZE。
-
top_hot_tables- 描述: 依稽核記錄造訪次數取得熱門資料表。它會聯結
information_schema.tables與starrocks_audit_db__.starrocks_audit_tbl__,排除root與SHOW語句,將稽核 SQL 文字與資料表名稱比對,並依visit_count降冪排序。 - 輸入:
{ "db": "optional database/schema filter", "table": "optional table name substring filter", "min_start_time_ms": 1704067200000, "max_start_time_ms": 1704153600000, "top_n": 20 } - 輸出: 文字摘要加上結構化內容,包含帶有
db、table與visit_count的排名列。
- 描述: 依稽核記錄造訪次數取得熱門資料表。它會聯結
-
top_bad_tables- 描述: 依資料表健康分數取得狀況不佳的資料表,遵循 Star Management Studio 的
top-bad-tables邏輯。它重複使用基於information_schema.be_tablets與information_schema.partitions_meta的資料表健康度計算,過濾掉系統綱要,依table_health_score升冪排序,並回傳分數最低的資料表。 - 輸入:
{ "db": "optional database/schema filter", "table": "optional table name substring filter", "top_n": 20 } - 輸出: 文字摘要加上結構化內容,包含帶有資料表健康欄位的排名列,例如
db、table、tablet_num、replica_score、tablet_score與table_health_score。
- 描述: 依資料表健康分數取得狀況不佳的資料表,遵循 Star Management Studio 的
-
query_and_plotly_chart- 描述: 執行 SQL 查詢,將結果載入 Pandas DataFrame,並使用提供的 Python 表達式產生 Plotly 圖表。設計用於在支援的 UI 中進行視覺化。
- 輸入:
{ "query": "SQL query to fetch data", "plotly_expr": "Python expression string using 'px' (Plotly Express) and 'df' (DataFrame). Example: 'px.scatter(df, x=\"col1\", y=\"col2\")'", "db": "database name (optional, uses default database if not specified)" } - 輸出: 一個包含以下項目的清單:
TextContent:DataFrame 的文字表示以及圖表供 UI 顯示的提示。ImageContent:產生的 Plotly 圖表,編碼為 base64 PNG 圖片(image/png)。失敗或查詢無資料時回傳文字錯誤訊息。
-
table_overview- 描述: 取得特定資料表的概覽:欄位(來自
DESCRIBE)、總列數與範例列(LIMIT 3)。除非refresh為 true,否則使用記憶體內快取。 - 輸入:
{ "table": "Table name, optionally prefixed with database name (e.g., 'db_name.table_name' or 'table_name'). If database is omitted, uses STARROCKS_DB environment variable if set.", "refresh": false // Optional, boolean. Set to true to bypass the cache. Defaults to false. } - 輸出: 包含格式化概覽(欄位、列數、範例資料)的文字內容或錯誤訊息。若適用,快取結果會包含先前的錯誤。
- 描述: 取得特定資料表的概覽:欄位(來自
-
db_overview- 描述: 取得指定資料庫內「所有」資料表的概覽(欄位、列數、範例列)。除非
refresh為 true,否則對每個資料表使用資料表層級快取。 - 輸入:
{ "db": "database_name", // Optional if default database is set. "refresh": false // Optional, boolean. Set to true to bypass the cache for all tables in the DB. Defaults to false. } - 輸出: 文字內容,包含資料庫中找到的所有資料表的串接概覽,以標題分隔。若無法存取資料庫或資料庫中無資料表,則回傳錯誤訊息。
- 描述: 取得指定資料庫內「所有」資料表的概覽(欄位、列數、範例列)。除非
資源
直接資源
starrocks:///databases- 描述: 列出已設定使用者可存取的所有資料庫。
- 等效查詢:
SHOW DATABASES - MIME 類型:
text/plain
資源範本
-
starrocks:///{db}/{table}/schema- 描述: 取得特定資料表的綱要定義。
- 等效查詢:
SHOW CREATE TABLE {db}.{table} - MIME 類型:
text/plain
-
starrocks:///{db}/tables- 描述: 列出特定資料庫內的所有資料表。
- 等效查詢:
SHOW TABLES FROM {db} - MIME 類型:
text/plain
-
proc:///{+path}- 描述: 存取 StarRocks 內部系統資訊,類似 Linux 的
/proc。path參數指定所需的資訊節點。 - 等效查詢:
SHOW PROC '/{path}' - MIME 類型:
text/plain - 常用路徑:
/frontends- 關於 FE 節點的資訊。/backends- 關於 BE 節點的資訊(適用於非雲原生部署)。/compute_nodes- 關於 CN 節點的資訊(適用於雲原生部署)。/dbs- 關於資料庫的資訊。/dbs/<DB_ID>- 依 ID 取得特定資料庫的資訊。/dbs/<DB_ID>/<TABLE_ID>- 依 ID 取得特定資料表的資訊。/dbs/<DB_ID>/<TABLE_ID>/partitions- 資料表的分區資訊。/transactions- 依資料庫分組的交易資訊。/transactions/<DB_ID>- 特定資料庫 ID 的交易資訊。/transactions/<DB_ID>/running- 資料庫 ID 的執行中交易。/transactions/<DB_ID>/finished- 資料庫 ID 的已完成交易。/jobs- 關於非同步作業的資訊(Schema Change、Rollup 等)。/statistic- 每個資料庫的統計資訊。/tasks- 關於代理任務的資訊。/cluster_balance- 負載平衡狀態資訊。/routine_loads- 關於 Routine Load 作業的資訊。/colocation_group- 關於 Colocation Join 群組的資訊。/catalog- 關於已設定目錄的資訊(例如 Hive、Iceberg)。
- 描述: 存取 StarRocks 內部系統資訊,類似 Linux 的
提示
此伺服器未定義任何提示。
快取行為
table_overview與db_overview工具利用記憶體內快取來儲存產生的概覽文字。- 快取鍵是
(database_name, table_name)的元組。 - 當呼叫
table_overview時,它會先檢查快取。若結果存在且refresh參數為false(預設值),則立即回傳快取結果。否則,它會從 StarRocks 擷取資料,存入快取,然後回傳。 - 當呼叫
db_overview時,它會列出資料庫中的所有資料表,然後嘗試使用與table_overview相同的快取邏輯(先檢查快取,若需要且refresh為false或快取未命中時才擷取)來擷取「每個資料表」的概覽。若refresh為true用於db_overview,則會強制重新整理該資料庫中的「所有」資料表。 STARROCKS_OVERVIEW_LIMIT環境變數提供一個「軟性目標」,用於在填入快取時,限制「每個資料表」產生的概覽字串最大長度,以協助管理記憶體使用量。- 快取結果(包含原始擷取期間遇到的任何錯誤訊息)會被儲存,並在後續快取命中時回傳。
除錯
啟動 mcp 伺服器後,您可以使用 inspector 進行除錯:
npx @modelcontextprotocol/inspector
示範

