AI助手集成工具

SiteMinder AI助手是一个完整的端到端应用,展示了如何通过MCP(模型上下文协议)将Claude AI与SiteMinder策略服务器集成,提供策略管理和系统监控功能。

  • by anapartner-com
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 anapartner-com/siteminder-mcp-app

使用说明

SiteMinder人工智能助手-MCP集成

使用Claude AI完成端到端应用程序,演示MCP(模型上下文协议)与SiteMinder策略服务器的集成。

🌐 快速访问

应用程序正在以下位置运行:

  • 本地服务器: http://localhost:8080
  • 网络: http://YOUR_SERVER_IP:8080

📖 看 QUICKSTART.md 了解详细的访问说明。

建筑

User → Web UI (Frontend) → Backend API Server → Claude API
                                    ↓
                              MCP Client
                                    ↓
                              MCP Server → SiteMinder Policy Server (REST API)

组件

1.MCP服务器(mcp-server/)

  • 将SiteMinder功能作为MCP工具公开
  • 提供12个工具:
    • list_user_directories -列出所有用户目录
    • get_user_directory -获取特定用户目录详细信息
    • list_domains -列出所有域
    • get_domain -获取特定域详细信息
    • list_agents -列出所有策略服务器代理
    • get_agent -获取特定代理详细信息
    • list_realms -列出所有领域
    • get_realm -获取特定领域的详细信息
    • get_system_health -检查系统运行状况
    • get_audit_logs -获取审核日志
    • get_active_sessions -获取活动会话
    • terminate_session -终止用户会话

2.后端服务器(backend/)

  • Express.js API服务器
  • 连接到Claude API
  • 生成MCP服务器作为子进程
  • 处理来自前端的聊天请求

3.前端用户界面(frontend/)

  • 简单的HTML/CSS/JS界面
  • 聊天式界面
  • 与后端实时通信

安装

先决条件

  • Node.js 18+
  • SiteMinder策略服务器正在运行(可在以下网址访问https://casso.cx.anapartner.net)
  • 无烟煤API键

快速开始

  1. 环境已配置 在 .env 文件

  2. 启动所有服务:

./start-all.sh

这将:

  • 安装依赖项(如果需要)
  • 启动后端服务器(端口3000)
  • 启动MCP服务器(自动)
  • 启动前端服务器(端口8080)
  • 使用日志在后台运行所有内容
  1. 打开浏览器: http://localhost:8080

管理脚本

检查服务状态:

./status.sh

停止所有服务:

./stop-all.sh

查看日志:

tail -f logs/backend.log   # Backend + MCP server logs
tail -f logs/frontend.log  # Frontend server logs

运作原理

  1. 用户提问 在web UI中:

    • “列出所有用户目录”
  2. 前端 向后端发送请求:

    POST /api/chat
    { "message": "List all user directories" }
    
  3. 后端 使用可用的MCP工具转发给Claude:

    • 克劳德理解这个请求
    • 决定致电 list_user_directories 工具
  4. 后端 通过stdio调用MCP服务器:

    • MCP服务器执行SiteMinder REST API调用
    • 返回结果
  5. 克劳德 处理结果并生成响应

  6. 后端 向前端返回格式化响应

  7. 前端 向用户显示响应

交互示例

示例1:列出用户目录

用户: “列出所有用户目录”

流量:

  1. 克劳德打电话来 list_user_directories 工具
  2. MCP服务器调用SiteMinder REST API /ca/api/sso/services/policy/v1/userdirectories
  3. Claude为用户格式化响应

示例2:系统健康状况

用户: “检查系统运行状况”

流量:

  1. 克劳德打电话来 get_system_health 工具
  2. MCP服务器调用SiteMinder /adminui/api/health
  3. 克劳德介绍健康状况

示例3:列出域

用户: “显示所有域”

流量:

  1. 克劳德打电话来 list_domains 工具
  2. MCP服务器调用 /ca/api/sso/services/policy/v1/domains
  3. Claude以可读格式显示域

配置

SiteMinder连接

编辑 .env 文件:

SITEMINDER_BASE_URL=https://casso.cx.anapartner.net
SITEMINDER_USER=siteminder
SITEMINDER_PASSWORD=anaPassword01

无烟煤API

ANTHROPIC_API_KEY=your-api-key-here

从外部网络访问

应用程序配置为在所有接口(0.0.0.0)上侦听:

  • 本地: http://localhost:8080
  • 网络: http://YOUR_SERVER_IP:8080

API 参考

后端端点

POST/api/聊天

与Claude讨论SiteMinder

请求:

{
  "message": "List all domains",
  "conversationHistory": []
}

答复:

{
  "response": "Here are the domains...",
  "conversationHistory": [...]
}

GET/api/健康

检查后端和MCP状态

答复:

{
  "status": "ok",
  "mcpConnected": true,
  "availableTools": ["list_user_directories", "get_domain", ...]
}

调试模式

通过以下方式在UI中启用调试模式:

  1. 点击“🐛 调试”切换按钮
  2. 发送您的消息
  3. 查看详细的MCP工具调用和响应

安全说明

⚠️ 重要安全注意事项:

  1. MCP服务器:内部运行,不暴露于互联网
  2. API密钥:从不将API密钥提交到git
  3. 超文本传输安全协议:SiteMinder API使用自签名证书(拒绝授权:false)
  4. 认证:在生产环境中配置正确的身份验证
  5. 网络:使用防火墙规则限制访问

故障排除

后端无法启动

  • 检查 ANTHROPIC_API_KEY 已设置 .env
  • 验证Node.js版本(18+)
  • 检查日志: tail -f logs/backend.log

MCP工具不工作

  • 验证SiteMinder是否可访问
  • 检查凭据(站点识别用户/站点识别密码)
  • 手动测试SiteMinder: curl -k -u siteminder:anaPassword01 https://casso.cx.anapartner.net/

前端无法连接

  • 确保后端在端口3000上运行
  • 检查 ./status.sh
  • 打开浏览器控制台查看错误

端口已在使用中

  • 停止现有服务: ./stop-all.sh
  • 检查端口的使用情况: lsof -i :3000 或 lsof -i :8080

系统信息

  • 后端端口: 3000
  • 前端端口: 8080
  • SiteMinder URL:在.env文件中配置

后续步骤

  1. 添加更多MCP工具(创建/更新操作)
  2. 实现前端用户身份验证
  3. 添加对话持久性
  4. 创建更复杂的UI
  5. 添加实时通知
  6. 实施基于角色的访问控制

支持

有关问题或疑问,请查看:

  • SiteMinder文档:https://techdocs.broadcom.com/
  • MCP文件:https://modelcontextprotocol.io/
  • 人类学文献:https://docs.anthropic.com/