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: MCP QQ Music Test 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ArchAI-Labs/fastmcp-sonarqube-metrics'
If you have feedback or need assistance with the MCP directory API, please join our Discord server