Skip to main content
Glama
glassity

FOCUS MCP Server

by glassity

Servidor FOCUS MCP

Pregunta a tu asistente de IA cuánto cuesta realmente tu nube. Este servidor MCP (Model Context Protocol) conecta Claude, o cualquier otro cliente MCP, a tus datos de facturación FOCUS, de modo que preguntas como estas se convierten en indicaciones de una sola línea en lugar de SQL escrito a mano:

  • "¿Cuáles son mis servicios de mayor coste por región este mes?"

  • "Muéstrame las tendencias de utilización de descuentos por compromiso."

  • "¿Qué cuentas tienen patrones de gasto inusuales?"

  • "Explica la diferencia entre BilledCost y EffectiveCost."

En segundo plano, DuckDB consulta tus exportaciones Parquet directamente, ya estén en disco local, S3 o GCS. No hay que montar un almacén de datos. El servidor incluye 254 consultas seleccionadas del catálogo oficial de casos de uso de FOCUS, como una colección separada por versión de la especificación (36 para v1.0, 41 para v1.1, 53 para v1.2, 58 para v1.3, 66 para v1.4), y cada consulta cita la página de la que procede.

¿Qué es FOCUS?

FOCUS (FinOps Open Cost & Usage Specification) es el estándar abierto para los datos de facturación de la nube. AWS, Microsoft y Google Cloud lo exportan de forma nativa, de modo que un único esquema y un único conjunto de consultas funcionan en todos los proveedores.

Related MCP server: MCP Cloud Services Server

Inicio rápido

1. Obtén datos FOCUS

Cada proveedor tiene una ruta de exportación oficial:

El servidor lee Parquet con particionado Hive:

/path/to/your/focus/data/
├── billing_period=2025-05/
│   ├── file1.parquet
│   └── file2.parquet
├── billing_period=2025-06/
│   └── ...

2. Ejecuta el servidor

La vía más rápida no necesita contenedor. uvx descarga y ejecuta el paquete publicado en un solo paso:

claude mcp add focus -e FOCUS_DATA_LOCATION=/path/to/your/focus/data -- uvx focus-mcp

Para Claude Desktop, añade esto a claude_desktop_config.json:

{
  "mcpServers": {
    "focus": {
      "command": "uvx",
      "args": ["focus-mcp"],
      "env": {
        "FOCUS_DATA_LOCATION": "/path/to/your/focus/data",
        "FOCUS_VERSION": "1.0"
      }
    }
  }
}

Leer GCS con Application Default Credentials requiere el extra gcs, que uvx instala cuando lo nombras:

claude mcp add focus -e FOCUS_DATA_LOCATION=gs://your-bucket/focus \
  -- uvx --from 'focus-mcp[gcs]' focus-mcp

Docker sigue disponible y es la mejor opción cuando quieres una imagen fijada y atestiguada:

Las imágenes se publican en Docker Hub y GitHub Container Registry en cada lanzamiento:

docker pull glassity/focus-mcp:latest          # Docker Hub
docker pull ghcr.io/glassity/focus-mcp:latest  # GHCR

Para Claude Code, un solo comando:

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

Para Claude Desktop, añade esto a 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"
      ]
    }
  }
}

Para datos en S3 o GCS, elimina el montaje de volumen y apunta FOCUS_DATA_LOCATION al bucket. Consulta Ubicaciones de datos para las opciones de credenciales.

3. Haz una pregunta

Inicia tu cliente y prueba:

Show me what FOCUS data is loaded.

El asistente llama a get_data_info e informa de recuentos de filas, rangos de fechas y proveedores. A partir de ahí, pregunta en lenguaje natural:

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?

Herramientas

Ocho herramientas, en dos grupos.

Datos y consultas:

Herramienta

Qué hace

get_data_info

Inspecciona los datos cargados: recuentos de filas, rangos de fechas, proveedores

list_use_cases

Explora las consultas de análisis predefinidas para tu versión de FOCUS

get_use_case

Una consulta en detalle: SQL, parámetros, cita a la especificación

execute_query

Ejecuta una consulta predefinida o SQL personalizado contra tus datos

Esquema y especificación:

Herramienta

Qué hace

list_columns

Todas las columnas FOCUS con tipo y nivel de requisito

get_column_details

Definición completa de una columna

list_attributes

Estándares y convenciones de formato de FOCUS

get_attribute_details

Requisitos completos de un atributo

Las herramientas de esquema responden desde la propia especificación FOCUS, de modo que el asistente puede explicar qué significa una columna además de consultarla.

Biblioteca de consultas

Cada consulta se extrae del catálogo oficial de casos de uso de FOCUS y lleva una cita a su página de origen:

  • FOCUS v1.0: 36 consultas

  • FOCUS v1.1: 41 consultas

  • FOCUS v1.2: 53 consultas

  • FOCUS v1.3: 58 consultas

  • FOCUS v1.4: 66 consultas

La cobertura incluye asignación de costes, seguimiento de descuentos por compromiso, detección de anomalías, conciliación de presupuestos y comparación entre proveedores. FOCUS_VERSION selecciona qué conjunto está activo; hazlo coincidir con lo que exporta tu proveedor. La especificación va por delante de las exportaciones — AWS Data Exports entrega actualmente FOCUS 1.0 y 1.2 —, así que las colecciones 1.3 y 1.4 están listas para el día en que un proveedor las publique.

Ubicaciones de datos

Archivos locales

export FOCUS_DATA_LOCATION="/path/to/your/focus/data"

Una copia descargada de una exportación de AWS Data Exports (aws s3 sync, un volumen montado) se carga a través de los manifiestos con los que se copió, exactamente igual que el propio bucket — consulta más abajo.

Amazon S3

export FOCUS_DATA_LOCATION="s3://your-bucket/focus-exports"
export AWS_REGION="us-west-2"        # defaults to us-east-1

Apunta la ubicación a la raíz de la exportación, el prefijo que contiene tanto data/ como metadata/. AWS Data Exports lista cada archivo de su última entrega en un manifiesto por período de facturación bajo metadata/, y el servidor carga esos archivos cuando los manifiestos están presentes: los fragmentos sustituidos y los períodos reentregados que quedan en el prefijo se ignoran en lugar de contarse dos veces. Las ubicaciones sin manifiestos — una exportación de BigQuery, un directorio de archivos Parquet — se leen haciendo globbing de todos los archivos Parquet que contienen. get_data_info informa de cuál de los dos métodos se usó, y la lista de archivos se actualiza cada pocos minutos para que las nuevas entregas no requieran reinicio.

La autenticación usa la cadena de credenciales estándar de AWS, en este orden: rol de IAM (automático en EC2/ECS/Lambda), variables de entorno AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY, AWS_PROFILE y luego ~/.aws/credentials.

export AWS_PROFILE="billing-reader"   # use a specific profile

Algunos buckets almacenan claves con una barra inicial; si el listado falla, prueba con doble barra después del nombre del bucket: s3://tu-bucket//focus/path.

Cuando se ejecuta en Docker, pasa las credenciales como variables -e o monta el perfil en modo solo lectura:

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 (exportación FOCUS de GCS + BigQuery)

Google Cloud exporta la facturación de forma nativa en formato FOCUS: Billing → Billing export → FOCUS usage cost (Vista previa) escribe una tabla FOCUS en BigQuery. Expórtala a Parquet en un bucket de 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`;

Programa esa sentencia como una consulta programada de BigQuery para mantener el bucket actualizado; esto también archiva tus datos más allá del TTL de 2 años de la exportación FOCUS. Luego:

export FOCUS_DATA_LOCATION="gs://your-bucket/focus-export"

La autenticación se intenta en este orden:

  1. Claves HMAC: establece GCS_HMAC_KEY_ID y GCS_HMAC_SECRET (créalas con gcloud storage hmac create <service-account-email>). Esta vía usa el soporte nativo de GCS de DuckDB a través de la API de interoperabilidad con S3 y no necesita dependencias adicionales.

  2. Application Default Credentials: incluidas en la imagen de Docker; desde un checkout del código fuente, instala el extra con uv sync --extra gcs. Luego autentícate como lo haces normalmente: gcloud auth application-default login, un JSON de cuenta de servicio mediante GOOGLE_APPLICATION_CREDENTIALS, o identidad de carga de trabajo en GCE/GKE.

  3. Sin credenciales: solo buckets públicos.

Existen dos métodos porque el soporte GCS integrado de DuckDB solo habla HMAC; ADC proviene de la dependencia opcional gcsfs. Las credenciales solo se leen dentro del proceso del servidor y nunca se exponen a los clientes MCP.

Configuración

Variable

Valor por defecto

Descripción

FOCUS_DATA_LOCATION

data/focus-export

Dónde vive el Parquet: una ruta local, s3://… o gs://…

FOCUS_VERSION

1.0

Versión de la especificación FOCUS: 1.0, 1.1, 1.2, 1.3 o 1.4. Selecciona qué colección de consultas se carga

AWS_REGION

us-east-1

Región para el acceso a S3

AWS_PROFILE

(sin definir)

Perfil de AWS para la autenticación en S3

AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY

(sin definir)

Credenciales estáticas de AWS, si no se usa un rol o perfil

GCS_HMAC_KEY_ID / GCS_HMAC_SECRET

(sin definir)

Credenciales HMAC para GCS

GOOGLE_APPLICATION_CREDENTIALS

(sin definir)

JSON de cuenta de servicio para GCS mediante ADC

Desarrollo

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

Apunta un cliente al checkout del código fuente en lugar de a la imagen de 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"
      }
    }
  }
}

Compila y ejecuta tu propia imagen:

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

Consulta CONTRIBUTING.md para conocer las convenciones y comprobaciones antes de abrir una solicitud de extracción.

Hoja de ruta

  • Sincronización automatizada de consultas desde la especificación FOCUS, para que las nuevas páginas de casos de uso lleguen aquí sin extracción manual

  • Formato de respuesta más rico: citas y contexto educativo integrados en los resultados de las consultas

  • Validación de cada consulta de caso de uso contra exportaciones reales de proveedores (AWS publica FOCUS 1.0 y 1.2 hoy; 1.3+ a medida que los proveedores las adopten)

  • Evaluar el traslado de las definiciones de columnas y atributos a recursos MCP

  • Mostrar notas de brechas de conformidad de la especificación en las respuestas de las herramientas

Seguridad

Notifica las vulnerabilidades a la dirección de SECURITY.md, no al rastreador de incidencias. Conoce el modelo de confianza: execute_query ejecuta SQL que escribe el asistente de IA, dentro del proceso del servidor. Tus archivos Parquet son una fuente de consulta, no una base de datos escribible, y todos los ejemplos de aquí los montan con :ro; mantén eso. Ejecuta la imagen de Docker en lugar de un proceso desnudo si quieres un límite estricto, y dale al servidor solo las credenciales de almacenamiento de objetos que necesita, con ámbito limitado al bucket de facturación.

Licencia

Apache-2.0. Copyright Glassity. Ver LICENCIA.


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