FOCUS MCP Server
FOCUS MCP Server
Спросите своего ИИ-ассистента, сколько на самом деле стоят ваши облачные ресурсы. Этот MCP-сервер (Model Context Protocol) подключает Claude или любого другого MCP-клиента к вашим данным о выставлении счетов в формате FOCUS, превращая такие вопросы в однострочные запросы вместо SQL, написанного вручную:
«Какие сервисы обходятся мне дороже всего по регионам в этом месяце?»
«Покажи тенденции использования скидок за обязательства (commitment discount)».
«У каких аккаунтов наблюдаются необычные паттерны расходов?»
«Объясни разницу между BilledCost и EffectiveCost».
Под капотом DuckDB напрямую запрашивает ваши Parquet-экспорты — независимо от того, лежат ли они на локальном диске, в S3 или GCS. Никакого хранилища данных поднимать не нужно. Сервер включает 254 запроса, отобранных из официального каталога вариантов использования FOCUS, в виде отдельной коллекции для каждой версии спецификации (36 для v1.0, 41 для v1.1, 53 для v1.2, 58 для v1.3, 66 для v1.4), и каждый запрос содержит ссылку на страницу, с которой он взят.
Что такое FOCUS?
FOCUS (FinOps Open Cost & Usage Specification) — это открытый стандарт для данных о выставлении счетов в облаке. AWS, Microsoft и Google Cloud экспортируют его нативно, поэтому одна схема и один набор запросов работают у всех провайдеров.
Related MCP server: MCP Cloud Services Server
Быстрый старт
1. Получите данные FOCUS
У каждого провайдера есть официальный путь экспорта:
AWS: руководство по настройке FOCUS для AWS (Data Exports → FOCUS 1.0 или 1.2)
Microsoft Azure: руководство по настройке FOCUS для Microsoft
Google Cloud: руководство по настройке FOCUS для Google Cloud, или см. GCS + BigQuery ниже
Другие провайдеры: все руководства по настройке FOCUS
Сервер читает Parquet с Hive-партиционированием:
/path/to/your/focus/data/
├── billing_period=2025-05/
│ ├── file1.parquet
│ └── file2.parquet
├── billing_period=2025-06/
│ └── ...2. Запустите сервер
Самый быстрый путь не требует контейнера. uvx загружает и запускает опубликованный пакет за один шаг:
claude mcp add focus -e FOCUS_DATA_LOCATION=/path/to/your/focus/data -- uvx focus-mcpДля Claude Desktop добавьте это в claude_desktop_config.json:
{
"mcpServers": {
"focus": {
"command": "uvx",
"args": ["focus-mcp"],
"env": {
"FOCUS_DATA_LOCATION": "/path/to/your/focus/data",
"FOCUS_VERSION": "1.0"
}
}
}
}Для чтения GCS с Application Default Credentials требуется дополнительный пакет gcs, который uvx установит, если его указать:
claude mcp add focus -e FOCUS_DATA_LOCATION=gs://your-bucket/focus \
-- uvx --from 'focus-mcp[gcs]' focus-mcpDocker по-прежнему доступен и лучше подходит, когда нужен закреплённый, аттестованный образ:
Образы публикуются в Docker Hub и GitHub Container Registry при каждом релизе:
docker pull glassity/focus-mcp:latest # Docker Hub
docker pull ghcr.io/glassity/focus-mcp:latest # GHCRДля Claude Code — одна команда:
claude mcp add focus -- docker run -i --rm \
-v /path/to/your/focus/data:/data:ro \
-e FOCUS_DATA_LOCATION=/data \
glassity/focus-mcp:latestДля Claude Desktop добавьте это в claude_desktop_config.json:
{
"mcpServers": {
"focus": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/path/to/your/focus/data:/data:ro",
"-e", "FOCUS_DATA_LOCATION=/data",
"-e", "FOCUS_VERSION=1.0",
"glassity/focus-mcp:latest"
]
}
}
}Для данных в S3 или GCS уберите монтирование тома и укажите FOCUS_DATA_LOCATION на бакет. Варианты аутентификации см. в разделе Расположение данных.
3. Задайте вопрос
Запустите клиент и попробуйте:
Show me what FOCUS data is loaded.Ассистент вызовет get_data_info и сообщит количество строк, диапазоны дат и провайдеров. Дальше спрашивайте на обычном языке:
Run the service costs by region analysis for the last 3 months.
Show me the top 10 most expensive services across all accounts.
Find unused capacity reservations I can optimize.
Compare costs across providers and regions.
What columns are available in FOCUS v1.4?Инструменты
Восемь инструментов в двух группах.
Данные и запросы:
Инструмент | Что делает |
| Проверяет загруженные данные: количество строк, диапазоны дат, провайдеры |
| Просмотр предопределённых аналитических запросов для вашей версии FOCUS |
| Один запрос подробно: SQL, параметры, ссылка на спецификацию |
| Выполняет предопределённый запрос или произвольный SQL по вашим данным |
Схема и спецификация:
Инструмент | Что делает |
| Все колонки FOCUS с типом и уровнем обязательности |
| Полное определение одной колонки |
| Стандарты и соглашения форматирования FOCUS |
| Полные требования к одному атрибуту |
Инструменты схемы отвечают на основе самой спецификации FOCUS, поэтому ассистент может как объяснить, что означает колонка, так и выполнить по ней запрос.
Библиотека запросов
Каждый запрос извлечён из официального каталога вариантов использования FOCUS и содержит ссылку на исходную страницу:
FOCUS v1.0: 36 запросов
FOCUS v1.1: 41 запрос
FOCUS v1.2: 53 запроса
FOCUS v1.3: 58 запросов
FOCUS v1.4: 66 запросов
Покрытие включает распределение затрат, отслеживание скидок за обязательства, обнаружение аномалий, сверку бюджета и сравнение провайдеров. FOCUS_VERSION выбирает, какой набор активен; сопоставьте его с тем, что экспортирует ваш провайдер. Спецификация опережает экспорты — AWS Data Exports в настоящее время поставляет FOCUS 1.0 и 1.2 — поэтому коллекции 1.3 и 1.4 готовы к тому дню, когда провайдеры начнут их выпускать.
Расположение данных
Локальные файлы
export FOCUS_DATA_LOCATION="/path/to/your/focus/data"Скачанная копия AWS Data Export (aws s3 sync, смонтированный том) загружается через манифесты, с которыми она была скопирована, точно так же, как загружался бы сам бакет — см. ниже.
Amazon S3
export FOCUS_DATA_LOCATION="s3://your-bucket/focus-exports"
export AWS_REGION="us-west-2" # defaults to us-east-1Укажите расположение на корень экспорта — префикс, содержащий и data/, и metadata/. AWS Data Exports перечисляет все файлы последней поставки в манифесте за каждый расчётный период в metadata/, и сервер загружает эти файлы, когда манифесты на месте: заменённые чанки и повторно доставленные периоды, оставшиеся на префиксе, игнорируются, чтобы не было двойного подсчёта. Расположения без манифестов — экспорт BigQuery, каталог Parquet-файлов — читаются по глобу всех Parquet-файлов внутри них. get_data_info сообщает, какой из двух способов использовался, а список файлов обновляется каждые несколько минут, так что новые поставки не требуют перезапуска.
Аутентификация использует стандартную цепочку учётных данных AWS, по порядку: роль IAM (автоматически на EC2/ECS/Lambda), переменные окружения AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY, AWS_PROFILE, затем ~/.aws/credentials.
export AWS_PROFILE="billing-reader" # use a specific profileВ некоторых бакетах ключи хранятся с ведущим слэшем; если листинг не работает, попробуйте двойной слэш после имени бакета: s3://your-bucket//focus/path.
При запуске в Docker передавайте учётные данные как переменные -e или монтируйте профиль в режиме только для чтения:
docker run -i --rm \
-v "$HOME/.aws:/home/mcp/.aws:ro" \
-e FOCUS_DATA_LOCATION="s3://your-bucket/focus-exports" \
-e AWS_REGION="us-west-2" \
-e AWS_PROFILE="billing-reader" \
glassity/focus-mcp:latestGoogle Cloud (экспорт FOCUS через GCS + BigQuery)
Google Cloud экспортирует данные о выставлении счетов нативно в формате FOCUS: Billing → Billing export → FOCUS usage cost (Preview) записывает таблицу FOCUS в BigQuery. Экспортируйте её в Parquet в бакет GCS:
EXPORT DATA OPTIONS (
uri = 'gs://your-bucket/focus-export/*.parquet',
format = 'PARQUET',
overwrite = true
) AS
SELECT * FROM `your-project.your_focus_dataset.your_focus_table`;Запланируйте этот оператор как запланированный запрос BigQuery, чтобы бакет оставался свежим; это также архивирует ваши данные за пределами 2-летнего TTL экспорта FOCUS. Затем:
export FOCUS_DATA_LOCATION="gs://your-bucket/focus-export"Аутентификация пробуется в таком порядке:
Ключи HMAC: задайте
GCS_HMAC_KEY_IDиGCS_HMAC_SECRET(создаются командойgcloud storage hmac create <service-account-email>). Этот путь использует встроенную поддержку GCS в DuckDB через API совместимости с S3 и не требует дополнительных зависимостей.Application Default Credentials: включены в Docker-образ; из исходников установите дополнительный пакет командой
uv sync --extra gcs. Затем аутентифицируйтесь как обычно:gcloud auth application-default login, JSON-файл сервисного аккаунта черезGOOGLE_APPLICATION_CREDENTIALSили workload identity на GCE/GKE.Без учётных данных: только публичные бакеты.
Два метода существуют потому, что встроенная поддержка GCS в DuckDB работает только с HMAC; ADC обеспечивается опциональной зависимостью gcsfs. Учётные данные читаются только внутри процесса сервера и никогда не раскрываются MCP-клиентам.
Конфигурация
Переменная | По умолчанию | Описание |
|
| Где лежит Parquet: локальный путь, |
|
| Версия спецификации FOCUS: |
|
| Регион для доступа к S3 |
| (не задан) | Профиль AWS для аутентификации в S3 |
| (не задан) | Статические учётные данные AWS, если не используется роль или профиль |
| (не задан) | Учётные данные HMAC для GCS |
| (не задан) | JSON сервисного аккаунта для GCS через ADC |
Разработка
git clone https://github.com/glassity/focus-mcp.git
cd focus-mcp
uv sync # install, including dev tools
uv sync --extra gcs # + GCS ADC support
export FOCUS_DATA_LOCATION="/path/to/your/focus/data"
uv run focus-mcpУкажите клиенту на исходники вместо Docker-образа:
{
"mcpServers": {
"focus": {
"command": "uv",
"args": ["run", "--directory", "/path/to/focus-mcp", "focus-mcp"],
"env": {
"FOCUS_DATA_LOCATION": "/path/to/your/focus/data",
"FOCUS_VERSION": "1.0"
}
}
}
}Соберите и запустите собственный образ:
docker build -t focus-mcp:custom .
docker run -i --rm \
-v "/path/to/your/focus/data:/data:ro" \
-e FOCUS_DATA_LOCATION=/data \
focus-mcp:customСм. CONTRIBUTING.md о правилах и проверках перед открытием pull request.
Дорожная карта
Автоматическая синхронизация запросов из спецификации FOCUS, чтобы новые страницы вариантов использования попадали сюда без ручного извлечения
Более богатое форматирование ответов: ссылки и обучающий контекст прямо в результатах запросов
Проверка каждого запроса варианта использования на реальных экспортах провайдеров (AWS поставляет FOCUS 1.0 и 1.2 сегодня; 1.3+ — по мере внедрения провайдерами)
Оценка переноса определений колонок и атрибутов в ресурсы MCP
Отображение примечаний о несоответствиях из спецификации в ответах инструментов
Безопасность
Сообщайте об уязвимостях по адресу из SECURITY.md, а не в трекер задач. Понимайте модель доверия: execute_query выполняет SQL, который пишет ИИ-ассистент, внутри процесса сервера. Ваши Parquet-файлы — это источник запросов, а не записываемая база данных, и каждый пример здесь монтирует их с флагом :ro; сохраняйте это. Запускайте Docker-образ, а не голый процесс, если нужна жёсткая граница, и давайте серверу только те учётные данные объектного хранилища, которые ему нужны, с доступом только к бакету с биллингом.
Лицензия
Apache-2.0. Авторское право Glassity. См. LICENSE.
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.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables cost optimization and financial operations for Google BigQuery through natural language interactions. Provides insights into BigQuery spending, usage patterns, and cost management recommendations.
- AlicenseCqualityDmaintenanceEnables AI assistants to manage multi-cloud resources (AWS, Azure, GCP) including resource operations, cost analysis, monitoring metrics, and security compliance checks through natural language commands.26102MIT
- AlicenseBqualityDmaintenanceProvides a comprehensive suite of 76 tools for AWS cloud resource optimization, cost management, and infrastructure monitoring. It enables users to identify unused resources, analyze cost trends, right-size capacity, and maintain security compliance through natural language.76MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language analysis of AWS costs, automated FinOps waste audits, and budget monitoring across multiple profiles and regions while keeping credentials secure locally.181MIT
Related MCP Connectors
Verified cloud cost forecasting for AI agents. AWS, GCP, Azure pricing matrix.
Verified cloud cost forecasting for AI agents. AWS, GCP, Azure pricing matrix.
Ask AI about your ads — query Meta, TikTok, and Google Ads performance in natural language.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/glassity/focus-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server