Сервер Greptile MCP [ЗАВЕРШЕНО]
Шпаргалка по командам быстрого запуска
✅ СТАТУС ПРОЕКТА: ВСЕ ЗАДАЧИ ВЫПОЛНЕНЫ (11/11)
Краткое описание выполненной работы см. в файле PROJECT_COMPLETION.md , а инструкции по использованию — в файле USER_GUIDE.md .
Среда | Настройка и установка | Выполнить команду |
---|---|---|
Локальный (Python) | python -m venv .venv && source .venv/bin/activate && pip install -e . | python -m src.main |
Докер | docker build -t greptile-mcp . | docker run --rm --env-file .env -p 8050:8050 greptile-mcp |
Кузнечное дело | npm install -g smithery | smithery deploy (см. smithery.yaml) |
Заполните
.env
с помощью.env.example
и задайтеGREPTILE_API_KEY
иGITHUB_TOKEN
перед запуском.
Полные предварительные требования, расширенное использование агента, интеграция и устранение неполадок см. в полной документации в docs/README.md
и сведения об агенте в AGENT_USAGE.md .
Реализация сервера MCP (Model Context Protocol), которая интегрируется с API Greptile для предоставления возможностей поиска кода и запросов агентам ИИ.
Функции
Сервер предоставляет четыре основных инструмента Greptile, которые позволяют агентам ИИ взаимодействовать с кодовыми базами:
index_repository
: индексирует репозиторий для поиска кода и запросов.- Обработать репозиторий, чтобы сделать его доступным для поиска
- Обновляйте существующие индексы при изменении репозиториев
- Настройте параметры уведомлений
query_repository
: Запрос к репозиториям для получения ответов со ссылками на код.- Задавайте вопросы на естественном языке о кодовой базе
- Получите подробные ответы, которые ссылаются на конкретные места кода.
- Поддержка истории разговоров с идентификаторами сеансов
search_repository
: Поиск релевантных файлов в репозиториях без генерации полного ответа.- Найдите файлы, связанные с определенными концепциями или функциями
- Получите контекстные совпадения, ранжированные по релевантности
- Быстрее, чем полные запросы, когда нужны только местоположения файлов
get_repository_info
: Получить информацию об индексированном репозитории.- Проверьте статус и ход индексации
- Проверьте, какие репозитории доступны для запроса
- Получить метаданные об индексированных репозиториях
Развертывание кузницы
Сервер Greptile MCP поддерживает развертывание через Smithery. Файл конфигурации smithery.yaml
включен в корень проекта.
Конфигурация кузницы
Конфигурация Smithery определена в smithery.yaml
и поддерживает следующие параметры:
Использование с кузнечным делом
Для развертывания с помощью Smithery:
- Установить Smithery:
npm install -g smithery
- Развертывание сервера:
smithery deploy
- Настройте свой клиент Smithery с помощью необходимых ключей API
Дополнительная документация
Подробные инструкции по использованию агентов ИИ см. в Руководстве по использованию агентов .
Предпосылки
- Питон 3.12+
- Ключ API Greptile (из https://app.greptile.com/settings/api )
- GitHub или GitLab Personal Access Token (PAT) с разрешениями
repo
(или эквивалентными) для репозиториев, которые вы собираетесь индексировать - Docker (рекомендуется для развертывания)
Требуемые пакеты Python
fastmcp
- реализация MCP-сервераhttpx
- Асинхронный HTTP-клиентpython-dotenv
- Управление переменными средыuvicorn
— сервер ASGI для транспорта SSE
Установка
Использование pip (для разработки или локального тестирования)
- Клонируйте этот репозиторий:
- Создать виртуальную среду (рекомендуется):
- Установить зависимости:
- Создайте файл
.env
на основе.env.example
: - Настройте переменные среды в файле
.env
:
Использование Docker (рекомендуется для развертывания)
- Клонируйте репозиторий:
- Создайте файл
.env
на основе.env.example
и настройте переменные среды. - Создайте образ Docker:
Запуск сервера
Использование пипа
Транспорт SSE (по умолчанию)
Убедитесь, что в файле .env
установлены TRANSPORT=sse
и PORT=8050
(или выбранный вами порт).
Сервер будет прослушивать http://<HOST>:<PORT>/sse
.
Stdio Транспорт
Установите TRANSPORT=stdio
в вашем .env
файле. С помощью stdio клиент MCP обычно раскручивает процесс сервера MCP.
Использование Докера
Транспорт SSE (по умолчанию)
Сервер будет прослушивать http://localhost:8050/sse
(или IP-адрес хоста, если он не локальный).
Stdio Транспорт
Настройте клиент MCP для запуска контейнера Docker с помощью TRANSPORT=stdio
.
Интеграция с клиентами MCP
Пример конфигурации SSE
Добавьте это в конфигурацию вашего клиента MCP (например, mcp_config.json
):
Пример конфигурации Python с Stdio
Убедитесь, что в среде, где выполняется команда, задан TRANSPORT=stdio
:
Пример конфигурации Docker с Stdio
Подробное руководство по использованию
Рабочий процесс анализа кодовой базы
- Индексные репозитории, которые вы хотите проанализировать с помощью
index_repository
- Проверьте статус индексации с помощью
get_repository_info
, чтобы убедиться, что обработка завершена. - Запросите репозитории , используя естественный язык с помощью
query_repository
- Найдите определенные файлы, связанные с функциями или концепциями, с помощью
search_repository
Управление сеансом для контекста разговора
При взаимодействии с сервером Greptile MCP через любого клиента (включая Smithery) правильное управление сеансом имеет решающее значение для поддержания контекста разговора:
- Генерируйте уникальный идентификатор сеанса в начале разговора
- Повторно используйте один и тот же идентификатор сеанса для всех связанных последующих запросов.
- Создайте новый идентификатор сеанса при начале нового разговора.
Пример управления идентификатором сеанса:
Важно для интеграции Smithery : Агенты, подключающиеся через Smithery, должны генерировать и поддерживать собственные идентификаторы сеансов. Сервер Greptile MCP НЕ генерирует идентификаторы сеансов автоматически. Идентификатор сеанса должен быть частью состояния разговора агента.
Лучшие практики
- Производительность индексации : Меньшие репозитории индексируются быстрее. Для больших монорепозиториев рассмотрите возможность индексации определенных ветвей или тегов.
- Оптимизация запросов : будьте конкретны в своих запросах. Включайте соответствующие технические термины для лучших результатов.
- Выбор репозитория : при запросе нескольких репозиториев перечислите их в порядке релевантности, чтобы получить наилучшие результаты.
- Управление сеансами : используйте идентификаторы сеансов для последующих вопросов, чтобы поддерживать контекст между запросами.
Ссылка на API
1. Индексный репозиторий
Индексирует репозиторий, чтобы сделать его доступным для поиска в будущих запросах.
Параметры:
remote
(строка): Хост репозитория, либо «github», либо «gitlab»repository
(строка): репозиторий в формате владелец/репозиторий (например, «greptileai/greptile»)branch
(строка): ветвь для индексации (например, «main»)reload
(логическое значение, необязательно): следует ли принудительно выполнять повторную обработку ранее проиндексированного репозитория.notify
(логическое значение, необязательно): отправлять ли уведомление по электронной почте после завершения индексации
Пример:
Ответ:
2. Запросить репозиторий
Запрашивает репозитории на естественном языке, чтобы получить ответы со ссылками на код.
Параметры:
query
(строка): запрос на естественном языке о кодовой базеrepositories
(массив): Список репозиториев для запроса, каждый в формате:session_id
(строка, необязательно): идентификатор сеанса для продолжения разговораstream
(логическое значение, необязательно): следует ли передавать ответ в потоковом режимеgenius
(логическое значение, необязательно): следует ли использовать расширенные возможности запроса
Пример:
Ответ:
3. Поиск в репозитории
Выполняет поиск соответствующих файлов в репозиториях, не создавая полный ответ.
Параметры:
query
(строка): поисковый запрос о кодовой базеrepositories
(массив): Список репозиториев для поискаsession_id
(строка, необязательно): идентификатор сеанса для продолжения разговораgenius
(логическое значение, необязательно): использовать ли расширенные возможности поиска
Пример:
Ответ:
4. Получить информацию о репозитории
Получает информацию о конкретном репозитории, который был проиндексирован.
Параметры:
remote
(строка): Хост репозитория, либо «github», либо «gitlab»repository
(строка): Репозиторий в формате владелец/репоbranch
(строка): ветвь, которая была проиндексирована.
Пример:
Ответ:
Примеры интеграции
1. Интеграция с Claude.ai через Anthropic API
2. Интеграция с чат-ботом на базе LLM
3. Инструмент запроса кода командной строки
Поиск неисправностей
Общие проблемы
1. Ошибки аутентификации
Симптом : вы получаете ошибку 401 Unauthorized
или Repository not found with configured credentials
.
Решения :
- Убедитесь, что ваш ключ API Greptile действителен и правильно установлен в файле
.env
- Проверьте, не истек ли срок действия вашего токена GitHub/GitLab (обычно срок действия токена истекает через определенный период времени)
- Убедитесь, что ваш токен GitHub/GitLab имеет область действия
repo
для доступа к репозиториям - Протестируйте свой токен GitHub напрямую с помощью API GitHub, чтобы убедиться в его работоспособности.
Тестирование токена GitHub :
2. Репозиторий не найден
Симптом : API возвращает ошибку 404 или сообщение «Репозиторий не найден».
Решения :
- Убедитесь, что репозиторий существует и доступен с вашим токеном GitHub/GitLab.
- Дважды проверьте формат репозитория (он должен быть
owner/repo
) - Для частных репозиториев убедитесь, что ваш токен имеет соответствующие права доступа.
- Проверьте правильность названия филиала.
3. Проблемы с подключением
Симптом : невозможно подключиться к серверу MCP.
Решения :
- Проверьте, запущен ли сервер (
ps aux | grep src.main
) - Убедитесь, что порт не используется другим приложением.
- Проверьте настройки сети и конфигурации брандмауэра.
- Попробуйте другой порт, изменив значение
PORT
в файле.env
4. Проблемы с докером
Симптом : Docker-контейнер не запускается или не работает правильно.
Решения :
- Проверьте логи Docker:
docker logs <container_id>
- Убедитесь, что файл
.env
правильно смонтирован. - Убедитесь, что в вашей команде
docker run
указано правильное сопоставление портов. - Проверьте, допускает ли сетевая конфигурация Docker требуемые соединения.
Журналы и отладка
Чтобы включить более подробное ведение журнала, установите следующие переменные среды:
Для устранения неполадок, связанных с определенными взаимодействиями MCP, проверьте журналы сервера MCP:
Расширенная конфигурация
Переменные среды
Переменная | Описание | По умолчанию |
---|---|---|
TRANSPORT | Метод транспортировки ( sse или stdio ) | sse |
HOST | Хост, к которому нужно привязаться для транспорта SSE | 0.0.0.0 |
PORT | Порт для транспорта SSE | 8050 |
GREPTILE_API_KEY | Ваш API-ключ Greptile | (необходимый) |
GITHUB_TOKEN | Персональный токен доступа GitHub/GitLab | (необходимый) |
GREPTILE_BASE_URL | Базовый URL-адрес API Greptile | https://api.greptile.com/v2 |
DEBUG | Включить режим отладки | false |
LOG_LEVEL | Уровень ведения журнала | info |
Пользовательские конечные точки API
Если вам необходимо использовать пользовательскую конечную точку API Greptile (например, для корпоративных установок), измените переменную среды GREPTILE_BASE_URL
:
Настройка производительности
Для производственных развертываний рассмотрите следующие варианты оптимизации производительности:
- Конфигурация воркеров : при использовании транспорта SSE с Uvicorn настройте соответствующее количество воркеров:
- Настройки тайм-аута : настройте тайм-ауты для больших репозиториев:
- Оптимизация памяти : для крупных развертываний учитывайте ограничения ресурсов контейнера:
Внося вклад
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на включение.
- Форк репозитория
- Создайте ветку функций (
git checkout -b feature/amazing-feature
) - Зафиксируйте свои изменения (
git commit -m 'Add some amazing feature'
) - Отправить в ветку (
git push origin feature/amazing-feature
) - Открыть запрос на извлечение
Настройка разработки
Для разработки установите дополнительные зависимости:
Проведите тесты:
Лицензия
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.
Создано ( https://github.com/sosacrazy126 )
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
greptile-mcp
Related MCP Servers
- TypeScriptApache 2.0
- PythonApache 2.0
- Python
- TypeScriptMIT License