SuperAPI AI 工具集

tl-openmeter-api-mcp-server

编程与开发

查看项目

更新于 10-16 03:18

技能介绍

用途

tl-openmeter-api-mcp-server 是一个 MCP(Model Context Protocol)服务器,用于与本地的 OpenMeter 实例交互。它让 Cursor、Claude 等 AI 助手能够实际调用 OpenMeter API,而不仅仅是提供文档参考:列出计量表、管理客户与订阅、查询用量、摄取测试事件、检查 OpenMeter 是否运行等。

官方将其定位为 tl-agent-skills 套件的一部分,与另外两个技能配合:

  • tl-openmeter-api:REST API 参考(知识)
  • tl-openmeter-local-dev:本地开发环境搭建(Docker、ngrok、Stripe App、webhooks)
  • tl-openmeter-api-mcp-server:本技能,用于从 Cursor 调用 OpenMeter

适用场景

当需要让智能体真正调用 OpenMeter API(而不只是提供文档)时使用,例如:

  • “列出我的 OpenMeter 计量表”
  • “在 OpenMeter 中创建客户”
  • “查询该计量表的用量”
  • “摄取一个测试事件”
  • “检查 OpenMeter 是否在运行”

前置条件

  • Node.js 18+
  • 正在运行的 OpenMeter 实例(例如 Docker,默认 http://localhost:8888)

安装

Step 1:构建服务器。在技能目录执行:

npm install
npm run build

Step 2:在 Cursor MCP 配置中注册。添加到 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "OpenMeter": {
      "command": "node",
      "args": ["C:\\Users\\Todd\\.cursor\\skills\\@tl-agent-skills\\skills\\tl-openmeter-api-mcp-server\\dist\\index.js"],
      "env": {
        "OPENMETER_URL": "http://localhost:8888",
        "OPENMETER_API_KEY": ""
      }
    }
  }
}

需要根据实际安装位置调整路径。

Step 3:重启 Cursor。Cursor 需要重启才能加载 MCP 配置的更改。

环境变量

变量 默认值 说明
OPENMETER_URL http://localhost:8888 OpenMeter API 的基础 URL
OPENMETER_API_KEY (无) 可选的 Bearer token 用于认证

本地开发通常不需要设置 OPENMETER_API_KEY。

可用工具

工具 用途
openmeter_list_meters GET /api/v1/meters
openmeter_get_meter GET /api/v1/meters/{idOrSlug}
openmeter_query_usage GET /api/v1/meters/{idOrSlug}/query
openmeter_list_customers GET /api/v1/customers(分页)
openmeter_get_customer GET /api/v1/customers/{idOrKey}
openmeter_create_customer POST /api/v1/customers
openmeter_list_subscriptions 列出订阅(可选 customerId)
openmeter_create_subscription POST /api/v1/subscriptions
openmeter_cancel_subscription POST /api/v1/subscriptions/{id}/cancel
openmeter_list_plans GET /api/v1/plans
openmeter_list_features GET /api/v1/features
openmeter_get_entitlements GET /api/v1/customers/{id}/entitlements
openmeter_ingest_event POST /api/v1/events(CloudEvents JSON)
openmeter_list_apps GET /api/v1/apps
openmeter_list_billing_profiles GET /api/v1/billing/profiles
openmeter_check_status 验证与 OpenMeter 的连接

资源

  • OpenMeter 速查参考 — 来自 tl-openmeter-api 技能的 Markdown
  • OpenMeter 规格说明 — 纯文本,包含规格 URL 和已配置的基础 URL

验证

  1. 启动 OpenMeter(例如 docker compose up 或你的技术栈)
  2. 确保 OpenMeter MCP 服务器已在 Cursor 中配置并启用
  3. 在对话中询问:“Check the OpenMeter status”或“List OpenMeter meters”
  4. 智能体应调用 openmeter_check_status 或 openmeter_list_meters 并返回结果

错误(例如连接被拒绝)会作为工具结果返回,以便智能体进行报告。

故障排查

问题 原因 修复
工具不可用 服务器未在 mcp.json 中 添加配置项,重启 Cursor
连接被拒绝 OpenMeter 未运行 启动 OpenMeter(docker compose up)
401 Unauthorized 缺少 API key 在环境变量中设置 OPENMETER_API_KEY
服务器无法启动 未构建 在技能目录执行 npm run build

MCP 设计原则

资料引用了 anthropics/skills/mcp-builder 的设计原则。

工具命名:使用一致、面向动作的前缀。

  • openmeter_list_meters ✓(list 动作)
  • openmeter_get_customer ✓(get 动作)
  • openmeter_create_subscription ✓(create 动作)
  • meters ✗(无动作前缀)

API 覆盖 vs 工作流工具:在全面的 API 端点覆盖和专门的工作流工具之间取得平衡。全面覆盖让智能体能够灵活组合操作;工作流工具(例如 openmeter_provision_customer)将多个调用组合用于常见任务。不确定时,优先保证全面的 API 覆盖。

可操作的错误消息:错误消息应引导智能体找到解决方案,例如给出客户未找到并提示使用 openmeter_list_customers 查找有效 ID。

分页:所有列表操作支持基于游标的分页,参数包括 page 和 pageSize(默认 100,最大 1000),响应包含 items、page、pageSize、totalCount。

工具实现与批量操作

资料给出了工具注册的示例代码,使用 server.registerTool 注册工具,包含 name、description、inputSchema(使用 zod)和 async handler。批量操作部分给出了 openmeter_batch_ingest 的示例,用于在单个请求中摄取多个 CloudEvents,客户端将事件映射为 CloudEvents 格式(specversion、id、source、type、subject、time、data),并以 application/cloudevents-batch+json 发送。

工具注解

可使用注解标记工具行为:readOnlyHint(是否只读)、destructiveHint(是否破坏性删除)、idempotentHint(是否幂等)、openWorldHint(是否与外部服务交互)。资料给出了 openmeter_create_customer 与 openmeter_list_meters 的注解示例。

测试

  • MCP Inspector:使用 npx @modelcontextprotocol/inspector 交互式测试工具
  • Mock 服务器:可通过 createMockMcpServer 创建,为工具(如 openmeter_list_meters)提供模拟返回值
  • 集成测试模式:资料给出了测试用例示例,例如“从运行中的 OpenMeter 列出计量表”以及“对无效客户返回可操作的错误”(断言错误信息包含 openmeter_list_customers)

参考资料

资料列出的参考资料包括:anthropics/skills/mcp-builder(MCP 服务器开发指南)、MCP Specification(协议规范)、MCP TypeScript SDK(SDK 参考)、OpenMeter API(API 端点),以及 MCP Server Examples、MCP Inspector、MCP Best Practices。

限制

资料未提供关于收费、价格、平台覆盖范围或性能指标的说明,这些信息暂未提供。