IT Onboarding Automator MCP Server
Provision Google Workspace access for employees based on their role.
Provision Jira project access for employees based on their role.
Provision Salesforce CRM access for employees based on their role.
Provision Slack workspace access for employees based on their role.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IT Onboarding Automator MCP ServerList failed onboarding events"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mock IT Onboarding Automator
Project Overview
The Mock IT Onboarding Automator is a backend service that automates employee onboarding based on HR webhook events.
When a new employee is hired, the HR system sends an onboarding event to the service. The system validates the event, determines which applications the employee should receive based on their role, provisions access records, records audit information, and ensures duplicate events are handled safely through idempotent processing.
The project also exposes an MCP (Model Context Protocol) server that allows AI assistants and operators to inspect employee access, review failed onboarding events, and retry failed provisioning operations.
Features
Webhook Processing
Supports HR onboarding events via:
POST /webhooks/hrisSupported event type:
employee.hiredRole-Based Access Provisioning
Application access is automatically assigned based on employee role.
engineer
slack
google_workspace
jira
sales
slack
google_workspace
salesforce
it_admin
slack
google_workspace
jira
salesforce
Idempotent Event Processing
Duplicate webhook deliveries using the same event_id are safely ignored.
The system guarantees:
No duplicate employees
No duplicate access grants
No duplicate provisioning actions
Audit Logging
Every successful provisioning operation creates an audit log containing:
event_id
role
granted applications
idempotency status
MCP Server
The MCP server exposes the following tools:
get_employee_access
Retrieve employee details and provisioned application access.
list_failed_events
List failed onboarding events.
retry_provision
Retry a previously failed onboarding event.
Architecture Summary
flowchart TB
HR[HR System]
HR -->|POST /webhooks/hris| WEBHOOK[FastAPI Webhook]
WEBHOOK --> PROV[Provisioning Service]
PROV --> EMP[Employees]
PROV --> ACCESS[Access Grants]
PROV --> AUDIT[Audit Log]
DB[(SQLite Database)]
EMP --> DB
ACCESS --> DB
AUDIT --> DB
MCP[MCP Server]
MCP --> TOOL1[get_employee_access]
MCP --> TOOL2[list_failed_events]
MCP --> TOOL3[retry_provision]
TOOL1 --> DB
TOOL2 --> DB
TOOL3 --> DBTechnology Stack
Component | Technology |
Language | Python 3.12+ |
API Framework | FastAPI |
ORM | SQLAlchemy 2.0 |
Database | SQLite |
MCP | Official Python MCP SDK |
Testing | pytest |
Package Management | uv |
Prerequisites
Install:
Python 3.12+
uv
Git
Verify installation:
python --version
uv --version
git --versionInstallation
Clone repository:
git clone https://github.com/Aman3786/IT-Onboarding-Automator.git
cd IT-Onboarding-AutomatorInstall dependencies:
uv syncOR
uv install -r requirements.txtInitialize Database
Create tables and seed initial role mappings:
uv run python setup_db.pyExpected output:
Database initialized successfullyDatabase location:
data/onboarding.dbRun API
Start FastAPI server:
uv run uvicorn api.main:app --reloadAPI available at:
http://localhost:8000Interactive documentation:
http://localhost:8000/docsRun MCP Server
Start MCP server (Prequisite: Nodejs Should be installed for MCP Inspector)
npx @modelcontextprotocol/inspector uv run python -m mcp_server.serverOR
uv run mcp dev mcp_server/server.pyOR
uv run python -m mcp_server.server
npx -y @modelcontextprotocol/inspectorThe MCP server uses stdio transport and is intended to be consumed by MCP Inspector, cursor and other MCP-compatible clients.
Configure Cursor MCP
Create:
.cursor/mcp.jsonConfiguration:
{
"mcpServers": {
"onboarding-automator": {
"command": "uv",
"args": [
"run",
"python",
"-m",
"mcp_server.server"
]
}
}
}Restart Cursor after creating the configuration.
The following tools should become available through MCP Inspector/Cursor:
get_employee_access
list_failed_events
retry_provision
Run Tests
Run all tests:
uv run pytestRun verbose output:
uv run pytest -vRun a specific test file:
uv run pytest tests/test_webhook.py -vExample Requests
Successful Employee Onboarding
curl -X POST http://localhost:8000/webhooks/hris \
-H "Content-Type: application/json" \
-d '{
"event_id":"evt_hire_001",
"event_type":"employee.hired",
"email":"alex.chen@example.com",
"full_name":"Alex Chen",
"role":"engineer"
}'Example response:
{
"event_id": "evt_hire_001",
"status": "completed",
"idempotent": false,
"employee": {
"email": "alex.chen@example.com",
"role": "engineer"
},
"granted_apps": [
"slack",
"google_workspace",
"jira"
]
}Duplicate Event
Submitting the same request again:
{
"event_id": "evt_hire_001",
"status": "completed",
"idempotent": true
}Invalid Role
curl -X POST http://localhost:8000/webhooks/hris \
-H "Content-Type: application/json" \
-d '{
"event_id":"evt_invalid_role",
"event_type":"employee.hired",
"email":"bad@example.com",
"full_name":"Bad User",
"role":"unknown_role"
}'Response:
{
"event_id":"evt_invalid_role",
"status":"failed",
"error":"Unknown role: 'unknown_role'"
}Assumptions
Employee email addresses are unique.
Roles are predefined and managed internally.
Application provisioning is simulated through database records.
SQLite is sufficient for local execution and evaluation.
Duplicate webhook deliveries reuse the same event_id.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Aman3786/IT-Onboarding-Automator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server