政府采购信息查询服务

一个提供澳大利亚政府ICT采购机会信息的服务器,支持多市场搜索、详细机会信息获取和认证访问。

  • by ConsentirDev
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ConsentirDev/buyict.mcp

使用说明

购买ICT MCP服务器

模型上下文协议(MCP)服务器,为Claude提供访问澳大利亚政府ICT采购机会的权限 购买ICT.

特性

  • 🔍 在多个市场中搜索采购机会
  • 📋 获取有关特定机会的详细信息
  • 🏪 列出可用市场(PCS、SMP、CMP、LH、TMP、DC、HMP)
  • 🔐 支持通过身份验证访问BuyICT ServiceNow实例

安装

  1. 克隆此存储库或导航到项目目录:
cd buyict_mcp
  1. 安装依赖项:
npm install
  1. 构建TypeScript代码:
npm run build

配置

1.环境变量

复制示例环境文件并填写您的凭据:

cp .env.example .env

2.获取会话凭据

要访问BuyICT数据,您需要从浏览器提供会话凭据:

  1. 打开https://www.buyict.gov.au在浏览器中
  2. 登录(如果您想访问的机会需要)
  3. 打开开发人员工具(F12)
  4. 去 网络 标签
  5. 导航到Opportunity页面或刷新它
  6. 寻找请求 /api/now/sp/page?id=opportunities
  7. 点击它并转到 标头 章节
  8. 查找以下值并将其复制到您的 .env 文件:

从Cookie标题:

  • JSESSIONID → BUYICT_SESSION_ID
  • glide_user_route → BUYICT_GLIDE_USER_ROUTE
  • glide_node_id_for_js → BUYICT_GLIDE_NODE_ID
  • VALK_SESSION_ID → BUYICT_VALK_SESSION_ID

从请求标头中:

  • X-UserToken → BUYICT_USER_TOKEN
  • UX-Token → BUYICT_UX_TOKEN

注: 这些令牌将在一段时间后过期。如果您遇到身份验证错误,您需要通过重复此过程来刷新它们。

使用Claude Desktop

  1. 将服务器添加到Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "buyict": {
      "command": "node",
      "args": ["/absolute/path/to/buyict_mcp/dist/index.js"],
      "env": {
        "BUYICT_SESSION_ID": "your_session_id_here",
        "BUYICT_USER_TOKEN": "your_user_token_here",
        "BUYICT_UX_TOKEN": "your_ux_token_here"
      }
    }
  }
}

或者,从您的 .env 文件,使用包装器脚本。

  1. 重新启动克劳德桌面

  2. 服务器现在将提供以下工具:

可用工具

search_opportunities

使用可选过滤器搜索采购机会。

参数:

  • keyword (字符串,可选):用于筛选机会的搜索词
  • marketplace (字符串,可选):按市场代码过滤(PCS、SMP、CMP、LH、TMP、DC、HMP)
  • page_size (数字,可选):每页结果(默认值:15,最大值:100)
  • page (数字,可选):页码(默认值:1)

例子:

Search for cloud computing opportunities in the Cloud Marketplace

get_opportunity_details

获取有关特定机会的详细信息。

参数:

  • opportunity_id (string,必填):商机的sys_id
  • table (字符串,必填):源表名(例如u_cmp_procurement)

例子:

Get details for opportunity ID abc123 from the u_cmp_procurement table

list_marketplaces

获取所有可用市场的列表。

例子:

Show me all available BuyICT marketplaces

市场

服务器支持以下BuyICT市场:

代码 名称 表
PCS 面板和目录服务 u_PCS_采购
SMP 软件市场 u_SMP_采购
CMP 云市场 u_CMP_采购
LH 劳动力雇佣 u_LH_采购
TMP 电信市场 u_TMP_采购
DC 数据中心 u_DC_采购
HMP 硬件市场 u_HMP_采购

发展

项目结构

buyict_mcp/
├── src/
│   ├── index.ts                 # MCP server entry point
│   ├── servicenow-client.ts     # ServiceNow API client
│   └── types.ts                 # TypeScript type definitions
├── config/
│   └── buyict-config.json       # Server configuration
├── dist/                        # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
├── .env.example
└── README.md

建筑

npm run build

开发模式(带手表)

npm run dev

测试

手动启动服务器进行测试:

npm start

当前限制

⚠️ 重要提示: 由于ServiceNow服务门户架构,当前的实现存在一些局限性:

  1. 数据获取: 这 search_opportunities 工具当前返回初始页面结构,但可能不包括实际机会数据。这是因为:

    • ServiceNow小部件通过服务器端脚本异步加载数据
    • 获取机会数据的确切API端点需要进一步调查
    • 可能需要经过身份验证的访问权限才能完全访问数据
  2. 身份验证: 会话令牌过期,需要从浏览器手动刷新。

  3. 未来需要改进:

    • 发现获取商机列表的正确API端点
    • 实现自动会话刷新
    • 添加缓存以减少API调用
    • 支持更高级的过滤选项

API 文档

有关更多详细信息,请参阅这些文件:

  • API_FINDINGS.md -API详细分析和结果
  • AUTHENTICATION_ANALYSIS.md -身份验证机制和要求
  • MCP_SERVER_DESIGN.md -架构和设计决策

故障排除

“用户未通过身份验证”错误

这意味着您的会话令牌已过期。跟随 配置 从浏览器获取新令牌的步骤。

没有机会返回

搜索端点可能需要进一步实现。有关详细信息,请查看服务器日志。您可能需要直接通过网站访问机会,或调查其他API端点。

连接问题

确保:

  • 您已连接互联网
  • BuyICT网站可访问
  • 您的代币有效且未过期

贡献

这是一项正在进行的工作。欢迎捐款,特别是:

  • 发现商机数据的正确API端点
  • 实现自动身份验证
  • 添加更多过滤和搜索功能
  • 改进错误处理

许可证

麻省理工学院

免责声明

这是一个非官方工具,不隶属于澳大利亚政府数字化转型局或BuyICT,也不受其认可。按照BuyICT的服务条款负责任地使用。