В этом руководстве рассматривается, как объединить мощный фреймворк Chainlit для создания чат-интерфейсов с MCP-сервером ClickHouse (Model Context Protocol), чтобы создавать интерактивные приложения для работы с данными. Chainlit позволяет создавать диалоговые интерфейсы для ИИ-приложений с минимальным количеством кода, а MCP-сервер ClickHouse обеспечивает удобную интеграцию с высокопроизводительной колоночной базой данных ClickHouse.
Предварительные требования
- Вам потребуется API-ключ Anthropic
- У вас должен быть установлен
uv
Базовое приложение на Chainlit
Ниже показан пример простого чат-приложения, которое можно запустить следующим образом:
uv run --with anthropic --with chainlit chainlit run chat_basic.py -w -hЗатем откройте http://localhost:8000
Добавление MCP-сервера ClickHouse
Если добавить MCP-сервер ClickHouse, станет ещё интереснее.
Вам потребуется обновить файл .chainlit/config.toml, чтобы разрешить
использование команды uv:
[features.mcp.stdio]
enabled = true
# Для MCP stdio сервера можно использовать только исполняемые файлы из списка разрешённых.
# Укажите только базовое имя исполняемого файла, например "npx", а не "/usr/bin/npx".
# Пожалуйста, не комментируйте эту строку — она нужна для разбора имени исполняемого файла.
allowed_executables = [ "npx", "uvx", "uv" ]Здесь есть вспомогательный код, который обеспечивает работу MCP-серверов с Chainlit, поэтому для запуска Chainlit вместо этого нужно выполнить следующую команду:
uv run --with anthropic --with chainlit chainlit run chat_mcp.py -w -hЧтобы добавить MCP-сервер, нажмите на значок с вилкой в интерфейсе чата, а затем добавьте следующую команду, чтобы подключиться и использовать Песочницу ClickHouse:
CLICKHOUSE_HOST=sql-clickhouse.clickhouse.com CLICKHOUSE_USER=demo CLICKHOUSE_PASSWORD= CLICKHOUSE_SECURE=true uv run --with mcp-clickhouse --python 3.13 mcp-clickhouseЕсли вы хотите использовать собственный экземпляр ClickHouse, вы можете изменить значения переменных окружения.
Затем вы можете задавать ему такие вопросы:
- Расскажи мне о таблицах, к которым у тебя есть доступ для выполнения запросов
- Что-нибудь интересное о нью-йоркских такси?