anapartner-com/siteminder-mcp-app
If you are the rightful owner of siteminder-mcp-app and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Model Context Protocol (MCP) server is a middleware component that facilitates communication between various systems, such as SiteMinder Policy Server and AI models like Claude, by exposing capabilities as tools and resources.
SiteMinder AI Assistant - MCP Integration
Complete end-to-end application demonstrating MCP (Model Context Protocol) integration with SiteMinder Policy Server using Claude AI.
🌐 Quick Access
Application is running at:
- Local Server: http://localhost:8080
- Network: http://YOUR_SERVER_IP:8080
📖 See for detailed access instructions.
Architecture
User → Web UI (Frontend) → Backend API Server → Claude API
↓
MCP Client
↓
MCP Server → SiteMinder Policy Server (REST API)
Components
1. MCP Server (mcp-server/)
- Exposes SiteMinder capabilities as MCP tools
- Provides 12 tools:
list_user_directories- List all user directoriesget_user_directory- Get specific user directory detailslist_domains- List all domainsget_domain- Get specific domain detailslist_agents- List all policy server agentsget_agent- Get specific agent detailslist_realms- List all realmsget_realm- Get specific realm detailsget_system_health- Check system healthget_audit_logs- Get audit logsget_active_sessions- Get active sessionsterminate_session- Terminate a user session
2. Backend Server (backend/)
- Express.js API server
- Connects to Claude API
- Spawns MCP server as subprocess
- Handles chat requests from frontend
3. Frontend UI (frontend/)
- Simple HTML/CSS/JS interface
- Chat-like interface
- Real-time communication with backend
Installation
Prerequisites
- Node.js 18+
- SiteMinder Policy Server running (accessible at https://casso.cx.anapartner.net)
- Anthropic API key
Quick Start
-
Environment is already configured in
.envfile -
Start all services:
./start-all.sh
This will:
- Install dependencies (if needed)
- Start Backend server (port 3000)
- Start MCP server (automatically)
- Start Frontend server (port 8080)
- Run everything in background with logs
- Open browser: http://localhost:8080
Management Scripts
Check service status:
./status.sh
Stop all services:
./stop-all.sh
View logs:
tail -f logs/backend.log # Backend + MCP server logs
tail -f logs/frontend.log # Frontend server logs
How It Works
-
User asks a question in the web UI:
- "List all user directories"
-
Frontend sends request to backend:
POST /api/chat { "message": "List all user directories" } -
Backend forwards to Claude with available MCP tools:
- Claude understands the request
- Decides to call
list_user_directoriestool
-
Backend calls MCP Server via stdio:
- MCP server executes SiteMinder REST API call
- Returns results
-
Claude processes the results and generates response
-
Backend returns formatted response to frontend
-
Frontend displays the response to user
Example Interactions
Example 1: List User Directories
User: "List all user directories"
Flow:
- Claude calls
list_user_directoriestool - MCP server calls SiteMinder REST API
/ca/api/sso/services/policy/v1/userdirectories - Claude formats the response for the user
Example 2: System Health
User: "Check system health"
Flow:
- Claude calls
get_system_healthtool - MCP server calls SiteMinder
/adminui/api/health - Claude presents health status
Example 3: List Domains
User: "Show me all domains"
Flow:
- Claude calls
list_domainstool - MCP server calls
/ca/api/sso/services/policy/v1/domains - Claude displays domains in readable format
Configuration
SiteMinder Connection
Edit .env file:
SITEMINDER_BASE_URL=https://casso.cx.anapartner.net
SITEMINDER_USER=siteminder
SITEMINDER_PASSWORD=anaPassword01
Anthropic API
ANTHROPIC_API_KEY=your-api-key-here
Accessing from External Network
The application is configured to listen on all interfaces (0.0.0.0):
- Local: http://localhost:8080
- Network: http://YOUR_SERVER_IP:8080
API Reference
Backend Endpoints
POST /api/chat
Chat with Claude about SiteMinder
Request:
{
"message": "List all domains",
"conversationHistory": []
}
Response:
{
"response": "Here are the domains...",
"conversationHistory": [...]
}
GET /api/health
Check backend and MCP status
Response:
{
"status": "ok",
"mcpConnected": true,
"availableTools": ["list_user_directories", "get_domain", ...]
}
Debug Mode
Enable debug mode in the UI by:
- Click the "🐛 Debug" toggle button
- Send your message
- See detailed MCP tool calls and responses
Security Notes
⚠️ Important Security Considerations:
- MCP Server: Runs internally, NOT exposed to internet
- API Keys: Never commit API keys to git
- HTTPS: SiteMinder API uses self-signed cert (rejectUnauthorized: false)
- Authentication: Configure proper auth in production
- Network: Use firewall rules to restrict access
Troubleshooting
Backend won't start
- Check
ANTHROPIC_API_KEYis set in.env - Verify Node.js version (18+)
- Check logs:
tail -f logs/backend.log
MCP tools not working
- Verify SiteMinder is accessible
- Check credentials (SITEMINDER_USER/SITEMINDER_PASSWORD)
- Test SiteMinder manually:
curl -k -u siteminder:anaPassword01 https://casso.cx.anapartner.net/
Frontend can't connect
- Ensure backend is running on port 3000
- Check
./status.sh - Open browser console for errors
Port already in use
- Stop existing services:
./stop-all.sh - Check what's using the port:
lsof -i :3000orlsof -i :8080
System Information
- Backend Port: 3000
- Frontend Port: 8080
- SiteMinder URL: Configured in .env file
Next Steps
- Add more MCP tools (create/update operations)
- Implement user authentication for frontend
- Add conversation persistence
- Create more sophisticated UI
- Add real-time notifications
- Implement role-based access control
Support
For issues or questions, check:
- SiteMinder Docs: https://techdocs.broadcom.com/
- MCP Docs: https://modelcontextprotocol.io/
- Anthropic Docs: https://docs.anthropic.com/