StarRocks

официальный

Взаимодействие со StarRocks

Что можно делать с StarRocks MCP?

  • Выполнение SQL-запросов — запрашивайте выполнение операторов SELECT через read_query или команд DDL/DML через write_query, с возможностью вывода результатов в файл для больших объемов данных.
  • Изучение структуры базы данных — просматривайте списки баз данных и таблиц или получайте схемы таблиц с помощью ресурсов starrocks://, например starrocks:///{db}/{table}/schema.
  • Получение обзора таблиц или баз данных — используйте table_overview или db_overview для получения определений столбцов, количества строк и примеров данных, с кэшированием для повторных запросов.
  • Визуализация результатов запросов — создавайте графики Plotly напрямую из SQL-запроса с помощью query_and_plotly_chart, возвращая PNG-изображение для отображения в интерфейсе.
  • Мониторинг состояния кластера — определяйте самые горячие таблицы по посещениям в журнале аудита (top_hot_tables) или таблицы с низкой производительностью по показателю здоровья (top_bad_tables).
  • Доступ к внутренней системной информации — запрашивайте внутренние данные StarRocks, такие как узлы FE/BE, транзакции или задания, через путь ресурса proc://.

Документация

MseeP.ai Security Assessment Badge

Официальный MCP-сервер StarRocks

MCP-сервер StarRocks выступает в роли моста между AI-ассистентами и базами данных StarRocks. Он позволяет выполнять прямые SQL-запросы, исследовать базы данных, визуализировать данные с помощью графиков, а также получать подробные схемы и обзоры данных без необходимости сложной настройки на стороне клиента.

StarRocks Server MCP server

Возможности

  • Прямое выполнение SQL: Выполнение запросов SELECT (read_query) и команд DDL/DML (write_query).
  • Исследование базы данных: Просмотр списка баз данных и таблиц, получение схем таблиц (ресурсы starrocks://).
  • Системная информация: Доступ к внутренним метрикам и состояниям StarRocks через путь ресурса proc://.
  • Подробные обзоры: Получение исчерпывающих сводок по таблицам (table_overview) или целым базам данных (db_overview), включая определения столбцов, количество строк и примеры данных.
  • Визуализация данных: Выполнение запроса и создание графика Plotly непосредственно из результатов (query_and_plotly_chart).
  • Интеллектуальное кэширование: Обзоры таблиц и баз данных кэшируются в памяти для ускорения повторных запросов. При необходимости кэш можно обойти.
  • Гибкая настройка: Задание параметров подключения и поведения через переменные окружения.

Предварительные требования

  • Python 3.11 или новее.
  • Доступный кластер StarRocks (сервис FE). По умолчанию сервер подключается к localhost:9030 по протоколу MySQL.
  • uv — быстрый Python-пакет и менеджер проектов (современная замена pip + virtualenv) от Astral. Этот проект использует uv для разрешения зависимостей, создания виртуального окружения и запуска сервера. Команды uv run в этом README автоматически создают изолированное окружение и устанавливают необходимые зависимости при первом использовании, поэтому ручной шаг 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-хост. Конфигурация передается хосту и определяет, как запускать процесс MCP-сервера StarRocks.

Использование Streamable HTTP (рекомендуется):

Для запуска сервера в режиме Streamable HTTP:

Сначала проверьте, что подключение к StarRocks работает (9030 — это порт протокола MySQL StarRocks, а не порт 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"
    }
  }
}

Использование Docker:

Соберите образ:

docker build -t mcp-server-starrocks:local .

Соберите и отправьте образ с версией:

docker build -t <registry>/<namespace>/mcp-starrocks:0.4.0 .
docker push <registry>/<namespace>/mcp-starrocks:0.4.0

Запустите сервер в режиме Streamable HTTP:

docker run --rm -p 8000:8000 \
  -e STARROCKS_HOST=host.docker.internal \
  -e STARROCKS_PORT=9030 \
  -e STARROCKS_USER=root \
  -e STARROCKS_PASSWORD='' \
  mcp-server-starrocks:local

Затем настройте 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 должно указывать на конечную точку Streamable HTTP вашего MCP-сервера (при необходимости скорректируйте хост/порт).
  • С такой конфигурацией клиенты могут взаимодействовать с сервером, используя стандартный JSON через HTTP POST-запросы. Специальный SDK не требуется.
  • Все API инструментов принимают и возвращают стандартный JSON, как описано выше.

Примечание: Режим sse (Server-Sent Events) устарел и больше не поддерживается. Для всех новых интеграций используйте режим Streamable HTTP.

Переменные окружения:

Конфигурация подключения

Вы можете настроить подключение к StarRocks, используя либо отдельные переменные окружения, либо единый URL подключения:

Вариант 1: Отдельные переменные окружения

  • STARROCKS_HOST: (Необязательно) Имя хоста или IP-адрес сервиса FE StarRocks. По умолчанию — localhost.
  • STARROCKS_PORT: (Необязательно) Порт протокола MySQL сервиса FE StarRocks. По умолчанию — 9030.
  • STARROCKS_USER: (Необязательно) Имя пользователя StarRocks. По умолчанию — root.
  • STARROCKS_PASSWORD: (Необязательно) Пароль StarRocks. По умолчанию — пустая строка.
  • STARROCKS_PASSWORD_FILE: (Необязательно) Путь к текстовому файлу в кодировке UTF-8, содержащему пароль. Это полезно при внедрении секретов на основе файлов, например, с использованием учетных данных systemd. Один завершающий символ новой строки игнорируется. Используется только в том случае, если явный пароль не указан через STARROCKS_PASSWORD или STARROCKS_URL.
  • STARROCKS_PASSWORD_KEYCHAIN_SERVICE: (Необязательно, только macOS) Имя службы общего пароля для чтения пароля из Keychain. Используется только в том случае, если явный пароль или STARROCKS_PASSWORD_FILE не настроены.
  • STARROCKS_PASSWORD_KEYCHAIN_ACCOUNT: (Необязательно, только macOS) Имя учетной записи общего пароля для чтения пароля из Keychain. По умолчанию — разрешенное имя пользователя StarRocks.
  • STARROCKS_DB: (Необязательно) База данных по умолчанию, используемая, если она не указана в аргументах инструмента или URI ресурсов. Если задано, подключение попытается выполнить USE для этой базы данных. Такие инструменты, как table_overview и db_overview, будут использовать ее, если часть с базой данных опущена в их аргументах. По умолчанию — пусто (нет базы данных по умолчанию).
  • STARROCKS_QUERY_TIMEOUT: (Необязательно) Количество секунд ожидания результатов запроса перед отказом, целое число. По умолчанию не задано, что означает ожидание бесконечно, как и в предыдущем поведении. Установите это значение, если зависший или долго выполняющийся запрос должен завершаться ошибкой, а не блокировать вызов инструмента навсегда.

Вариант 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_db
    • mysql://admin:secret@db.example.com:9030/production
    • starrocks://user:pass@192.168.1.100:9030/analytics

Приоритет пароля:

  • Пароль, встроенный в STARROCKS_URL, имеет приоритет, включая явный пустой пароль, например user:@host:9030/db.
  • Если в STARROCKS_URL пароль опущен, при наличии используется STARROCKS_PASSWORD.
  • Если ни один явный источник пароля не задан и настроен STARROCKS_PASSWORD_FILE, пароль считывается из этого файла.
  • Если явный пароль или файл пароля не настроены и задан STARROCKS_PASSWORD_KEYCHAIN_SERVICE, пароль считывается из macOS Keychain.

Пример с macOS Keychain

Сохраните пароль:

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

Пример с зашифрованными учетными данными systemd (systemd 250 или новее)

Сервер сам не вызывает systemd-creds. На этапе развертывания администратор шифрует пароль; при запуске службы systemd расшифровывает его в каталог учетных данных службы и предоставляет этому серверу только путь к файлу.

Создайте зашифрованные учетные данные, привязанные к хосту, не помещая пароль в историю оболочки:

sudo -v
sudo install -d -m 0700 /etc/credstore.encrypted
sudo systemd-ask-password -n "StarRocks password:" \
  | sudo systemd-creds encrypt \
      --name=starrocks-password \
      - /etc/credstore.encrypted/starrocks-password.cred

Добавьте учетные данные в модуль службы. Спецификатор %d разворачивается в каталог учетных данных, специфичный для службы:

[Service]
LoadCredentialEncrypted=starrocks-password:/etc/credstore.encrypted/starrocks-password.cred
Environment=STARROCKS_PASSWORD_FILE=%d/starrocks-password
PrivateMounts=yes

Оставьте STARROCKS_PASSWORD незаданным и опустите пароль в STARROCKS_URL, затем перезагрузите модуль и перезапустите службу. Зашифрованные учетные данные обычно привязаны к локальному хосту (и к его устройству TPM2, если оно доступно); они расшифровываются только во время активации службы. Процесс службы и администраторы с правами root по-прежнему могут получить доступ к паролю в открытом виде во время выполнения. Не используйте systemd-creds encrypt --with-key=null, так как он не обеспечивает конфиденциальность.

Дополнительная конфигурация

  • STARROCKS_FE_ARROW_FLIGHT_SQL_PORT: (Необязательно) Порт Arrow Flight SQL сервиса FE StarRocks. Если задан, сервер подключается с использованием высокопроизводительного протокола 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 также принимаются (передаются в write_html Plotly).

  • STARROCKS_CHART_DEFAULT_FORMAT: (Необязательно) Формат вывода по умолчанию для query_and_plotly_chart, когда аргумент format опущен. Одно из значений: json, png, jpeg (по умолчанию) или html. Установите html, чтобы всегда записывать интерактивный файл графика в STARROCKS_CHART_OUTPUT_DIR (с встроенным PNG-предпросмотром) без передачи format при каждом вызове. Недопустимые значения возвращаются к jpeg с предупреждением.

  • STARROCKS_MYSQL_AUTH_PLUGIN: (Необязательно) Указывает плагин аутентификации, используемый при подключении к сервису FE StarRocks. Например, установите mysql_clear_password, если ваше развертывание StarRocks требует аутентификации с паролем в открытом виде (например, при использовании определенных настроек LDAP или внешней аутентификации). Устанавливайте только в том случае, если ваше окружение этого требует; в противном случае используется плагин auth_plugin по умолчанию.

Конфигурация TLS / SSL

Эти переменные управляют TLS для подключения. Если ни одна из них не задана, базовый mysql.connector сохраняет свое поведение по умолчанию (ssl-mode=PREFERRED): подключение шифруется, если сервер поддерживает TLS, но сертификат сервера не проверяется. Для реальной безопасности укажите сертификат CA и включите проверку.

  • STARROCKS_SSL_DISABLED: (Необязательно) Установите true, чтобы принудительно отключить TLS. Переопределяет все остальные настройки SSL. По умолчанию — false.
  • STARROCKS_SSL_CA: (Необязательно) Путь к сертификату CA (PEM), используемому для проверки сертификата сервера StarRocks.
  • STARROCKS_SSL_CERT: (Необязательно) Путь к клиентскому сертификату (PEM) для взаимного TLS (mTLS).
  • STARROCKS_SSL_KEY: (Необязательно) Путь к закрытому ключу клиента (PEM) для взаимного TLS (mTLS).
  • 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: (Устаревший, не рекомендуется) Запускается в режиме потоковой передачи Server-Sent Events (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 — краткая сводка, включающая разрешенный абсолютный путь, количество байт и количество строк, а также небольшой предварительный просмотр. Возвращает сообщение об ошибке при сбое.
  • write_query

    • Описание: Выполняет DDL (CREATE, ALTER, DROP), DML (INSERT, UPDATE, DELETE) или другую команду StarRocks, которая не возвращает ResultSet.
    • Входные данные:
      {
        "query": "SQL command string",
        "db": "database name (optional, uses default database if not specified)"
      }
      
    • Выходные данные: Текстовое содержимое, подтверждающее успех (например, "Query OK, X rows affected") или сообщающее об ошибке. Изменения автоматически фиксируются при успехе.
  • analyze_query

    • Описание: Анализирует запрос и получает результат анализа с помощью query profile или 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)"
      }
      
    • Выходные данные: Текстовое содержимое с результатами анализа запроса. Использует ANALYZE PROFILE FROM, если указан uuid, в противном случае — EXPLAIN ANALYZE, если указан sql.
  • 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

    • Описание: Получает топ плохих таблиц по показателю здоровья таблицы, следуя логике top-bad-tables из Star Management Studio. Переиспользует расчет здоровья таблицы на основе 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.
  • query_and_plotly_chart

    • Описание: Выполняет SQL-запрос, загружает результаты в Pandas DataFrame и генерирует диаграмму Plotly с помощью предоставленного Python-выражения. Предназначен для визуализации в поддерживающих интерфейсах.
    • Входные данные:
      {
        "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)"
      }
      
    • Выходные данные: Список, содержащий:
      1. TextContent: Текстовое представление DataFrame и примечание о том, что диаграмма предназначена для отображения в интерфейсе.
      2. ImageContent: Сгенерированная диаграмма Plotly, закодированная как изображение PNG в base64 (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).

Промпты

Не определены этим сервером.

Поведение кэширования

  • Инструменты 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

Демонстрация

MCP Demo Image