Сервер DeepSource MCP
Сервер Model Context Protocol (MCP), который интегрируется с DeepSource, чтобы предоставить помощникам на базе искусственного интеллекта доступ к показателям качества кода, проблемам и результатам анализа.
Обзор
DeepSource MCP Server позволяет помощникам ИИ взаимодействовать с возможностями анализа качества кода DeepSource через Model Context Protocol. Эта интеграция позволяет помощникам ИИ:
Извлечение метрик кода и результатов анализа
Проблемы с доступом и фильтрацией
Проверить статус качества
Анализ качества проекта с течением времени
Related MCP server: Codebase MCP
Функции
Интеграция с DeepSource API : подключение к DeepSource через GraphQL API
Поддержка протокола MCP : реализует протокол контекста модели для интеграции помощника на основе искусственного интеллекта.
Метрики и пороговые значения качества : получение и управление метриками качества кода с помощью пороговых значений.
Отчеты о соответствии требованиям безопасности : доступ к отчетам о соответствии OWASP Top 10, SANS Top 25 и MISRA-C
Уязвимости зависимостей : доступ к информации об уязвимостях безопасности зависимостей
TypeScript/Node.js : создан с использованием TypeScript для обеспечения безопасности типов и современных функций JavaScript.
Кроссплатформенность : работает на Linux, macOS и Windows
Надежная обработка ошибок : комплексная обработка ошибок, связанных с сетью, аутентификацией и анализом.
Использование с Claude Desktop
Редактировать
claude_desktop_config.json:Открыть рабочий стол Клода
Перейдите в
Settings->Developer->Edit ConfigДобавьте одну из конфигураций ниже в раздел
mcpServers
Перезапустите Claude Desktop, чтобы изменения вступили в силу.
Примеры запросов
После подключения ваш помощник на базе искусственного интеллекта сможет использовать данные DeepSource с такими запросами:
What issues are in the JavaScript files of my project?Для этого будет использоваться инструмент project_issues с фильтрами:
{
"projectKey": "your-project-key",
"path": "src/",
"analyzerIn": ["javascript"],
"first": 10
}Для фильтрации результатов анализа:
Show me the most recent Python analysis runsДля этого будет использоваться инструмент project_runs с фильтрами:
{
"projectKey": "your-project-key",
"analyzerIn": ["python"],
"first": 5
}Для показателей качества кода:
What's my code coverage percentage? Is it meeting our thresholds?Для этого будет использоваться инструмент quality_metrics :
{
"projectKey": "your-project-key",
"shortcodeIn": ["LCV", "BCV", "CCV"]
}Для отчетов о соответствии требованиям безопасности:
Are we compliant with OWASP Top 10 security standards?Для этого будет использоваться инструмент compliance_report :
{
"projectKey": "your-project-key",
"reportType": "OWASP_TOP_10"
}Для установки пороговых значений:
Update our line coverage threshold to 80%Для этого будет использоваться инструмент update_metric_threshold :
{
"projectKey": "your-project-key",
"repositoryId": "repo-id",
"metricShortcode": "LCV",
"metricKey": "AGGREGATE",
"thresholdValue": 80
}Переменные среды
Сервер поддерживает следующие переменные среды:
DEEPSOURCE_API_KEY(обязательно): Ваш ключ API DeepSource для аутентификацииLOG_FILE(необязательно): Путь к файлу, в который должны записываться логи. Если не задано, логи записываться не будутLOG_LEVEL(необязательно): Минимальный уровень журнала для записи (DEBUG, INFO, WARN, ERROR). По умолчанию DEBUG
Пример конфигурации с ведением журнала:
{
"mcpServers": {
"deepsource": {
"command": "npx",
"args": [
"-y",
"deepsource-mcp-server@1.1.0"
],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key",
"LOG_FILE": "/tmp/deepsource-mcp.log",
"LOG_LEVEL": "DEBUG"
}
}
}
}Докер
{
"mcpServers": {
"deepsource": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DEEPSOURCE_API_KEY",
"-e",
"LOG_FILE=/tmp/deepsource-mcp.log",
"-v",
"/tmp:/tmp",
"sapientpants/deepsource-mcp-server"
],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key",
"LOG_FILE": "/tmp/deepsource-mcp.log"
}
}
}
}НПХ
{
"mcpServers": {
"deepsource": {
"command": "npx",
"args": [
"-y",
"deepsource-mcp-server@1.1.0"
],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key"
}
}
}
}Доступные инструменты
Сервер DeepSource MCP предоставляет следующие инструменты:
projects: список всех доступных проектов DeepSourceПараметры:
Нет обязательных параметров
project_issues: Получить проблемы из проекта DeepSource с фильтрациейПараметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.Параметры пагинации:
offset(необязательно) — количество элементов, которые необходимо пропустить при разбивке на страницы.first(необязательно) — количество возвращаемых элементов (по умолчанию 10)after(необязательно) - Курсор для прямой пагинацииbefore(необязательно) - Курсор для обратной пагинацииlast(необязательно) — количество возвращаемых элементов перед курсором «before» (по умолчанию: 10)
Параметры фильтрации:
path(необязательно) — фильтрация проблем по определенному пути к файлуanalyzerIn(необязательно) — фильтрация проблем по определенным анализаторам (например, ["python", "javascript"])tags(необязательно) — фильтрация проблем по тегам
project_runs: список запусков анализа для проекта DeepSource с фильтрациейПараметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.Параметры пагинации:
offset(необязательно) — количество элементов, которые необходимо пропустить при разбивке на страницы.first(необязательно) — количество возвращаемых элементов (по умолчанию 10)after(необязательно) - Курсор для прямой пагинацииbefore(необязательно) - Курсор для обратной пагинацииlast(необязательно) — количество возвращаемых элементов перед курсором «before» (по умолчанию: 10)
Параметры фильтрации:
analyzerIn(необязательно) — фильтрация запусков определенных анализаторов (например, ["python", "javascript"])
run: Получить определенный анализ, запущенный по его runUid или commitOidПараметры:
runIdentifier(обязательно) — runUid (UUID) или commitOid (хэш коммита) для идентификации запуска
recent_run_issues: получение проблем из последнего анализа, выполненного в определенной ветке, с поддержкой постраничного просмотраПараметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.branchName(обязательно) — имя ветки, из которой необходимо получить последний запуск.Параметры пагинации:
first(необязательно) — количество возвращаемых вопросов (по умолчанию 10)after(необязательно) - Курсор для прямой пагинацииlast(необязательно) — количество возвращаемых проблем перед курсором (по умолчанию: 10)before(необязательно) - Курсор для обратной пагинации
Возврат:
Информация о последнем прогоне на ветке
Текущие проблемы в проекте (примечание: проблемы касаются уровня репозитория, а не конкретного запуска)
Информация о пагинации, включая курсоры и статус страницы
Метаданные о запуске и ветвлении
dependency_vulnerabilities: получение уязвимостей зависимостей из проекта DeepSourceПараметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.Параметры пагинации:
offset(необязательно) — количество элементов, которые необходимо пропустить при разбивке на страницы.first(необязательно) — количество возвращаемых элементов (по умолчанию 10)after(необязательно) - Курсор для прямой пагинацииbefore(необязательно) - Курсор для обратной пагинацииlast(необязательно) — количество возвращаемых элементов перед курсором «before» (по умолчанию: 10)
quality_metrics: получение показателей качества из проекта DeepSource с помощью фильтрацииПараметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.shortcodeIn(необязательно) — фильтрация показателей по определенным коротким кодам (например, ["LCV", "BCV"])
Возвращает такие показатели, как:
Линейное покрытие (LCV)
Покрытие филиалов (BCV)
Покрытие документации (DCV)
Процент дублирующегося кода (DDP)
Каждая метрика включает текущие значения, пороговые значения и статус «пройдено/не пройдено».
update_metric_threshold: обновить пороговое значение для определенной метрики качестваПараметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.repositoryId(обязательно) — идентификатор репозитория GraphQLmetricShortcode(обязательно) — короткий код метрики для обновления.metricKey(обязательно) — ключ языка или контекста для метрики.thresholdValue(необязательно) — новое пороговое значение или null для удаления порога.
Пример: Установить порог покрытия линии 80%: metricShortcode="LCV", metricKey="AGGREGATE", thresholdValue=80
update_metric_setting: Обновить настройки для метрики качестваПараметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.repositoryId(обязательно) — идентификатор репозитория GraphQLmetricShortcode(обязательно) — короткий код метрики для обновления.isReported(обязательно) — следует ли сообщать метрикуisThresholdEnforced(обязательно) — следует ли принудительно применять пороговое значение (может не пройти проверку)
compliance_report: получение отчетов о соответствии требованиям безопасности из проекта DeepSource
Параметры:
projectKey(обязательно) — уникальный идентификатор проекта DeepSource.reportType(обязательно) — тип отчета о соответствии, который необходимо получить ( OWASP Top 10 , SANS Top 25 или MISRA-C )
Возвращает комплексные данные о соответствии требованиям безопасности, включая:
Статистика проблем безопасности по категориям и серьезности
Статус соответствия (пройдено/не пройдено)
Данные о тенденциях, показывающие изменения с течением времени
Анализ и рекомендации по улучшению состояния безопасности
Разработка
Клонируйте репозиторий:
git clone https://github.com/sapientpants/deepsource-mcp-server.git
cd deepsource-mcp-serverУстановить зависимости:
pnpm installСоздайте проект:
pnpm run buildНастроить рабочий стол Клода
{
"mcpServers": {
"deepsource": {
"command": "node",
"args": [
"/path/to/deepsource-mcp-server/dist/index.js"
],
"env": {
"DEEPSOURCE_API_KEY": "your-deepsource-api-key"
}
}
}
}Предпосылки
Node.js 20 или выше
pnpm 10.7.0 или выше
Docker (для сборки контейнеров)
Скрипты
pnpm run build— сборка кода TypeScriptpnpm run start- Запустить серверpnpm run dev- Запустить сервер в режиме разработкиpnpm run test- Запустить тестыpnpm run lint- Запустить ESLintpnpm run format- Форматирование кода с помощью Prettier
Поиск неисправностей
Включить отладочное ведение журнала
Если у вас возникли проблемы, включите ведение журнала отладки, чтобы увидеть подробную информацию:
Установите переменную среды
LOG_FILEна путь к файлу, куда должны записываться журналы.Установите
LOG_LEVELнаDEBUG(это значение по умолчанию)Проверьте файл журнала для получения подробной информации об ошибке.
Пример конфигурации:
{
"mcpServers": {
"deepsource": {
"command": "npx",
"args": ["-y", "deepsource-mcp-server@1.1.0"],
"env": {
"DEEPSOURCE_API_KEY": "your-api-key",
"LOG_FILE": "/tmp/deepsource-mcp.log",
"LOG_LEVEL": "DEBUG"
}
}
}
}Затем проверьте файл журнала:
tail -f /tmp/deepsource-mcp.logОбщие проблемы
Ошибка аутентификации : убедитесь, что ваш
DEEPSOURCE_API_KEYправильный и имеет необходимые разрешения.Журналы не отображаются : убедитесь, что путь
LOG_FILEдоступен для записи и родительский каталог существует.Ошибки инструмента : проверьте файл журнала на наличие подробных сообщений об ошибках и трассировок стека.
Лицензия
Массачусетский технологический институт