Сервер Greptile MCP [ЗАВЕРШЕНО]
Шпаргалка по командам быстрого запуска
✅ СТАТУС ПРОЕКТА: ВСЕ ЗАДАЧИ ВЫПОЛНЕНЫ (11/11)
Краткое описание выполненной работы см. в файле PROJECT_COMPLETION.md , а инструкции по использованию — в файле USER_GUIDE.md .
Среда | Настройка и установка | Выполнить команду |
Локальный (Python) |
|
|
Докер |
|
|
Кузнечное дело |
|
(см. smithery.yaml) |
Заполните
.env
с помощью.env.example
и задайтеGREPTILE_API_KEY
иGITHUB_TOKEN
перед запуском.
Полные предварительные требования, расширенное использование агента, интеграция и устранение неполадок см.
Реализация сервера 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 (для разработки или локального тестирования)
Клонируйте этот репозиторий:
git clone https://github.com/sosacrazy126/greptile-mcp.git cd greptile-mcpСоздать виртуальную среду (рекомендуется):
python -m venv .venv source .venv/bin/activate # On Windows use `.venv\Scripts\activate`Установить зависимости:
pip install -e .Создайте файл
.env
на основе.env.example
:cp .env.example .envНастройте переменные среды в файле
.env
:GREPTILE_API_KEY=your_api_key_here GITHUB_TOKEN=your_github_token_here
Использование Docker (рекомендуется для развертывания)
Клонируйте репозиторий:
git clone https://github.com/sosacrazy126/greptile-mcp.git cd greptile-mcpСоздайте файл
.env
на основе.env.example
и настройте переменные среды.Создайте образ Docker:
docker build -t greptile-mcp .
Запуск сервера
Использование пипа
Транспорт 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
(массив): Список репозиториев для запроса, каждый в формате:{ "remote": "github", "repository": "owner/repo", "branch": "main" }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:
Расширенная конфигурация
Переменные среды
Переменная | Описание | По умолчанию |
| Метод транспортировки (
или
) |
|
| Хост, к которому нужно привязаться для транспорта SSE |
|
| Порт для транспорта SSE |
|
| Ваш API-ключ Greptile | (необходимый) |
| Персональный токен доступа GitHub/GitLab | (необходимый) |
| Базовый URL-адрес API Greptile |
|
| Включить режим отладки |
|
| Уровень ведения журнала |
|
Пользовательские конечные точки API
Если вам необходимо использовать пользовательскую конечную точку API Greptile (например, для корпоративных установок), измените переменную среды GREPTILE_BASE_URL
:
Настройка производительности
Для производственных развертываний рассмотрите следующие варианты оптимизации производительности:
Конфигурация воркеров : при использовании транспорта SSE с Uvicorn настройте соответствующее количество воркеров:
# For CPU-bound applications: workers = 1-2 × CPU cores uvicorn src.main:app --workers 4Настройки тайм-аута : настройте тайм-ауты для больших репозиториев:
# Add to .env GREPTILE_TIMEOUT=120.0 # Default is 60.0 secondsОптимизация памяти : для крупных развертываний учитывайте ограничения ресурсов контейнера:
docker run --rm --env-file .env -p 8050:8050 --memory="1g" --cpus="1.0" greptile-mcp
Внося вклад
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на включение.
Форк репозитория
Создайте ветку функций (
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 )
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
greptile-mcp
Related MCP Servers
- Apache 2.0
- Apache 2.0
- MIT License