Skip to main content
Glama
glassity

FOCUS MCP Server

by glassity

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

У каждого провайдера есть официальный путь экспорта:

Сервер читает 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-mcp

Docker по-прежнему доступен и лучше подходит, когда нужен закреплённый, аттестованный образ:

Образы публикуются в 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?

Инструменты

Восемь инструментов в двух группах.

Данные и запросы:

Инструмент

Что делает

get_data_info

Проверяет загруженные данные: количество строк, диапазоны дат, провайдеры

list_use_cases

Просмотр предопределённых аналитических запросов для вашей версии FOCUS

get_use_case

Один запрос подробно: SQL, параметры, ссылка на спецификацию

execute_query

Выполняет предопределённый запрос или произвольный SQL по вашим данным

Схема и спецификация:

Инструмент

Что делает

list_columns

Все колонки FOCUS с типом и уровнем обязательности

get_column_details

Полное определение одной колонки

list_attributes

Стандарты и соглашения форматирования FOCUS

get_attribute_details

Полные требования к одному атрибуту

Инструменты схемы отвечают на основе самой спецификации 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:latest

Google 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"

Аутентификация пробуется в таком порядке:

  1. Ключи HMAC: задайте GCS_HMAC_KEY_ID и GCS_HMAC_SECRET (создаются командой gcloud storage hmac create <service-account-email>). Этот путь использует встроенную поддержку GCS в DuckDB через API совместимости с S3 и не требует дополнительных зависимостей.

  2. Application Default Credentials: включены в Docker-образ; из исходников установите дополнительный пакет командой uv sync --extra gcs. Затем аутентифицируйтесь как обычно: gcloud auth application-default login, JSON-файл сервисного аккаунта через GOOGLE_APPLICATION_CREDENTIALS или workload identity на GCE/GKE.

  3. Без учётных данных: только публичные бакеты.

Два метода существуют потому, что встроенная поддержка GCS в DuckDB работает только с HMAC; ADC обеспечивается опциональной зависимостью gcsfs. Учётные данные читаются только внутри процесса сервера и никогда не раскрываются MCP-клиентам.

Конфигурация

Переменная

По умолчанию

Описание

FOCUS_DATA_LOCATION

data/focus-export

Где лежит Parquet: локальный путь, s3://… или gs://…

FOCUS_VERSION

1.0

Версия спецификации FOCUS: 1.0, 1.1, 1.2, 1.3 или 1.4. Выбирает, какая коллекция запросов загружается

AWS_REGION

us-east-1

Регион для доступа к S3

AWS_PROFILE

(не задан)

Профиль AWS для аутентификации в S3

AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY

(не задан)

Статические учётные данные AWS, если не используется роль или профиль

GCS_HMAC_KEY_ID / GCS_HMAC_SECRET

(не задан)

Учётные данные HMAC для GCS

GOOGLE_APPLICATION_CREDENTIALS

(не задан)

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.


A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables cost optimization and financial operations for Google BigQuery through natural language interactions. Provides insights into BigQuery spending, usage patterns, and cost management recommendations.
  • A
    license
    B
    quality
    D
    maintenance
    Provides 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.
    76
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language analysis of AWS costs, automated FinOps waste audits, and budget monitoring across multiple profiles and regions while keeping credentials secure locally.
    181
    MIT

View all related MCP servers

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.

View all MCP Connectors

Appeared in Searches

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/glassity/focus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server