Skip to content

VenutNSA/crane-mcp

Repository files navigation

Crane MCP Server

MCP (Model Context Protocol) сервер для работы с контейнерами через утилиту crane.

🚀 Возможности

  • crane_digest - получение digest образа контейнера
  • crane_ls - получение списка тегов в репозитории
  • crane_pull - скачивание образа контейнера

📋 Требования

  • Python >= 3.13
  • Утилита crane (установленная локально)
  • uv (для управления зависимостями)

🛠️ Установка

1. Установите утилиту crane

macOS (Homebrew):

brew install crane

Linux:

# Скачайте и установите с GitHub
curl -L https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz | tar -xz -C /usr/local/bin/

2. Установите зависимости проекта

# Клонируйте репозиторий
git clone <repository-url>
cd crane-mcp

# Установите зависимости
uv sync

🔧 Настройка в Cursor

Добавьте в ваш ~/.cursor/mcp.json:

{
  "mcpServers": {
    "crane-mcp": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "mcp",
        "run",
        "/path/to/crane-mcp/main.py"
      ]
    }
  }
}

Важно: Замените /path/to/crane-mcp/main.py на полный путь к вашему файлу main.py.

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

После настройки в Cursor вы сможете использовать следующие инструменты:

crane_ls

Получает список тегов в репозитории.

Параметры:

  • repository - ссылка на репозиторий (например, nginx)
  • full_ref - показать полные ссылки (опционально)
  • platform - платформа для фильтрации (опционально)

Пример:

Покажи доступные теги для nginx

crane_digest

Получает digest образа контейнера.

Параметры:

  • image_ref - ссылка на образ (например, nginx:latest)

Пример:

Получи digest для nginx:latest

crane_pull

Скачивает образ контейнера.

Параметры:

  • image - ссылка на образ
  • tarball - путь для сохранения
  • platform - платформа (опционально)
  • verbose - подробный вывод (опционально)
  • format - формат сохранения (опционально)
  • cache_path - путь к кэшу (опционально)
  • annotate_ref - сохранить ссылку как аннотацию (опционально)
  • insecure - разрешить загрузку без TLS (опционально)

Пример:

Скачай nginx:latest в /tmp/nginx.tar

📁 Структура проекта

crane-mcp/
├── main.py              # Основной код MCP сервера
├── pyproject.toml       # Зависимости Python
├── uv.lock             # Заблокированные версии зависимостей
├── .gitignore          # Исключения для Git
├── LICENSE             # Лицензия
└── README.md           # Документация

🔍 Примеры использования

Получение списка тегов nginx

Покажи все доступные теги для репозитория nginx

Получение digest образа

Получи digest для образа nginx:1.25-alpine

Скачивание образа

Скачай образ nginx:latest в файл /tmp/nginx.tar

🐛 Устранение неполадок

MCP сервер не подключается

  1. Убедитесь, что путь к main.py в mcp.json правильный
  2. Перезапустите Cursor после изменения конфигурации
  3. Проверьте, что утилита crane установлена и доступна в PATH

Ошибка "crane not found"

Убедитесь, что утилита crane установлена:

crane version

Проблемы с зависимостями

Переустановите зависимости:

uv sync --reinstall

📄 Лицензия

Проект распространяется под лицензией, указанной в файле LICENSE.

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите изменения
  4. Создайте Pull Request

📞 Поддержка

Если у вас возникли проблемы или вопросы, создайте Issue в репозитории проекта.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages