Skip to main content
Glama
glassity

FOCUS MCP Server

by glassity

FOCUS MCP 服务器

让您的 AI 助手告诉您云服务的真实成本。这个 MCP(模型上下文协议)服务器将 Claude 或任何其他 MCP 客户端连接到您的 FOCUS 账单数据,使以下这类问题变成一行提示词,而无需手写 SQL:

  • "本月按区域划分,成本最高的服务是哪些?"

  • "展示承诺折扣利用率趋势。"

  • "哪些账户存在异常消费模式?"

  • "解释 BilledCost 和 EffectiveCost 之间的区别。"

在底层,DuckDB 直接查询您的 Parquet 导出文件,无论它们位于本地磁盘、S3 还是 GCS。无需搭建数据仓库。服务器内置了从官方 FOCUS 用例目录精选的 254 个查询,按规范版本分别打包为独立集合(v1.0 有 36 个,v1.1 有 41 个,v1.2 有 53 个,v1.3 有 58 个,v1.4 有 66 个),每个查询都标注了其来源页面。

什么是 FOCUS?

FOCUS(FinOps 开放成本与用量规范)是云账单数据的开放标准。AWS、Microsoft 和 Google Cloud 均原生导出该格式,因此一套 schema 和一组查询即可跨云厂商使用。

Related MCP server: MCP Cloud Services Server

快速开始

1. 获取 FOCUS 数据

每个云厂商都有官方的导出路径:

服务器读取带 Hive 分区的 Parquet 文件:

/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"
      }
    }
  }
}

使用 Application Default Credentials 读取 GCS 需要 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

Schema 与规范:

工具

功能

list_columns

所有 FOCUS 列及其类型和必需级别

get_column_details

单个列的完整定义

list_attributes

FOCUS 格式标准和约定

get_attribute_details

单个属性的完整要求

Schema 工具直接依据 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 s3 sync 或挂载卷下载的 AWS Data Export 副本,会按照其复制时携带的 manifest 加载,与直接读取存储桶的方式完全相同——见下文。

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/ 下按计费周期列出其最新交付的每个文件,当 manifest 存在时,服务器会加载这些文件:前缀上遗留的已取代分块和重新交付的周期会被忽略,而不会重复计数。没有 manifest 的位置——例如 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(GCS + BigQuery FOCUS 导出)

Google Cloud 以 FOCUS 格式原生导出账单:Billing → Billing export → FOCUS usage cost(预览版)会将 FOCUS 表写入 BigQuery。将其导出为 GCS 存储桶中的 Parquet 文件:

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 定时查询以保持存储桶更新;这同时会将您的数据归档,超过 FOCUS 导出的 2 年 TTL。然后:

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

身份验证按以下顺序尝试:

  1. HMAC 密钥:设置 GCS_HMAC_KEY_IDGCS_HMAC_SECRET(使用 gcloud storage hmac create <service-account-email> 创建)。此路径使用 DuckDB 通过 S3 互操作 API 提供的原生 GCS 支持,无需额外依赖。

  2. Application Default Credentials:已包含在 Docker 镜像中;从源码检出时,使用 uv sync --extra gcs 安装附加依赖。然后按您通常的方式完成身份验证:gcloud auth application-default login、通过 GOOGLE_APPLICATION_CREDENTIALS 指定服务账号 JSON,或在 GCE/GKE 上使用工作负载身份。

  3. 无凭据:仅限公共存储桶。

存在两种方法是因为 DuckDB 内置的 GCS 支持仅支持 HMAC;ADC 来自可选的 gcsfs 依赖。凭据只在服务器进程内部读取,绝不会暴露给 MCP 客户端。

配置

变量

默认值

描述

FOCUS_DATA_LOCATION

data/focus-export

Parquet 文件所在位置:本地路径、s3://…gs://…

FOCUS_VERSION

1.0

FOCUS 规范版本:1.01.11.21.31.4。选择加载哪套查询集合

AWS_REGION

us-east-1

S3 访问区域

AWS_PROFILE

(未设置)

用于 S3 身份验证的 AWS 配置文件

AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY

(未设置)

静态 AWS 凭据(如果不使用角色或配置文件)

GCS_HMAC_KEY_ID / GCS_HMAC_SECRET

(未设置)

用于 GCS 的 HMAC 凭据

GOOGLE_APPLICATION_CREDENTIALS

(未设置)

通过 ADC 访问 GCS 的服务账号 JSON

开发

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 了解约定和检查项。

路线图

  • 从 FOCUS 规范自动同步查询,使新的用例页面无需手动提取即可落地

  • 更丰富的响应格式:在查询结果中内联提供引用和教育性上下文

  • 针对真实云厂商导出验证每个用例查询(AWS 目前提供 FOCUS 1.0 和 1.2;1.3+ 待云厂商采用)

  • 评估将列和属性定义迁移到 MCP resources

  • 在工具响应中呈现规范中的一致性差距说明

安全

请将漏洞报告发送至 SECURITY.md 中列出的地址,而不是问题跟踪器。请了解信任模型:execute_query 会在服务器进程内运行 AI 助手编写的 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