FastMCP SonarQube Metrics
Метрики SonarQube для FastMCP

Обзор
Этот проект предоставляет набор инструментов для получения информации о проектах SonarQube с использованием фреймворка FastMCP (Fast Model Context Protocol). Он служит интерфейсом к SonarQube, позволяя пользователям программно получать доступ к метрикам, историческим данным и метрикам дерева компонентов для указанных проектов. Такой автоматизированный доступ позволяет создавать отчеты, проводить анализ и интегрировать данные SonarQube с другими системами.
Проект выделяется тем, что предлагает упрощенный подход на основе сообщений для взаимодействия с API SonarQube, абстрагируясь от сложностей прямых вызовов API и обработки данных. Он предназначен для разработчиков, DevOps-инженеров и аналитиков, которым необходимо включить данные SonarQube в свои рабочие процессы или создать собственные решения для отчетности.
В этом репозитории содержатся клиентские и серверные компоненты, которые облегчают обмен данными и их получение. Сервер предоставляет инструменты для извлечения данных из SonarQube, а клиент предоставляет интерфейс командной строки для вызова этих инструментов и отображения результатов. Каждый внутренний модуль способствует достижению этой цели, инкапсулируя определенные функциональные возможности, такие как взаимодействие с API, обработка данных и связь между клиентом и сервером.
Клиент, включенный в проект, предназначен только для тестирования работы кода; мы рекомендуем использовать Claude Desktop или разработать собственный клиент.
ПОМНИТЕ, ЭТОТ РЕПОЗИТОРИЙ НАХОДИТСЯ В СТАДИИ РАЗРАБОТКИ, НЕКОТОРЫЕ ФУНКЦИИ МОГУТ РАБОТАТЬ НЕИДЕАЛЬНО.
Related MCP server: SonarQube MCP Server
Развертывание
Развернутая версия доступна на Fronteir AI.
Поддерживаемые инструменты MCP
get_status: Выполняет проверку работоспособности настроенного экземпляра SonarQube.create_sonarqube_project: Создает новый проект SonarQube. Требуются права администратора.delete_sonarqube_project: Удаляет проект SonarQube. Требуются права администратора. ИСПОЛЬЗУЙТЕ С ОСТОРОЖНОСТЬЮ!list_projects: Выводит список всех доступных проектов SonarQube, при необходимости с фильтрацией по имени или ключу.get_sonarqube_metrics: Получает указанные метрики (ошибки, уязвимости, запахи кода, покрытие, плотность дублирования) для заданного ключа проекта SonarQube.get_sonarqube_metrics_history: Получает исторические метрики (ошибки, уязвимости, запахи кода, покрытие, плотность дублирования) для заданного проекта SonarQube с использованием /api/measures/search_history. Можно применить дополнительные фильтры по дате.get_sonarqube_component_tree_metrics: Получает значения метрик для всех компонентов (например, файлов или каталогов) в проекте с использованием /api/measures/component_tree. Автоматически обрабатывает пагинацию для получения всех результатов.get_project_issues: Получает проблемы SonarQube для заданного проекта, при необходимости с фильтрацией по типу, серьезности и статусу решения. Возвращает до limit результатов (по умолчанию: 10).
Технологический стек
Язык: Python
Фреймворки: FastMCP
Библиотеки: httpx, pydantic, dotenv, asyncio, json, pathlib, typing, base64
Инструменты: SonarQube API
Структура каталогов
├── client_test.py - Client application for testing and interacting with the server.
├── server.py - Server application exposing tools to retrieve SonarQube metrics.
├── client_tool.py - Client with a graphical interface to interact with the SonarQube server.
├── client_langchain.py - Command-line client to interact with the FastMCP server and SonarQube tools via LangChain
├── .env - Environment configuration file (stores SonarQube URL and token).
└── README.md - Project documentation.Начало работы
Предварительные требования
Python 3.7+
Экземпляр SonarQube с доступом к API
Токен API SonarQube с соответствующими разрешениями
Установленный FastMCP (
pip install fastmcp)Установленный httpx (
pip install httpx)Установленный pydantic (
pip install pydantic)Установленный python-dotenv (
pip install python-dotenv)
Общие шаги сборки
Клонируйте репозиторий:
git clone <repository_url>Перейдите в каталог проекта:
cd fastmcp-sonarqube-metricsНастройте переменные окружения: Создайте файл
.envв корневом каталоге проекта со следующим содержимым:SONARQUBE_URL=<your_sonarqube_url> SONARQUBE_TOKEN=<your_sonarqube_token> TRANSPORT=<stdio or sse> GEMINI_API_KEY=<your-gemini-api_key> GEMINI_MODEL=<your-gemini-model> (Optional)Схема такая же для OpenAI и Groq, если вы хотите использовать AzureOpenAI:
SONARQUBE_URL=<your_sonarqube_url> SONARQUBE_TOKEN=<your_sonarqube_token> TRANSPORT=<stdio or sse> AZURE_OPENAI_API_KEY=<your-azureopenai-api_key> AZURE_OPENAI_ENDPOINT=<your-azureopenai-endpoint> AZURE_DEPLOYMENT=<your-azureopenai-deployment> AZURE_API_VERSION=<your-azureopenai-api_version>Замените
<your_sonarqube_url>на URL вашего экземпляра SonarQube (например,http://localhost:9000) и<your_sonarqube_token>на ваш токен API SonarQube.Запустите сервер:
python server.pyЗапустите клиент:
python client_test.py(Опционально, только для теста)Подключитесь к клиенту: следуйте официальной документации
Использование модулей
Сервер (server.py)
Модуль server.py определяет сервер FastMCP, который предоставляет инструменты для получения метрик SonarQube. Он инициализирует сервер, загружает переменные окружения, определяет доступные инструменты и обрабатывает связь с API SonarQube. Чтобы использовать сервер, необходимо установить переменные окружения SONARQUBE_URL и SONARQUBE_TOKEN. Сервер запускается путем прямого выполнения скрипта server.py.
Клиент (client_test.py)
Модуль client_test.py определяет клиент FastMCP, который взаимодействует с сервером. Он запрашивает у пользователя ключ проекта SonarQube, подключается к серверу, вызывает инструменты get_sonarqube_metrics и get_sonarqube_component_tree_metrics и отображает результаты. Чтобы использовать клиент, необходимо запустить скрипт client_test.py напрямую, ввести действительный ключ проекта SonarQube при появлении запроса и установить тип транспорта в файле .env на stdio.
Client_tool (client_tool.py)
Модуль client_tool.py реализует клиент FastMCP с графическим интерфейсом на базе Tkinter для взаимодействия с сервером SonarQube. При запуске он настраивает логгеры для подавления несущественных сообщений, загружает переменные окружения и запускает бэкенд чата (ChatBackend) в фоновом режиме, который использует LLM и инструменты MCP, предоставляемые сервером через stdio. Фронтенд (ChatGUI) управляет окном Tkinter, отображает историю сообщений в прокручиваемой области и позволяет пользователю отправлять команды на сервер, запрашивая действительный ключ проекта SonarQube при необходимости. Чтобы использовать клиент, просто запустите скрипт client_tool.py и взаимодействуйте через графический интерфейс.
Client_langchain (client_langchain.py)
Модуль client_langchain.py предоставляет клиент командной строки для взаимодействия с сервером FastMCP и инструментами SonarQube через LangChain. При запуске он загружает переменные окружения и настраивает выбранную LLM. Он устанавливает соединение stdio с сервером (server.py), инициализирует сессию MCP и загружает доступные инструменты (проверка работоспособности, текущие и исторические метрики, список проектов, получение проблем). Подробный системный промпт описывает каждый инструмент и его параметры. В интерактивном цикле он считывает ввод пользователя из консоли, обновляет историю сообщений, вызывает агента React и выводит отформатированный ответ.
Пример: Интеграция инструмента get_sonarqube_metrics во внешний проект
Чтобы использовать инструмент get_sonarqube_metrics во внешнем проекте, вы можете создать клиент, который подключается к серверу FastMCP и вызывает инструмент. Вот базовый пример:
import asyncio
from fastmcp import Client
from fastmcp.types import TextContent
async def get_metrics(project_key: str):
server_path = "server.py" # Adjust if necessary
client = Client(server_path)
try:
async with client:
result = await client.call_tool(
"get_sonarqube_metrics", {"project_key": project_key}
)
if result:
content = result[0]
if isinstance(content, TextContent):
metrics = json.loads(content.text)
print(metrics)
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
asyncio.run(get_metrics("your-project-key")) # Replace with your project keyЭтот пример демонстрирует, как создать клиент, подключиться к серверу, вызвать инструмент get_sonarqube_metrics с ключом проекта и обработать результаты. Вам нужно будет адаптировать переменную server_path к фактическому расположению скрипта server.py в вашей среде.
Чат ArchAI-SonarQube (GUI)
Легковесный клиент Tkinter, который подключается через stdio к серверу FastMCP и предоставляет чат-интерфейс в реальном времени для запроса метрик SonarQube, просмотра деревьев компонентов и выполнения проверок работоспособности с помощью помощника на базе LLM.

Использование с TRANSPORT=SSE
Вы можете переключить транспортный уровень клиента на Server-Sent Events (SSE), установив переменную окружения TRANSPORT перед запуском графического интерфейса. Это позволяет получать обновления в реальном времени от сервера FastMCP.
Когда сервер запущен в режиме SSE, открывается постоянное HTTP-соединение на порту 8001. Это позволяет подключаться через совместимые интерфейсы, такие как MCP Inspector.
Запустите сервер в режиме SSE
uv run mcp dev "<server_name>"Откройте MCP Inspector Будет предоставлена ссылка (например,
http://127.0.0.1:6274) для запуска MCP Inspector в вашем браузере.Настройте SSE в MCP Inspector
Выберите SSE в качестве типа транспорта
Введите URL:
http://localhost:8001/sse
Инициируйте соединение
Просмотрите доступные инструменты В разделе Tools вы увидите:
get_statusget_sonarqube_metricsget_sonarqube_metrics_historyget_sonarqube_component_tree_metricslist_projectsget_project_issues
Выберите и вызовите инструмент Например, выберите get_project_issues и укажите:
project_key: ключ проекта SonarQubeissue_type(опционально): например,BUG,CODE_SMELLseverity(опционально): например,MAJOR,CRITICALresolved(опционально):trueилиfalselimit(опционально): максимальное количество проблем для возврата
Выполните и получите результаты Сервер вызовет соответствующий API SonarQube и вернет отформатированный JSON-ответ.
Использование с Claude Desktop
Вы можете установить этот сервер непосредственно в Claude Desktop с помощью fastmcp:
Убедитесь, что FastMCP установлен (pip install fastmcp или uv pip install fastmcp).
Настройте Claude for Desktop для любых серверов MCP, которые вы хотите использовать (в Windows через VSCode):
code $env:AppData\Claude\claude_desktop_config.jsonДобавьте свой сервер и сохраните:
{
"mcpServers": {
"fastmcp-sonarqube-metrics": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/fastmcp-sonarqube-metrics",
"run",
"server.py"
]
}
}
}Запустите его:
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/fastmcp-sonarqube-metrics run server.pyПерезапустите Claude Desktop, если он был запущен. Инструмент "FastMCP SonarQube Metrics" теперь должен быть доступен.

Функциональный анализ
1. Основные обязанности системы
Основная обязанность системы — выступать в качестве моста между пользователем и API SonarQube, предоставляя упрощенный способ получения метрик качества проекта. Она инкапсулирует сложности API SonarQube, предлагая набор инструментов, которые можно легко вызывать и интегрировать в автоматизированные рабочие процессы. Основные службы включают получение метрик, извлечение исторических данных и изучение метрик на уровне компонентов в проекте SonarQube. Фундаментальной службой является сервер FastMCP, который управляет определениями инструментов и связью между клиентом и сервером.
2. Проблемы, которые решает система
Система решает проблему программного доступа к данным SonarQube без необходимости прямого взаимодействия пользователей с API SonarQube. Она удовлетворяет потребность в автоматизированной отчетности, анализе и интеграции метрик SonarQube с другими системами. В частности, она упрощает такие задачи, как:
Создание регулярных отчетов по метрикам качества кода.
Мониторинг тенденций качества кода с течением времени.
Выявление проблемных компонентов в проекте.
Интеграция данных SonarQube с другими инструментами разработки.
Архитектура решает эти проблемы, предоставляя набор четко определенных инструментов, которые абстрагируют сложности API SonarQube и обеспечивают согласованный интерфейс для доступа к данным.
3. Взаимодействие модулей и компонентов
Система состоит из двух основных компонентов: клиента и сервера. Клиент инициирует запросы к серверу, указывая инструмент для выполнения и любые входные параметры. Сервер получает запрос, взаимодействует с API SonarQube, обрабатывает данные и отправляет результаты обратно клиенту.
Взаимодействие между клиентом и сервером облегчается фреймворком FastMCP, который обрабатывает передачу сообщений и сериализацию. Сервер определяет доступные инструменты с помощью декоратора @mcp.tool(), который регистрирует функции как вызываемые конечные точки. Клиент вызывает эти инструменты с помощью метода client.call_tool(), который отправляет сообщение на сервер с именем инструмента и входными параметрами.
Сервер использует библиотеку httpx для выполнения асинхронных HTTP-запросов к API SonarQube. Он конструирует URL-адреса API и параметры запроса на основе выполняемого инструмента и входных параметров, предоставленных клиентом. Затем сервер анализирует JSON-ответы от API SonarQube и извлекает соответствующие значения метрик.
4. Функциональные возможности для пользователя и системы
Функциональность системы для пользователя — это клиентское приложение (client_test.py), которое предоставляет интерфейс командной строки для вызова инструментов получения метрик SonarQube. Пользователи взаимодействуют с клиентом, предоставляя ключ проекта SonarQube и, при необходимости, другие параметры, такие как диапазоны дат или ключи метрик. Затем клиент отображает полученные метрики в удобном для чтения формате.
Функциональные возможности для системы — это серверные инструменты (get_sonarqube_metrics, get_sonarqube_metrics_history, get_sonarqube_component_tree_metrics), определенные в server.py. Эти инструменты обрабатывают взаимодействие с API SonarQube, обработку данных и форматирование. Они не видны конечным пользователям напрямую, но необходимы для обеспечения основной функциональности системы.
Декоратор @mcp.tool() систематически применяет общее поведение ко всем функциям инструментов, гарантируя их регистрацию на сервере FastMCP и доступность для клиентов. Кроме
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate answers & visualizations from your engineering data to track software development health.
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
MCP server for 500+ pay-per-call web scraping, search, social, business, and financial data tools.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Related MCP Servers
- FlicenseAqualityDmaintenanceA read-only MCP server that provides AI assistants with structured access to SonarQube projects, issues, metrics, and rules. It enables safe analysis of code quality and security findings through a set of validated, safety-first tools.6-
- AlicenseNot gradedqualityDmaintenanceServer for SonarQube Give AI assistants direct access to your code quality, security & analysis data2MIT
- AlicenseAqualityBmaintenanceAn MCP server for SonarQube that enables LLM agents to discover projects, analyze code quality metrics, check Quality Gate status, search issues with filters, and rank projects by worst-performing metrics. It provides read-only, safe access to SonarQube instances with structured outputs and error handling.548 PyPIMIT
- AlicenseBqualityDmaintenanceRead-only MCP server that exposes SonarQube Web API tools for issue retrieval, quality gate status, and source context, enabling coding agents to fix code issues.8164 npm1MIT