Skip to main content
Glama
CloudNativePG MCP Server

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 с настройками образа и пространства имен перед использованием целей развертывания.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers