Skip to main content
Glama

HR Assistant MCP Agent

An agentic HR automation system built on the Model Context Protocol (MCP), enabling Claude Desktop to autonomously handle HR workflows — employee onboarding, leave management, meeting scheduling, and IT/admin ticketing — through natural language.

Overview

This project exposes a set of HR operations as MCP tools that Claude Desktop can call directly. Instead of manually running each step of a process like onboarding, you can prompt Claude with something like "Onboard Priya as a Data Analyst under Manager E004", and the agent will orchestrate the full workflow: adding the employee to the HRMS, sending a welcome email, notifying the manager, raising equipment tickets, and scheduling an introductory meeting.

Related MCP server: HR-Assist

Features

  • Employee Management — add employees and fetch employee details by name

  • Leave Management — check leave balance, apply for leave, view leave history

  • Meeting Scheduling — schedule meetings between employees and managers

  • Ticketing — raise IT/admin tickets (laptop, ID card, equipment) for new hires

  • Email Notifications — send transactional emails via SMTP (Gmail)

  • Guided Onboarding Prompt — a built-in MCP prompt (onboard_new_employee) that chains all of the above into a single multi-step workflow

Architecture

Claude Desktop (MCP Client)
        │
        ▼
   MCP Server (src/server.py)
        │
 ┌──────┼───────┬──────────┬─────────────┐
 ▼      ▼       ▼          ▼             ▼
Employee  Leave  Ticket   Meeting    Email Sender
Manager   Manager Manager Manager    (SMTP)
 └──────────────┴──────────┴─────────────┘
              In-memory data store

Project Structure

├── hrms/
│   ├── employee_manager.py   # Employee CRUD and lookup
│   ├── leave_manager.py      # Leave balance, application, history
│   ├── meeting_manager.py    # Meeting scheduling
│   ├── ticket_manager.py     # IT/admin ticket creation
│   └── schemas.py            # Pydantic models for requests/responses
├── src/
│   ├── server.py             # MCP server + tool/prompt definitions
│   ├── email_sender.py       # SMTP email handler
│   └── utils.py              # Data seeding helpers
├── main.py
├── pyproject.toml
└── uv.lock

Available MCP Tools

Tool

Description

add_employee

Add a new employee to the system

get_employee_details

Look up an employee's details by name

send_email

Send an email notification

create_ticket

Raise a ticket for equipment/access needs

schedule_meeting

Schedule a meeting for an employee

get_leave_balance

Check an employee's remaining leave balance

apply_leave

Apply leave for an employee on given dates

get_leave_history

Retrieve an employee's leave history

MCP Prompt: onboard_new_employee(employee_name, manager_name) — chains the tools above into a complete onboarding workflow.

Tech Stack

  • Python 3.11+

  • MCP (mcp[cli]) with FastMCP

  • Pydantic for schema validation

  • SMTP (Gmail) for email delivery

  • uv for dependency management

Setup

1. Clone the repository

git clone https://github.com/sachink1712/HR-Assistant-MCP-Agent.git
cd HR-Assistant-MCP-Agent

2. Install dependencies

uv sync

3. Configure environment variables

Create a .env file in the project root:

CB_EMAIL=your_email@gmail.com
CB_EMAIL_PWD=your_app_password

Use a Gmail App Password, not your regular account password.

4. Connect to Claude Desktop

Add the server to your claude_desktop_config.json:

{
  "mcpServers": {
    "hr-assistant-agent": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/HR-Assistant-MCP-Agent/src", "run", "server.py"]
    }
  }
}

Restart Claude Desktop. The HR tools will now be available to Claude in your conversations.

Example Usage

"Onboard Shabnam Kumari as a Data Analyst under Manager Tony Sharma"

Claude will:

  1. Add the employee to the HRMS

  2. Send a welcome email with login credentials

  3. Notify the manager

  4. Raise tickets for laptop, ID card, and equipment

  5. Schedule an introductory meeting

License

MIT

Author

Sachin Kumar — AI Engineer, building agentic AI and MCP-based automation systems.

Available Tools

8 tools
add_employeeB
Add a new employee to the system.
Args:
    name: str
    manager_id: str
    email: str
Returns:
    str
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
emailYes
manager_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Add a new employee' and gives return type as str. It does not mention whether manager_id must reference an existing employee, whether email must be unique, whether permissions are required, or what the returned string represents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core purpose, and free of filler. The Args and Returns lines are structured simply, though they mostly restate schema information. It earns a high score for efficiency, but not a 5 because it omits useful detail while keeping the parameter block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create operation with no annotations and no detailed output schema, the description is too thin. It does not explain what manager_id refers to, whether the operation has side effects, what valid input values look like, or what the return value means. An agent would likely need to infer or discover critical details elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description merely repeats the parameter names and types from the schema without adding meaning. It does not clarify the semantics of manager_id, email uniqueness, or any constraints or relationships. The description fails to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: 'Add a new employee to the system.' This is specific enough to distinguish the tool from siblings like get_employee_details, apply_leave, or send_email, none of which perform employee creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this tool when adding a new employee. However, there is no explicit guidance about prerequisites, when not to use it, or how it compares to other tools. The instruction is clear but leaves selection context entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_leaveB
Apply leave for an employee.
Args:
    emp_id: str
    leave_dates: List[datetime]
Returns:
    str
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes
leave_datesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior, but it only says 'Apply leave' and gives a return type. It does not explain side effects (e.g., whether leave is booked immediately, requires approval, or checks balance), prerequisites, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the main purpose in the first sentence, with a clean docstring layout. It is not overly long, though the Args/Returns lines are largely redundant with the structured schema and output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-changing tool with no annotations, the description is too sparse: it omits context about leave-request rules, return-value semantics, and any validation or preconditions. The presence of an output schema offsets some need to describe return values, but behavioral context is still missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate, but the Args section merely repeats the schema's names and types without adding meaning. It does not explain what emp_id refers to, what date range is valid, or that leave_dates should be ISO-formatted strings, and the 'List[datetime]' type is potentially misleading given the schema's date-time string format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('Apply') and resource ('leave') and specifies the target ('for an employee'), making the tool's function immediately understandable and distinct from the read-oriented sibling tools like get_leave_balance and get_leave_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The action-oriented description implies this tool is for submitting a leave request, in contrast to sibling get_leave_* tools that retrieve data, so an agent can infer when to use it. However, it provides no explicit guidance, alternative names, or conditions for when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_ticketB
Create a ticket for an new employees to get a new laptop, id card, and other necessary equipment.
Args:
    emp_id: str
    item: str
    reason: str
Returns:
    str
ParametersJSON Schema
NameRequiredDescriptionDefault
itemYes
emp_idYes
reasonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits itself, but it only states that a ticket is created and that a string is returned. It does not mention side effects, persistence, permissions, or any follow-up actions, which matters for a mutating create operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded, and the Args/Returns block is compact and easy to scan. No unnecessary filler is present, though the grammar 'an new employees' is a minor defect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition is adequate for a simple three-parameter creation tool: it gives the purpose, the argument names and types, and the return type. However, it leaves parameter semantics largely unspecified and offers no comparison or routing guidance for the nearby sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needs to compensate, but it only repeats the parameter names and types alongside the examples 'laptop' and 'id card'. It does not clarify the expected format for emp_id, constraints on item, or what reason should contain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a ticket for new employees to request equipment such as a laptop and ID card, which distinguishes it from employee-management siblings like add_employee and leave tools. It uses a specific verb and resource, though it does not name an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended context is implied by 'for new employees' and the equipment examples, suggesting this is for onboarding-related ticket creation. No explicit guidance is given about when to use this tool instead of siblings like send_email or schedule_meeting, nor any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_employee_detailsC
Get the details of an employee by name.
Args:
    name: str
Returns:
    Dict[str, Any]
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits itself. It implies a read-only lookup and indicates a Dict return, but it does not state what happens if the employee is not found, if multiple employees share the same name, or whether lookup is case-sensitive/exact-match.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core sentence. The Args/Returns lines are somewhat redundant with the input schema and output schema, but they do not add meaningful bloat. Overall it is efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup tool with an output schema, the description is minimally viable: it states the action and parameter. However, it leaves important gaps around duplicate or missing employee names and does not position the tool against sibling employee-related tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needs to compensate for parameter meaning. It only restates that 'name' is a string and that lookup is by name, which duplicates the schema. It adds no details about name format, required specificity, or matching behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Get the details of an employee by name.' This is specific and identifies both the resource (employee details) and lookup method. It does not explicitly differentiate from sibling read tools like get_leave_balance or get_leave_history, but the tool name and description are unambiguous enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention that leave-related information should go through get_leave_balance or get_leave_history, nor does it provide any context for when get_employee_details is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_leave_balanceC
Get the leave balance of an employee.
Args:
    emp_id: str
Returns:
    str
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It only states that the tool gets a balance and returns a string; it does not disclose read-only guarantees, error behavior, what the string represents, or the effect of an invalid employee ID.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and follows an Args/Returns structure that is easy to scan. It contains a small amount of redundancy with the schema, but it is not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-style tool, the description is minimally sufficient: it states the purpose and the argument. However, it lacks sibling differentiation and edge-case behavior, which matters because an output schema exists but no guidance is given for selecting this tool over get_leave_history.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description repeats only the parameter name and type ('emp_id: str') without adding meaning. The phrase 'of an employee' lightly implies emp_id identifies an employee, but no format, source, or validation details are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb ('Get') and resource ('leave balance of an employee'), clearly identifying what the tool returns. It is distinguishable from siblings like get_leave_history and apply_leave, though it does not explicitly call out the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus sibling tools such as get_leave_history or apply_leave. The usage context must be inferred entirely from the tool name and the generic 'Get' phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_leave_historyB
Get the leave history of an employee.
Args:
    emp_id: str
Returns:
    str
ParametersJSON Schema
NameRequiredDescriptionDefault
emp_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. The verb 'Get' and 'Returns: str' make clear this is a read operation that returns a string, but the description does not explain output formatting, empty-result behavior, or any access requirements. For a simple getter this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the purpose sentence. The Args/Returns block is compact and conventional, though it partly duplicates schema information rather than adding new value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter retrieval tool, the description is minimally sufficient to understand the call shape, but it lacks usage context, parameter semantics, and behavioral details. With no annotations and no output schema shown beyond 'str', an agent gets only the bare minimum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to compensate by explaining emp_id, but it only repeats 'emp_id: str', which duplicates the schema's type information. No additional meaning, format, or example is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Get the leave history of an employee.' The word 'history' helps distinguish this from sibling tools like get_leave_balance and apply_leave, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus get_leave_balance or apply_leave. There are no prerequisites, exclusions, or alternative routing hints, so an agent must infer usage purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

schedule_meetingC
Schedule a meeting for an employee.
Args:
    emp_id: str
    meeting_dt: datetime
    topic: str
Returns:
    str
ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
emp_idYes
meeting_dtYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must shoulder the burden of behavioral disclosure. It implies a write operation ('schedule') but says nothing about side effects, permission requirements, validation of employee existence, availability checks, or what the returned string represents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core purpose in a single sentence. However, the Args/Returns block duplicates schema information and adds little value, slightly reducing the quality of the structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite its simplicity, the description lacks important contextual details an agent needs to invoke it correctly, such as the format of meeting_dt, how the meeting is created, and whether it is appropriate for a given user request. The return value is stated, and an output schema exists, but behavioral and usage context are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description's Args block only repeats the parameter names and Python types already present in the schema. It does not explain the meaning of emp_id, meeting_dt, or topic, nor any constraints such as date-time format or valid employee ID format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence 'Schedule a meeting for an employee' provides a specific verb and resource, making the tool's function unambiguous. The sibling tools (send_email, create_ticket, apply_leave) are clearly distinct in domain, so no confusion arises even without explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as create_ticket or apply_leave, nor any exclusions or prerequisites. The description only states what it does, leaving the agent to infer usage context from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailC
Send an email to an employee.
Args:
    to_email: str
    subject: str
    body: str
Returns:
    str
ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
subjectYes
to_emailYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description is the only source for behavioral disclosure. It only states that an email is sent and that the return type is str, but it does not disclose whether the action is irreversible, whether it has external side effects, whether permissions are needed, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is concise and front-loaded. However, the 'Args' and 'Returns' block largely duplicates the structured schema, adding little value and making the description slightly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool is simple, the description leaves important operational gaps: it does not say whether the recipient must be an existing employee, how the email address can be obtained, or what the returned string means. The existence of an output schema reduces the return-value burden, but it does not fill the missing usage and behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining parameter meaning. It merely repeats the parameter names and types already present in the schema (to_email, subject, body) without adding constraints, format expectations, or relationships between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly states a specific action (send) and resource (email), with the recipient scope being an employee. This is enough to distinguish the tool from siblings like get_leave_balance or create_ticket, although it does not explicitly discuss edge cases or alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided. The description does not mention prerequisites such as looking up an employee's email address, nor does it differentiate this from potentially similar workflows like creating a ticket or scheduling a meeting. The agent must infer usage entirely from the verb 'send' and the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 8 tool updatesv0.1.0
    • First observedadd_employee
    • First observedapply_leave
    • First observedcreate_ticket
    • First observedget_employee_details
    • First observedget_leave_balance
    • First observedget_leave_history
    • First observedschedule_meeting
    • First observedsend_email

TDQS

B3.2/5.0
Disambiguation5/5

Each tool maps to a distinct HR function: employee creation/retrieval, email, IT ticket, meeting scheduling, and leave operations. The leave tools are clearly separated into balance, application, and history, so there is little risk of an agent selecting the wrong one.

Naming Consistency4/5

Tool names mostly follow a consistent verb_noun snake_case pattern such as add_employee, get_leave_balance, and schedule_meeting. Minor inconsistency exists between add_employee and create_ticket, but the overall convention is predictable and readable.

Tool Count5/5

Eight tools is a well-scoped size for an HR assistant covering employee records, leave, meetings, email, and onboarding tickets. Each tool represents a meaningful workflow area without unnecessary overlap or bloat.

Completeness3/5

The set covers core employee and leave operations, but obvious gaps remain: there is no update or delete employee, no list employees, and no leave cancellation or approval workflow. These gaps are workable for basic scenarios but could cause failures in fuller HR processes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables employees to check leave balance, apply for leave, and view leave history through natural language using Claude Desktop.
    -
  • F
    license
    B
    quality
    C
    maintenance
    Agentic AI system that automates HR workflows like employee onboarding, enabling HR teams to streamline tasks through natural language interactions with Claude Desktop.
    12
    -

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/sachink1712/HR-Assistant-MCP-Agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server