Skip to main content
Glama
waTeim

CloudNativePG MCP Server

by waTeim

MCP-сервер CloudNativePG

MCP-сервер для управления кластерами PostgreSQL через оператор CloudNativePG.

Эта версия использует каркас MCP Base для структуры сервера, аутентификации, сборки контейнера, чарта Helm, реестра промптов и тестовой обвязки. Предыдущая ручная реализация сохранена в deprecated-v1/ для справки.

Набор инструментов

Сервер предоставляет инструменты CloudNativePG из реализации v1:

  • list_postgres_clusters

  • get_cluster_status

  • create_postgres_cluster

  • scale_postgres_cluster

  • delete_postgres_cluster

  • list_postgres_roles

  • create_postgres_role

  • update_postgres_role

  • delete_postgres_role

  • list_postgres_databases

  • create_postgres_database

  • delete_postgres_database

Он также включает административные инструменты каркаса MCP Base для управления промптами:

  • admin_reload_prompts

  • admin_get_prompt_manifest

Related MCP server: PostgreSQL MCP Server

Структура

  • src/cnpg_mcp_server.py: рабочая точка входа FastMCP HTTP

  • src/cnpg_mcp_test_server.py: точка входа для тестирования без аутентификации/с OIDC

  • src/cnpg_mcp_tools.py: реализация и регистрация инструментов CloudNativePG

  • src/mcp_context.py: обертка контекста MCP с извлечением идентификатора пользователя

  • src/auth_*.py: поддержка аутентификации каркаса MCP Base

  • chart/: ресурсы для развертывания Helm

  • test/: тестовая обвязка плагина MCP

  • SCAFFOLD_INVENTORY.md: хеши артефактов каркаса MCP Base

Разработка

Создайте окружение и установите зависимости:

python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt -r test/requirements.txt

Запустите дымовой тест регистрации каркаса:

python bin/smoke_test.py

Запустите локальный набор тестов MCP без аутентификации:

python test/run-local-tests.py

Запустите интеграционные тесты CloudNativePG Kubernetes, адаптированные из deprecated-v1/test/plugins:

python test/run-local-tests.py --include-integration
# or
make test-integration

Эти тесты создают, масштабируют, обновляют и удаляют реальные ресурсы CloudNativePG. Полезные дополнительные настройки:

  • CNPG_MCP_TEST_NAMESPACE: пространство имен для тестовых ресурсов

  • CNPG_MCP_TEST_CLUSTER_PREFIX: префикс имени создаваемого кластера

  • CNPG_MCP_TEST_STORAGE_SIZE: размер хранилища на экземпляр, по умолчанию 1Gi

  • CNPG_MCP_TEST_CREATE_WAIT_SECONDS: таймаут готовности кластера, по умолчанию 300

  • CNPG_MCP_TEST_SCALE_WAIT_SECONDS: таймаут готовности масштабирования, по умолчанию 300

Локальный запуск

Точка входа каркаса использует HTTP-транспорт:

python src/cnpg_mcp_server.py --host 0.0.0.0 --port 4200

Тестовый сервер можно запустить без аутентификации:

python src/cnpg_mcp_test_server.py --host 127.0.0.1 --port 4201 --no-auth

Доступ к Kubernetes

Инструменты используют Python-клиент Kubernetes. Они загружают конфигурацию в следующем порядке:

  1. Конфигурация сервисной учетной записи внутри кластера

  2. Локальный kubeconfig из ~/.kube/config или KUBECONFIG

Большинство инструментов принимают необязательный аргумент namespace. Если он опущен, используется текущее пространство имен контекста Kubernetes, с переходом на default.

Для развертываний Helm внутри кластера сервер использует сервисную учетную запись развертывания. По умолчанию чарт предоставляет этой учетной записи права доступа к CNPG и секретам только в пространстве имен релиза Helm. Чтобы управлять ресурсами CNPG в другом пространстве имен, передайте аргумент namespace инструмента и предоставьте доступ сервисной учетной записи там:

rbac:
  targetNamespaces:
    - application-databases

Для общего развертывания MCP, которое должно работать в произвольных пространствах имен, включите RBAC для всего кластера:

rbac:
  clusterWide: true

Режим для всего кластера предоставляет доступ к секретам во всех пространствах имен, поэтому отдавайте предпочтение явному указанию targetNamespaces, если целевой набор известен.

Развертывание

Каркас MCP Base включает ресурсы Docker и Helm:

make build
make push
make helm-install

Используйте python bin/configure-make.py для генерации make.env с настройками образа и пространства имен перед использованием целей развертывания.

Related MCP Connectors

Related MCP Servers