Integrations
Provides enhanced query and search capabilities for code repositories when the 'genius' parameter is enabled, offering improved contextual understanding
Allows accessing and indexing GitHub repositories for code search and querying, supporting both public and private repositories with appropriate authentication
Enables indexing and searching GitLab repositories, providing code search capabilities and repository information retrieval with proper authentication
Сервер 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 (для разработки или локального тестирования)
- Клонируйте этот репозиторий:Copy
- Создать виртуальную среду (рекомендуется):Copy
- Установить зависимости:Copy
- Создайте файл
.env
на основе.env.example
:Copy - Настройте переменные среды в файле
.env
:Copy
Использование Docker (рекомендуется для развертывания)
- Клонируйте репозиторий:Copy
- Создайте файл
.env
на основе.env.example
и настройте переменные среды. - Создайте образ Docker:Copy
Запуск сервера
Использование пипа
Транспорт 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
(массив): Список репозиториев для запроса, каждый в формате:Copysession_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 настройте соответствующее количество воркеров:Copy
- Настройки тайм-аута : настройте тайм-ауты для больших репозиториев:Copy
- Оптимизация памяти : для крупных развертываний учитывайте ограничения ресурсов контейнера:Copy
Внося вклад
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на включение.
- Форк репозитория
- Создайте ветку функций (
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
- PythonMIT License
- GoMIT License
- TypeScriptApache 2.0
- TypeScriptMIT License