购买ICT MCP服务器
模型上下文协议(MCP)服务器,为Claude提供访问澳大利亚政府ICT采购机会的权限 购买ICT.
特性
- 🔍 在多个市场中搜索采购机会
- 📋 获取有关特定机会的详细信息
- 🏪 列出可用市场(PCS、SMP、CMP、LH、TMP、DC、HMP)
- 🔐 支持通过身份验证访问BuyICT ServiceNow实例
安装
- 克隆此存储库或导航到项目目录:
cd buyict_mcp- 安装依赖项:
npm install- 构建TypeScript代码:
npm run build配置
1.环境变量
复制示例环境文件并填写您的凭据:
cp .env.example .env2.获取会话凭据
要访问BuyICT数据,您需要从浏览器提供会话凭据:
- 打开https://www.buyict.gov.au在浏览器中
- 登录(如果您想访问的机会需要)
- 打开开发人员工具(F12)
- 去 网络 标签
- 导航到Opportunity页面或刷新它
- 寻找请求
/api/now/sp/page?id=opportunities - 点击它并转到 标头 章节
- 查找以下值并将其复制到您的
.env文件:
从Cookie标题:
JSESSIONID→BUYICT_SESSION_IDglide_user_route→BUYICT_GLIDE_USER_ROUTEglide_node_id_for_js→BUYICT_GLIDE_NODE_IDVALK_SESSION_ID→BUYICT_VALK_SESSION_ID
从请求标头中:
X-UserToken→BUYICT_USER_TOKENUX-Token→BUYICT_UX_TOKEN
注: 这些令牌将在一段时间后过期。如果您遇到身份验证错误,您需要通过重复此过程来刷新它们。
使用Claude Desktop
- 将服务器添加到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 文件,使用包装器脚本。
- 重新启动克劳德桌面
- 服务器现在将提供以下工具:
可用工具
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 Marketplaceget_opportunity_details
获取有关特定机会的详细信息。
参数:
opportunity_id(string,必填):商机的sys_idtable(字符串,必填):源表名(例如u_cmp_procurement)
例子:
Get details for opportunity ID abc123 from the u_cmp_procurement tablelist_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服务门户架构,当前的实现存在一些局限性:
- 数据获取: 这
search_opportunities工具当前返回初始页面结构,但可能不包括实际机会数据。这是因为:
- ServiceNow小部件通过服务器端脚本异步加载数据 - 获取机会数据的确切API端点需要进一步调查 - 可能需要经过身份验证的访问权限才能完全访问数据
- 身份验证: 会话令牌过期,需要从浏览器手动刷新。
- 未来需要改进:
- 发现获取商机列表的正确API端点 - 实现自动会话刷新 - 添加缓存以减少API调用 - 支持更高级的过滤选项
API 文档
有关更多详细信息,请参阅这些文件:
API_FINDINGS.md-API详细分析和结果AUTHENTICATION_ANALYSIS.md-身份验证机制和要求MCP_SERVER_DESIGN.md-架构和设计决策
故障排除
“用户未通过身份验证”错误
这意味着您的会话令牌已过期。跟随 配置 从浏览器获取新令牌的步骤。
没有机会返回
搜索端点可能需要进一步实现。有关详细信息,请查看服务器日志。您可能需要直接通过网站访问机会,或调查其他API端点。
连接问题
确保:
- 您已连接互联网
- BuyICT网站可访问
- 您的代币有效且未过期
贡献
这是一项正在进行的工作。欢迎捐款,特别是:
- 发现商机数据的正确API端点
- 实现自动身份验证
- 添加更多过滤和搜索功能
- 改进错误处理
许可证
麻省理工学院
免责声明
这是一个非官方工具,不隶属于澳大利亚政府数字化转型局或BuyICT,也不受其认可。按照BuyICT的服务条款负责任地使用。
