StarRocks MCP Server
resmiInteract with StarRocks
Dokumentasi
Server MCP Resmi StarRocks
Server MCP StarRocks bertindak sebagai jembatan antara asisten AI dan basis data StarRocks. Server ini memungkinkan eksekusi SQL langsung, eksplorasi basis data, visualisasi data melalui bagan, serta pengambilan ringkasan skema/data yang mendetail tanpa memerlukan pengaturan sisi klien yang rumit.
Fitur
- Eksekusi SQL Langsung: Menjalankan kueri
SELECT(read_query) dan perintah DDL/DML (write_query). - Eksplorasi Basis Data: Mendaftar basis data dan tabel, mengambil skema tabel (sumber daya
starrocks://). - Informasi Sistem: Mengakses metrik dan status internal StarRocks melalui jalur sumber daya
proc://. - Ringkasan Mendetail: Mendapatkan ringkasan komprehensif dari tabel (
table_overview) atau seluruh basis data (db_overview), termasuk definisi kolom, jumlah baris, dan data sampel. - Visualisasi Data: Mengeksekusi kueri dan menghasilkan bagan Plotly langsung dari hasilnya (
query_and_plotly_chart). - Caching Cerdas: Ringkasan tabel dan basis data di-cache di memori untuk mempercepat permintaan berulang. Cache dapat dilewati bila diperlukan.
- Konfigurasi Fleksibel: Mengatur detail koneksi dan perilaku melalui variabel lingkungan.
Prasyarat
- Python 3.11 atau lebih baru.
- Kluster StarRocks yang dapat dijangkau (layanan FE). Secara default, server terhubung ke
localhost:9030melalui protokol MySQL. uv— pengelola paket dan proyek Python yang cepat (pengganti modern untukpip+virtualenv) dari Astral. Proyek ini menggunakanuvuntuk menyelesaikan dependensi, membuat lingkungan virtual, dan meluncurkan server. Perintahuv rundi seluruh README ini secara otomatis membuat lingkungan terisolasi dan menginstal dependensi yang diperlukan pada penggunaan pertama, sehingga tidak diperlukan langkahpip installmanual.
Menginstal 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
Lihat panduan instalasi resmi uv untuk opsi lainnya. Setelah menginstal, verifikasi bahwa ia ada di PATH Anda:
uv --version
Instalasi
Anda umumnya tidak perlu menginstal paket secara manual — host MCP meluncurkannya untuk Anda melalui uv (lihat Konfigurasi di bawah). uv mengambil paket dan dependensinya sesuai permintaan.
Untuk menjalankannya secara langsung untuk pengujian atau pengembangan:
# 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
Konfigurasi
Server MCP biasanya dijalankan melalui host MCP. Konfigurasi diteruskan ke host, yang menentukan cara meluncurkan proses server MCP StarRocks.
Menggunakan HTTP Streamable (disarankan):
Untuk memulai server dalam mode HTTP Streamable:
Pertama, uji apakah koneksi ke StarRocks baik-baik saja (9030 adalah port protokol MySQL StarRocks, bukan port server HTTP):
$ STARROCKS_URL=root:@localhost:9030 uv run mcp-server-starrocks --test
Mulai server:
uv run mcp-server-starrocks --mode streamable-http --port 8000
Kemudian konfigurasikan MCP seperti ini:
{
"mcpServers": {
"mcp-server-starrocks": {
"url": "http://localhost:8000/mcp"
}
}
}
Menggunakan uv dengan paket terinstal (variabel lingkungan individual):
{
"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"
}
}
}
}
Menggunakan uv dengan paket terinstal (URL koneksi):
{
"mcpServers": {
"mcp-server-starrocks": {
"command": "uv",
"args": ["run", "--with", "mcp-server-starrocks", "mcp-server-starrocks"],
"env": {
"STARROCKS_URL": "root:password@localhost:9030/my_database"
}
}
}
}
Menggunakan uv dengan direktori lokal (untuk pengembangan):
{
"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"
}
}
}
}
Menggunakan uv dengan direktori lokal dan URL koneksi:
{
"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"
}
}
}
}
Argumen Baris Perintah:
Server mendukung argumen baris perintah berikut:
uv run mcp-server-starrocks --help
--mode {stdio,sse,http,streamable-http}: Mode transport (default: stdio atau variabel env MCP_TRANSPORT_MODE)--host HOST: Host server untuk mode HTTP (default: localhost)--port PORT: Port server untuk mode HTTP--test: Jalankan dalam mode uji untuk memverifikasi fungsionalitas
Contoh:
# 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
- Bidang
urlharus menunjuk ke endpoint HTTP Streamable dari server MCP Anda (sesuaikan host/port sesuai kebutuhan). - Dengan konfigurasi ini, klien dapat berinteraksi dengan server menggunakan JSON standar melalui permintaan HTTP POST. Tidak diperlukan SDK khusus.
- Semua API alat menerima dan mengembalikan JSON standar seperti yang dijelaskan di atas.
Catatan: Mode
sse(Server-Sent Events) sudah usang dan tidak lagi dipelihara. Harap gunakan mode HTTP Streamable untuk semua integrasi baru.
Variabel Lingkungan:
Konfigurasi Koneksi
Anda dapat mengonfigurasi koneksi StarRocks menggunakan variabel lingkungan individual atau URL koneksi tunggal:
Opsi 1: Variabel Lingkungan Individual
STARROCKS_HOST: (Opsional) Nama host atau alamat IP layanan FE StarRocks. Default kelocalhost.STARROCKS_PORT: (Opsional) Port protokol MySQL layanan FE StarRocks. Default ke9030.STARROCKS_USER: (Opsional) Nama pengguna StarRocks. Default keroot.STARROCKS_PASSWORD: (Opsional) Kata sandi StarRocks. Default ke string kosong.STARROCKS_PASSWORD_KEYCHAIN_SERVICE: (Opsional, hanya macOS) Nama layanan kata sandi generik yang digunakan saat membaca kata sandi dari Keychain. Ini hanya digunakan jika tidak ada kata sandi eksplisit yang diberikan melaluiSTARROCKS_PASSWORDatauSTARROCKS_URL.STARROCKS_PASSWORD_KEYCHAIN_ACCOUNT: (Opsional, hanya macOS) Nama akun kata sandi generik yang digunakan saat membaca kata sandi dari Keychain. Default ke pengguna StarRocks yang diselesaikan.STARROCKS_DB: (Opsional) Basis data default yang digunakan jika tidak ditentukan dalam argumen alat atau URI sumber daya. Jika diatur, koneksi akan mencobaUSEbasis data ini. Alat sepertitable_overviewdandb_overviewakan menggunakan ini jika bagian basis data dihilangkan dalam argumennya. Default ke kosong (tidak ada basis data default).
Opsi 2: URL Koneksi (lebih diutamakan daripada variabel individual)
-
STARROCKS_URL: (Opsional) String URL koneksi yang berisi semua parameter koneksi dalam satu variabel. Format:[<schema>://]user:password@host:port/database. Bagian skema bersifat opsional. Ketika variabel ini diatur, ia lebih diutamakan daripada variabel individualSTARROCKS_HOST,STARROCKS_PORT,STARROCKS_USER,STARROCKS_PASSWORD, danSTARROCKS_DB.Contoh:
root:mypass@localhost:9030/test_dbmysql://admin:[email protected]:9030/productionstarrocks://user:[email protected]:9030/analytics
Prioritas kata sandi:
- Kata sandi yang disematkan dalam
STARROCKS_URLmenang, termasuk kata sandi kosong eksplisit sepertiuser:@host:9030/db. - Jika
STARROCKS_URLmenghilangkan kata sandi,STARROCKS_PASSWORDdigunakan jika diatur. - Jika tidak ada sumber kata sandi eksplisit yang diatur dan
STARROCKS_PASSWORD_KEYCHAIN_SERVICEdikonfigurasi, kata sandi dibaca dari Keychain macOS.
Contoh Keychain macOS
Simpan kata sandi:
security add-generic-password -U -a root -s mcp-server-starrocks -w 'secret'
Verifikasi kata sandi yang disimpan:
security find-generic-password -a root -s mcp-server-starrocks -w
Gunakan dengan server ini:
export STARROCKS_URL=root@localhost:9030/test_db
export STARROCKS_PASSWORD_KEYCHAIN_SERVICE=mcp-server-starrocks
export STARROCKS_PASSWORD_KEYCHAIN_ACCOUNT=root
Konfigurasi Tambahan
-
STARROCKS_FE_ARROW_FLIGHT_SQL_PORT: (Opsional) Port Arrow Flight SQL dari layanan FE StarRocks. Ketika diatur, server terhubung menggunakan protokol Arrow Flight SQL berkinerja tinggi (melalui driver ADBC) alih-alih protokol MySQL standar. Biarkan tidak diatur untuk menggunakan koneksi MySQL default. Host, pengguna, dan kata sandi diambil dari pengaturan koneksi yang sama seperti yang dijelaskan di atas. -
STARROCKS_OVERVIEW_LIMIT: (Opsional) Batas karakter perkiraan untuk total teks yang dihasilkan oleh alat ringkasan (table_overview,db_overview) saat mengambil data untuk mengisi cache. Ini membantu mencegah penggunaan memori yang berlebihan untuk skema yang sangat besar atau banyak tabel. Default ke20000. -
STARROCKS_MCP_OUTPUT_DIR: (Opsional) Direktori yang digunakan olehread_queryketika argumenoutput_file-nya adalah jalur relatif. Default ke~/.mcp-server-starrocks/output/. Direktori dibuat sesuai permintaan. Jalur absolut yang diteruskan keoutput_file(termasuk jalur berawalan~) melewati pengaturan ini. Catatan: file ditulis di mesin tempat server MCP berjalan. Untuk Claude Code / Claude Desktop, server berjalan secara lokal, sehingga file mendarat di laptop Anda. Untuk penerapan jarak jauh/http, file mendarat di server, bukan klien. -
STARROCKS_MYSQL_AUTH_PLUGIN: (Opsional) Menentukan plugin autentikasi yang digunakan saat menghubungkan ke layanan FE StarRocks. Misalnya, atur kemysql_clear_passwordjika penerapan StarRocks Anda memerlukan autentikasi kata sandi teks jelas (seperti saat menggunakan pengaturan LDAP atau autentikasi eksternal tertentu). Hanya atur ini jika lingkungan Anda secara spesifik memerlukannya; jika tidak, auth_plugin default digunakan. -
MCP_TRANSPORT_MODE: (Opsional) Mode komunikasi yang menentukan bagaimana Server MCP mengekspos layanannya. Opsi yang tersedia:stdio(default): Berkomunikasi melalui input/output standar, cocok untuk hosting Host MCP.streamable-http(HTTP Streamable): Dimulai sebagai Server HTTP Streamable, mendukung panggilan API RESTful.sse: (Usang, tidak disarankan) Dimulai dalam mode streaming Server-Sent Events (SSE), cocok untuk skenario yang memerlukan respons streaming. Catatan: Mode SSE tidak lagi dipelihara, disarankan untuk menggunakan mode HTTP Streamable secara seragam.
Komponen
Alat
-
read_query- Deskripsi: Mengeksekusi kueri SELECT atau perintah lain yang mengembalikan ResultSet (mis.,
SHOW,DESCRIBE). Secara opsional menulis hasil lengkap ke file lokal alih-alih mengembalikannya secara inline — berguna untuk hasil yang terlalu besar untuk muat dalam konteks model. - Input:
{ "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: Tanpa
output_file, konten teks berisi hasil kueri dalam format mirip CSV dengan baris header dan ringkasan jumlah baris. Denganoutput_file, ringkasan singkat termasuk jalur absolut yang diselesaikan, jumlah byte, dan jumlah baris, ditambah pratinjau kecil. Mengembalikan pesan kesalahan saat gagal.
- Deskripsi: Mengeksekusi kueri SELECT atau perintah lain yang mengembalikan ResultSet (mis.,
-
write_query- Deskripsi: Mengeksekusi perintah DDL (
CREATE,ALTER,DROP), DML (INSERT,UPDATE,DELETE), atau perintah StarRocks lainnya yang tidak mengembalikan ResultSet. - Input:
{ "query": "SQL command string", "db": "database name (optional, uses default database if not specified)" } - Output: Konten teks yang mengonfirmasi keberhasilan (mis., "Query OK, X rows affected") atau melaporkan kesalahan. Perubahan dikomit secara otomatis saat berhasil.
- Deskripsi: Mengeksekusi perintah DDL (
-
analyze_query- Deskripsi: Menganalisis kueri dan mendapatkan hasil analisis menggunakan profil kueri atau explain analyze.
- Input:
{ "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)" } - Output: Konten teks yang berisi hasil analisis kueri. Menggunakan
ANALYZE PROFILE FROMjika uuid disediakan, jika tidak menggunakanEXPLAIN ANALYZEjika sql disediakan.
-
query_and_plotly_chart- Deskripsi: Mengeksekusi kueri SQL, memuat hasilnya ke dalam Pandas DataFrame, dan menghasilkan bagan Plotly menggunakan ekspresi Python yang disediakan. Dirancang untuk visualisasi di UI yang mendukung.
- Input:
{ "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)" } - Output: Daftar yang berisi:
TextContent: Representasi teks dari DataFrame dan catatan bahwa bagan untuk tampilan UI.ImageContent: Bagan Plotly yang dihasilkan dikodekan sebagai gambar PNG base64 (image/png). Mengembalikan pesan kesalahan teks saat gagal atau jika kueri tidak menghasilkan data.
-
table_overview- Deskripsi: Mendapatkan ringkasan tabel tertentu: kolom (dari
DESCRIBE), jumlah total baris, dan baris sampel (LIMIT 3). Menggunakan cache dalam memori kecualirefreshbernilai true. - Input:
{ "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. } - Output: Konten teks yang berisi ringkasan terformat (kolom, jumlah baris, data sampel) atau pesan kesalahan. Hasil yang di-cache menyertakan kesalahan sebelumnya jika berlaku.
- Deskripsi: Mendapatkan ringkasan tabel tertentu: kolom (dari
-
db_overview- Deskripsi: Mendapatkan ringkasan (kolom, jumlah baris, baris sampel) untuk semua tabel dalam basis data tertentu. Menggunakan cache tingkat tabel untuk setiap tabel kecuali
refreshbernilai true. - Input:
{ "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. } - Output: Konten teks yang berisi ringkasan gabungan untuk semua tabel yang ditemukan di basis data, dipisahkan oleh header. Mengembalikan pesan kesalahan jika basis data tidak dapat diakses atau tidak berisi tabel.
- Deskripsi: Mendapatkan ringkasan (kolom, jumlah baris, baris sampel) untuk semua tabel dalam basis data tertentu. Menggunakan cache tingkat tabel untuk setiap tabel kecuali
Sumber Daya
Sumber Daya Langsung
starrocks:///databases- Deskripsi: Mendaftar semua basis data yang dapat diakses oleh pengguna yang dikonfigurasi.
- Kueri Setara:
SHOW DATABASES - Tipe MIME:
text/plain
Templat Sumber Daya
-
starrocks:///{db}/{table}/schema- Deskripsi: Mendapatkan definisi skema dari tabel tertentu.
- Kueri Setara:
SHOW CREATE TABLE {db}.{table} - Tipe MIME:
text/plain
-
starrocks:///{db}/tables- Deskripsi: Mencantumkan semua tabel dalam basis data tertentu.
- Kueri Setara:
SHOW TABLES FROM {db} - Tipe MIME:
text/plain
-
proc:///{+path}- Deskripsi: Mengakses informasi sistem internal StarRocks, mirip dengan
/procdi Linux. Parameterpathmenentukan simpul informasi yang diinginkan. - Kueri Setara:
SHOW PROC '/{path}' - Tipe MIME:
text/plain - Jalur Umum:
/frontends- Informasi tentang simpul FE./backends- Informasi tentang simpul BE (untuk deployment non-cloud native)./compute_nodes- Informasi tentang simpul CN (untuk deployment cloud native)./dbs- Informasi tentang basis data./dbs/<DB_ID>- Informasi tentang basis data tertentu berdasarkan ID./dbs/<DB_ID>/<TABLE_ID>- Informasi tentang tabel tertentu berdasarkan ID./dbs/<DB_ID>/<TABLE_ID>/partitions- Informasi partisi untuk sebuah tabel./transactions- Informasi transaksi yang dikelompokkan berdasarkan basis data./transactions/<DB_ID>- Informasi transaksi untuk ID basis data tertentu./transactions/<DB_ID>/running- Transaksi yang sedang berjalan untuk ID basis data./transactions/<DB_ID>/finished- Transaksi yang telah selesai untuk ID basis data./jobs- Informasi tentang pekerjaan asinkron (Schema Change, Rollup, dll.)./statistic- Statistik untuk setiap basis data./tasks- Informasi tentang tugas agen./cluster_balance- Informasi status keseimbangan beban./routine_loads- Informasi tentang pekerjaan Routine Load./colocation_group- Informasi tentang grup Colocation Join./catalog- Informasi tentang katalog yang dikonfigurasi (misalnya, Hive, Iceberg).
- Deskripsi: Mengakses informasi sistem internal StarRocks, mirip dengan
Prompt
Tidak ada yang didefinisikan oleh server ini.
Perilaku Caching
- Alat
table_overviewdandb_overviewmenggunakan cache dalam memori untuk menyimpan teks ringkasan yang dihasilkan. - Kunci cache adalah tuple dari
(database_name, table_name). - Saat
table_overviewdipanggil, ia memeriksa cache terlebih dahulu. Jika hasil ada dan parameterrefreshadalahfalse(default), hasil yang di-cache segera dikembalikan. Jika tidak, ia mengambil data dari StarRocks, menyimpannya di cache, lalu mengembalikannya. - Saat
db_overviewdipanggil, ia mencantumkan semua tabel dalam basis data dan kemudian mencoba mengambil ringkasan untuk setiap tabel menggunakan logika caching yang sama sepertitable_overview(memeriksa cache terlebih dahulu, mengambil jika diperlukan danrefreshadalahfalseatau cache tidak ditemukan). Jikarefreshadalahtrueuntukdb_overview, ia memaksa penyegaran untuk semua tabel dalam basis data tersebut. - Variabel lingkungan
STARROCKS_OVERVIEW_LIMITmenyediakan target lunak untuk panjang maksimum string ringkasan yang dihasilkan per tabel saat mengisi cache, membantu mengelola penggunaan memori. - Hasil yang di-cache, termasuk pesan kesalahan apa pun yang ditemui selama pengambilan asli, disimpan dan dikembalikan pada cache hit berikutnya.
Debug
Setelah memulai server mcp, Anda dapat menggunakan inspector untuk debug:
npx @modelcontextprotocol/inspector
Demo

