HR-Assist
# š¤ HR-Assist ā Agentic AI HR Helpdesk
**HR-Assist** is an Agentic AI system that helps HR teams automate routine workflows using Claude Desktop as the MCP client and a custom Python MCP server as the backend.
This project demonstrates end-to-end automation of the **employee onboarding process** ā tasks that typically require multiple manual steps are handled by the AI agent in a single prompt.
---
## ⨠What It Does
| Task | Automated? |
|---|---|
| Add employee to HRMS | ā
|
| Send welcome email with credentials | ā
|
| Notify the manager | ā
|
| Raise tickets for laptop, ID card & equipment | ā
|
| Schedule introductory meeting | ā
|
| Leave management | ā
|
| Ticket tracking & updates | ā
|
---
## šļø Architecture
```
āāāāāāāāāāāāāāāāāāāāāāā MCP Protocol āāāāāāāāāāāāāāāāāāāāāāā
ā ā āāāāāāāāāāāāāāāāāāāāāāāāāāāŗ ā ā
ā Claude Desktop ā ā HR-Assist Server ā
ā (MCP Client) ā ā (Python + uv) ā
ā ā ā ā
āāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāā
ā¼ ā¼ ā¼
employee_manager leave_manager ticket_manager
meeting_manager schemas utils
```
- **MCP Client** ā Claude Desktop
- **MCP Server** ā This codebase (`server.py` + `hrms/` modules)
- **Email** ā SMTP via Gmail App Password
---
## š Project Structure
```
HR_helpdesk/
ā
āāā hrms/
ā āāā __init__.py
ā āāā employee_manager.py # Add & fetch employee logic
ā āāā leave_manager.py # Leave apply, balance, history
ā āāā meeting_manager.py # Schedule & fetch meetings
ā āāā ticket_manager.py # Create & update tickets
ā āāā schemas.py # Pydantic data models
ā
āāā server.py # MCP server entry point
āāā utils.py # Shared utility functions
āāā emails.py # Email sending logic (SMTP)
āāā pyproject.toml # Project config (uv)
āāā sample.env # Environment variable template
āāā README.md
```
---
## āļø Setup Instructions
### Prerequisites
- [Claude Desktop](https://claude.ai/download) installed
- [uv](https://docs.astral.sh/uv/getting-started/installation/) installed
- Gmail account with [App Password](https://myaccount.google.com/apppasswords) enabled
---
### 1. Clone the Repository
```bash
git clone https://github.com/saibalajijammu/HR_helpdesk.git
cd HR_helpdesk
```
### 2. Install Dependencies
```bash
uv init
uv add mcp[cli]
```
### 3. Set Up Environment Variables
```bash
cp sample.env .env
```
Edit `.env` and fill in:
```
CB_EMAIL=your_email@gmail.com
CB_EMAIL_PWD=your_gmail_app_password
```
### 4. Configure Claude Desktop
Open your `claude_desktop_config.json` file and add the following:
> **Location of config file:**
> - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
> - Mac: `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"hr-assist": {
"command": "C:\\Users\\<your-username>\\.local\\bin\\uv",
"args": [
"--directory",
"<full-path-to-project>\\HR_helpdesk",
"run",
"server.py"
],
"env": {
"CB_EMAIL": "YOUR_EMAIL",
"CB_EMAIL_PWD": "YOUR_APP_PASSWORD"
}
}
}
}
```
> Replace `<your-username>` and `<full-path-to-project>` with your actual values.
### 5. Restart Claude Desktop
After saving the config, fully restart Claude Desktop. You should see **hr-assist** appear as a connected MCP server.
---
## š¬ Usage
### Option 1 ā Quick Onboarding via UI
1. Click the **`+`** icon in Claude Desktop
2. Select **`Add from hr-assist`**
3. Fill in the employee details when prompted
### Option 2 ā Custom Prompt (Recommended)
Just type a natural language prompt like:
```
Onboard a new employee named Priya Mehta under manager Raj Kumar.
```
The agent will automatically:
- ā
Add her to the HRMS
- ā
Send a welcome email
- ā
Notify her manager
- ā
Raise tickets for laptop, ID card & equipment
- ā
Schedule an intro meeting
---
## š Environment Variables
| Variable | Description |
|---|---|
| `CB_EMAIL` | Your Gmail address used for sending emails |
| `CB_EMAIL_PWD` | Gmail App Password (not your regular password) |
---
## š§° Tech Stack
| Component | Technology |
|---|---|
| AI Model | Claude (Anthropic) |
| MCP Client | Claude Desktop |
| MCP Server | Python + `mcp[cli]` |
| Package Manager | `uv` |
| Email | SMTP (Gmail) |
| Data Validation | Pydantic (`schemas.py`) |
---
## š¤ Contributing
Pull requests are welcome! For major changes, please open an issue first to discuss what you'd like to change.
---
## š License
This project is licensed under the [MIT License](LICENSE).
---
<p align="center">Built with š§ by <a href="https://github.com/saibalajijammu">Saibalaji Jammu</a></p>
TDQS
Scored across 12 tools
Each tool targets a distinct HR function: employee details, email, ticket lifecycle, meeting lifecycle, and leave management. Despite some overlapping resource types (e.g., tickets, meetings), the actions are clearly different and descriptions remove ambiguity.
Tool names mostly follow a snake_case verb_noun pattern, but there are inconsistencies: 'get_meetings' and 'list_tickets' both retrieve lists yet use different verbs, while 'add_employee' and 'create_ticket' both indicate creation. This mixed convention, though readable, is not fully predictable.
12 tools is well-scoped for an HR assistant covering employee, ticket, meeting, and leave management. Each tool earns its place, and the count is within the ideal range for a domain-specific server.
The set covers core actions (create, read, some update/delete) for each subdomain, but notable gaps exist: no employee update/delete, no meeting reschedule, and no leave cancellation. These missing lifecycle operations are significant but not severe enough to render the server unusable.