loading…
Search for a command to run...
loading…
Enables employee information lookup, directory listing, payroll access, and time-off request management with Okta token validation.
Enables employee information lookup, directory listing, payroll access, and time-off request management with Okta token validation.
An unofficial prototype MCP server providing HR system functionality with Okta token validation. For evaluation and testing purposes only.
Complete documentation available in the docs/ folder:
The HR System MCP Server provides:
This server validates Okta access tokens for all tool calls (except initialize):
Authorization: Bearer <access_token># Setup
cp env.example .env
# Edit .env with your Okta credentials
# Install dependencies
pip install -r requirements.txt
# Run in HTTP mode (for Okta MCP Adapter)
python main.py --http 8001
OKTA_DOMAIN=ijtestcustom.oktapreview.com
OKTA_AUTHORIZATION_SERVER_ID=auss2fth0mcIXHzVO1d7
OKTA_AUDIENCE=
OKTA_REQUIRED_SCOPES=
# When true (default), tools/list without auth returns 401. When false, allows unauthenticated tools/list (e.g. for gateway registration).
# PROTECTED_DISCOVERY=true
| Tool | Description | Parameters |
|---|---|---|
get_employee |
Get employee by ID | employee_id: str |
list_employees |
List all employees | None |
get_employee_payroll |
Get payroll info | employee_id: str |
get_time_off_requests |
Get time-off requests | employee_id: str (optional) |
# Endpoint
http://localhost:8001/mcp
# Authorization
Authorization: Bearer <okta_access_token>
# Gateway will:
# 1. Receive request from client
# 2. Validate Okta token
# 3. Forward to HR System MCP
# 4. Attach authorization header
Client Request
↓
Authorization Header (Okta token)
↓
Initialize (no token needed)
↓
tools/list (validate token)
↓
tools/call (validate token)
↓
Response
Deploy as serverless function - automatic scaling, pay-per-use
Deploy as long-running server - always-on, unlimited timeout
Run locally with Docker - full control, testing
docker-compose up -d
Recommendation:
See docs/RAILWAY_DEPLOYMENT.md for complete troubleshooting guide.
Quick fixes:
OKTA_DOMAIN and OKTA_AUTHORIZATION_SERVER_ID in .envpython main.py --http 8002.env example and fill in valueshr-mcp-server/
├── main.py # FastMCP server with HTTP handler
├── requirements.txt # Python dependencies
├── Dockerfile # Docker container definition
├── docker-compose.yml # Docker Compose configuration
├── railway.json # Railway deployment config
├── deploy-railway.sh # Deployment helper script
├── test_server.sh # Server test script
├── auth/ # Authentication module
│ ├── __init__.py
│ └── okta_validator.py # Okta token validation
└── docs/ # Documentation
├── INDEX.md # Documentation index
├── RAILWAY_README.md # Railway quick start
├── RAILWAY_DEPLOYMENT.md # Complete deployment guide
├── DOCKER_QUICK_START.md # Docker reference
├── README_INTEGRATION.md # Usage guide
├── CLAUDE_CODE_SETUP.md # Claude Code setup
├── CLAUDE.md # Developer documentation
└── ...more docs
See docs/INDEX.md for complete documentation guide.
# Using curl with Okta token
curl -X POST http://localhost:8001/mcp \
-H "Authorization: Bearer <your_okta_token>" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
For complete documentation, see the docs/ folder:
⚠️ Unofficial Prototype - For evaluation and testing only. Not for production use.
License: Apache 2.0
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"hr-system-mcp-server": {
"command": "npx",
"args": []
}
}
}