P

PBS-MCP服务器

@matthewdcage/pbs-mcp-server
0 Stars 15 次浏览 matthewdcage 更新于 2026-08-23

一个独立的模型上下文协议服务器,使人工智能模型能够访问澳大利亚药品福利计划(PBS)API数据,包括药品清单、价格和可用性信息。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "pbs-api": {
      "args": [
        "path/to/pbs-mcp-standalone/build/index.js"
      ],
      "command": "node",
      "env": {
        "PBS_API_SUBSCRIPTION_KEY": "your-subscription-key-here"
      }
    }
  }
}

服务介绍

Pharmaceutical Benefits Scheme (PBS) MCP AI Enabled API Server MCP Server

一个独立的 Model Context Protocol (MCP) 服务器,用于访问澳大利亚药品福利计划 (PBS) API。

关于作者

这个 PBS MCP 服务器是由 [Matthew Cage] 开发的,他是 https://ai-advantage.au 的创始人,专注于自动化、AI 工程和 AI 集成以及医疗数据系统。

与我合作:
https://www.linkedin.com/in/digitalmarketingstrategyexpert/

概述

该项目提供了一个独立的 MCP 服务器,允许 AI 模型访问澳大利亚药品福利计划 (PBS) API,其中包含有关药品、价格和在澳大利亚可用性的信息。

该项目是为公共 API 构建的,但如果您获得了开发人员访问权限,可以轻松地适应私有 API。

PBS API 提供对 PBS 数据的编程访问,包括药品列表、定价和可用性。此 MCP 服务器使将 PBS 数据集成到 AI 工作流中变得容易。

MCP 可通过 HTTP 和 CLI 访问。

请注意 PBS 的速率限制,并相应调整您的请求频率。我建议定期调用以存储您从 API 所需的信息,并每周更新一次。

MCP 服务器功能 MCP Server

此 MCP 服务器实现了以下 Model Context Protocol 功能:

  • 工具:提供查询 PBS API 端点的工具,允许 AI 模型访问药品数据
  • 传输层:支持 stdio 和 HTTP/SSE 传输层
  • 错误处理:全面的错误处理,包括 API 速率限制和身份验证问题
  • LLM 集成:直接从 LLM 组件接收工具调用和提示,实现与 PBS 数据的无缝 AI 交互

工作原理

MCP 客户端 MCP Client

  1. 接收工具调用:当 LLM(如 Claude)需要药品数据时,它会向此服务器发送工具调用
  2. 处理提示:解释关于药品信息的自然语言提示
  3. 执行 API 查询:将请求转换为适当的 PBS API 调用
  4. 返回结构化数据:发送格式化的药品数据,LLM 可以在其响应中使用这些数据

这使得 AI 助手能够访问最新的 PBS 信息,而无需在训练数据中包含这些信息。

安装

  1. 克隆此仓库:

    git clone <repository-url>
    cd pbs-mcp-standalone
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    

使用

启动服务器 MCP Server

PBS MCP 服务器可以在不同的模式下运行:

Stdio 模式(默认)

这种模式与MCP协议兼容,并通过标准输入/输出流进行通信:

npm start

或者使用提供的启动脚本:

./start.sh

支持SSE的HTTP模式

这种模式启动一个支持Server-Sent Events (SSE)的HTTP服务器:

npm run start:http

或者使用提供的启动脚本:

./start.sh http 3000

其中3000是监听的端口号。

命令行界面

PBS MCP服务器也可以用作命令行工具:

npm run cli -- <command>

或者使用提供的启动脚本:

./start.sh cli <command>

例如:

./start.sh cli info

作为命令行工具使用

要将此MCP服务器作为命令行工具使用:

  1. 构建项目:

    npm run build
    
  2. 使用所需的命令运行CLI:

    npm run cli -- <command>
    

    或者使用启动脚本:

    ./start.sh cli <command>
    

与MCP客户端集成 MCP Client

该服务器可以与任何兼容MCP的客户端集成,例如:

  • 本地AI编辑器和AI/LLM服务器
  • 支持模型上下文协议的其他AI助手
  • 使用MCP客户端库的自定义应用程序

客户端配置示例

这里是如何与此MCP服务器配置客户端的一个例子:

{
  "mcpServers": {
    "pbs-api": {
      "command": "node",
      "args": ["path/to/pbs-mcp-standalone/build/index.js"],
      "env": {
        "PBS_API_SUBSCRIPTION_KEY": "your-subscription-key-here"
      }
    }
  }
}

从客户端访问服务器

要从客户端访问此MCP服务器:

  1. 对于Claude桌面或其他兼容MCP的AI助手

    • 配置助手以使用此服务器作为MCP工具提供者
    • 助手将自动发现并使用由该服务器提供的工具
    • LLM可以发送关于药物的自然语言提示,这些提示将由服务器处理
  2. 对于自定义应用程序

    • 使用下面描述的HTTP API端点
    • 连接到SSE端点以获取实时工具事件
    • 或者启动服务器进程并通过stdin/stdout通信

示例LLM提示

服务器可以解释来自LLM的各种提示,例如:

"Find information about metformin in the PBS"
"What is the PBS code for insulin?"
"List all prescribers who can prescribe antibiotics"
"Get the latest pricing for asthma medications"

这些自然语言提示被转换为适当的PBS API调用。

API工具参数

PBS API工具可以使用以下参数:

{
  "endpoint": "prescribers",
  "method": "GET",
  "params": {
    "get_latest_schedule_only": "true",
    "limit": "20"
  }
}

参数

  • endpoint(字符串,必需):要访问的具体PBS API端点(如"prescribers", "item-overview")
  • method(字符串,可选):使用的HTTP方法(对于大多数PBS API操作建议使用GET)。默认:"GET"
  • params(对象,可选):请求中包含的查询参数
  • subscriptionKey(字符串,可选):自定义订阅密钥。如果不提供,则使用默认公共密钥
  • timeout(数字,可选):请求超时时间(毫秒)。默认:30000

HTTP API MCP Server

在HTTP模式下运行时,可用以下端点:

健康检查

GET /health

返回服务器的状态。

列出工具

GET /tools

返回可用工具列表。

SSE端点

GET /sse

建立SSE连接并发送工具事件。

工具调用 (SSE)

POST /sse/:toolName

调用一个工具并通过SSE发送结果。

工具调用 (REST)

POST /api/:toolName

调用一个工具并将结果作为JSON返回。

命令行界面 MCP Dev

PBS MCP服务器可以用作命令行工具,支持以下命令:

列出端点

./start.sh cli list-endpoints

列出所有可用的PBS API端点。

获取API信息

./start.sh cli info

返回关于PBS API的信息。

查询开药者

./start.sh cli prescribers [options]

选项:

  • -l, --limit <number>: 每页结果数量(默认:10)
  • -p, --page <number>: 页码(默认:1)
  • -c, --pbs-code <code>: 按PBS代码过滤
  • -s, --schedule-code <code>: 按时间表代码过滤
  • -t, --prescriber-type <type>: 按开药者类型过滤
  • -f, --fields <fields>: 返回特定字段
  • --latest: 仅获取最新的时间表

查询项目概览

./start.sh cli item-overview [options]

选项:

  • -l, --limit <number>: 每页结果数量(默认:10)
  • -p, --page <number>: 页码(默认:1)
  • -s, --schedule-code <code>: 按时间表代码过滤
  • -f, --fields <fields>: 返回特定字段
  • --latest: 仅获取最新的时间表

查询任意端点

./start.sh cli query <endpoint> [options]

选项:

  • -m, --method <method>: HTTP方法(默认:GET)
  • -p, --params <json>: 作为JSON字符串的查询参数
  • -k, --subscription-key <key>: 自定义订阅密钥
  • -t, --timeout <milliseconds>: 请求超时时间(毫秒)

启动HTTP服务器

./start.sh cli serve [options]

选项:

  • -p, --port <number>: 监听端口(默认:3000)

可用端点

PBS API提供了多个端点以访问不同类型的数据:

  • / - 根端点,提供API信息和更新日志
  • /prescribers - 关于开药者的信息
  • /item-overview - PBS项目的详细信息
  • /items - PBS项目的基本信息
  • /schedules - 关于PBS时间表的信息
  • /atc-codes - 解剖治疗化学(ATC)分类代码
  • /organisations - 关于组织的信息
  • /restrictions - 关于限制的信息
  • /parameters - 关于参数的信息
  • /criteria - 关于标准的信息
  • /copayments - 关于共付额的信息
  • /fees - 关于费用的信息
  • /markup-bands - 关于加价带的信息
  • /programs - 关于项目的信息
  • /summary-of-changes - 变更摘要

有关端点的完整列表,请参阅PBS API文档

使用示例

获取API信息

{
  "endpoint": ""
}

获取开药者信息

{
  "endpoint": "prescribers",
  "params": {
    "get_latest_schedule_only": "true",
    "limit": "10"
  }
}

获取具有最新时间表的项目概览

{
  "endpoint": "item-overview",
  "params": {
    "get_latest_schedule_only": "true",
    "limit": "5"
  }
}

获取具有特定PBS代码的开药者信息

{
  "endpoint": "prescribers",
  "params": {
    "pbs_code": "10001J",
    "get_latest_schedule_only": "true"
  }
}

认证

该工具使用订阅密钥来访问PBS API。您可以通过在PBS开发者门户上注册来获取自己的密钥。


为了开发目的,请参阅 `.env.example` 文件以获取配置详情。

### 获取 PBS API 订阅密钥

要获取您自己的 PBS API 订阅密钥,请按照以下步骤操作:

1. **访问 PBS 数据 API 门户**:
   - 前往 [https://data-api-portal.health.gov.au/](https://data-api-portal.health.gov.au/)

2. **创建账户**:
   - 点击“注册”创建新账户
   - 填写您的详细信息并验证电子邮件地址

3. **订阅 PBS API**:
   - 登录后,导航到“产品”部分
   - 选择“PBS 公共 API v3”产品
   - 点击“订阅”以请求访问 API

4. **检索您的订阅密钥**:
   - 订阅批准后,进入您的个人资料
   - 导航到“订阅”或“API 密钥”部分
   - 复制您的主密钥或副密钥

5. **配置您的环境**:
   - 根据 `.env.example` 模板创建一个 `.env` 文件
   - 将 `your-subscription-key-here` 替换为您的实际订阅密钥:
     ```
     PBS_API_SUBSCRIPTION_KEY=your-actual-subscription-key
     ```

**注意**:PBS 公共 API 的速率限制为每 20 秒一次请求。此限制由所有公共 API 用户共享。对于更高的速率限制或访问禁运数据(未来计划),您可能需要通过 PBS 开发者计划申请特殊访问权限。

## 限制

- PBS 公共 API 的速率限制为每 20 秒一次请求(所有用户共享)
- 只有当前计划和过去 12 个月内发布的计划可以通过公共 API 获得
- 某些端点需要提供特定参数
- API 结构和端点可能会随时间变化

## 额外资源

- [PBS 网站](https://www.pbs.gov.au/)
- [PBS 数据网站](https://data.pbs.gov.au/)
- [PBS API 文档](https://data-api-portal.health.gov.au/api-details#api=pbs-prod-api-public-v3-v3)
- [模型上下文协议文档](https://github.com/modelcontextprotocol/mcp)

## 许可证

本项目根据 MIT 许可证授权 - 请参阅 LICENSE 文件了解详情。

---

![MCP Server](https://badge.mcpx.dev?type=server&features=tools) ![MCP Client](https://badge.mcpx.dev?type=client) ![MCP Dev](https://badge.mcpx.dev?type=dev) ![MCP Enabled](https://badge.mcpx.dev?status=on) ❤️