HR-assist MCP server
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., "@HR-assist MCP serverOnboard John Doe as software engineer starting Monday"
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.
AI-powered HR automation using the Model Context Protocol (MCP) and Claude Desktop.
HR-Assist is an Agentic AI application that enables Claude Desktop to autonomously perform HR operations through MCP tool calling. The system demonstrates multi-step workflow orchestration by automating employee onboarding, leave management, meeting scheduling, ticket creation, and email notifications using natural language commands.
🌟 Key Highlights
🤖 Agentic AI workflow powered by MCP
🛠️ Modular MCP tool ecosystem for Claude Desktop
🔄 Multi-step autonomous task orchestration
📧 Automated email notifications
🎫 IT/Admin ticket automation
📅 Meeting scheduling
🌴 Leave management
🧩 Modular service-oriented architecture
Portfolio Project: This repository was built to demonstrate practical Agentic AI development, MCP server implementation, workflow automation, and tool-calling capabilities for GenAI and AI/ML Engineering roles.
Related MCP server: HR-Assist
📑 Table of Contents
🏗️ System Architecture
flowchart LR
U[User] --> C[Claude Desktop]
C --> M[MCP Server]
M --> E[Employee Manager]
M --> L[Leave Manager]
M --> T[Ticket Manager]
M --> ME[Meeting Manager]
M --> EM[Email Service]
E --> D[(In-Memory Data)]
L --> D
T --> D
ME --> D
EM --> SMTP[SMTP Email Server]Architecture Overview
The project follows a modular service-oriented architecture where Claude Desktop communicates with the MCP server through the Model Context Protocol (MCP). The server exposes multiple HR tools that operate on independent service modules responsible for employee management, leave tracking, meetings, ticketing, and email notifications.
For simplicity and portability, the application uses in-memory data storage seeded with sample employee records at startup. This allows the entire onboarding workflow to be demonstrated without requiring external databases or infrastructure.
🤖 Agent Workflow
The onboarding process is executed as a multi-step AI workflow, where Claude Desktop interprets the user's request, selects the appropriate MCP tools, and coordinates them to complete the entire onboarding process autonomously.
flowchart TD
A[Natural Language Request]
--> B[Claude Desktop]
B --> C[MCP Server]
C --> D{Task Planning}
D --> E[Add Employee]
E --> F[Generate Employee Credentials]
F --> G[Send Welcome Email]
G --> H[Notify Manager]
H --> I[Create IT & Admin Tickets]
I --> J[Schedule Introductory Meeting]
J --> K[Return Final Summary]Workflow Explanation
Unlike traditional automation scripts that execute predefined functions, the AI agent dynamically determines which MCP tools to invoke based on the user's natural language request.
For a single onboarding request, the agent autonomously:
Understands the user's intent.
Plans the sequence of required actions.
Invokes the appropriate MCP tools.
Passes relevant context between tool calls.
Executes the onboarding workflow.
Returns a consolidated summary after all tasks are completed.
This demonstrates tool calling, workflow orchestration, context propagation, and Agentic AI reasoning using the Model Context Protocol (MCP).
✨ Features
🤖 AI-Powered Employee Onboarding
Automate the complete onboarding process using a single natural language request.
Add new employees to the HRMS
Generate employee credentials
Send personalized welcome emails
Notify the reporting manager
Create onboarding tickets (Laptop, ID Card, etc.)
Schedule introductory meetings
🧑💼 Employee Management
Manage employee information through MCP tools.
Retrieve employee details
View employee profiles
Access manager and contact information
🌴 Leave Management
Simplify leave tracking and requests.
Check available leave balance
View leave history
Apply for leave
📅 Meeting Management
Coordinate employee meetings directly from Claude Desktop.
Schedule meetings
View upcoming meetings
Cancel existing meetings
🎫 Ticket Management
Automate IT and administrative requests.
Create onboarding tickets
Track existing tickets
Update ticket status
📧 Email Automation
Keep employees and managers informed automatically.
Welcome emails
Manager notifications
General email communication
⚡ Natural Language Interface
Interact with the HR system using plain English instead of manually invoking individual tools.
Example:
"Onboard Karan Mehta under Vikram Singh."
"Schedule a meeting for Rahul Sharma."
"How many leaves does Priya Verma have remaining?"🧠 AI Concepts Demonstrated
This project showcases several core concepts used in modern Generative AI and Agentic AI applications.
Concept | Implementation |
Model Context Protocol (MCP) | Exposes HR operations as MCP tools that Claude Desktop can discover and invoke. |
Agentic AI | Executes complete HR workflows from a single natural language request. |
Tool Calling | Enables the LLM to invoke structured backend tools instead of generating text alone. |
Workflow Orchestration | Coordinates multiple dependent tasks such as employee creation, email notifications, ticket generation, and meeting scheduling. |
Context Propagation | Passes employee information between successive tool calls during workflow execution. |
Natural Language Interface | Allows users to interact with the HR system using conversational prompts instead of traditional UI forms. |
Function-Based Tool Design | Each HR operation is exposed as an independent, reusable MCP tool. |
Service-Oriented Architecture | Business logic is separated into modular services for maintainability and scalability. |
Prompt-Driven Automation | Complex workflows are initiated through a single user prompt interpreted by Claude Desktop. |
Email Automation | Integrates automated notifications into the onboarding workflow. |
Why MCP?
Instead of building custom APIs or tightly coupling the AI model with backend services, this project leverages the Model Context Protocol (MCP) to expose HR functionality as standardized tools.
This enables Claude Desktop to:
Discover available tools automatically
Invoke tools securely through a standardized interface
Chain multiple tool calls into autonomous workflows
Extend the system with new capabilities without modifying the AI client
This design demonstrates how MCP simplifies the development of modular, extensible, and interoperable AI applications.
🛠️ Available MCP Tools
The MCP server exposes a collection of specialized tools that Claude Desktop can invoke to perform HR operations. Each tool is designed to handle a single responsibility, making the system modular, reusable, and easy to extend.
Category | Tool | Description |
👤 Employee Management |
| Retrieve an employee's ID, email, manager, and profile information. |
👤 Employee Management |
| Register a new employee in the HRMS. |
🌴 Leave Management |
| Check an employee's remaining leave balance. |
🌴 Leave Management |
| View an employee's historical leave records. |
🌴 Leave Management |
| Submit a leave request for specified dates. |
📅 Meeting Management |
| Schedule a meeting between employees. |
📅 Meeting Management |
| Cancel an existing meeting. |
📅 Meeting Management |
| Retrieve all scheduled meetings for an employee. |
🎫 Ticket Management |
| Raise IT or administrative requests such as laptops or ID cards. |
🎫 Ticket Management |
| Retrieve all tickets associated with an employee. |
🎫 Ticket Management |
| Update the status of an existing ticket. |
📧 Communication |
| Send automated email notifications. |
Example Tool Chain
A single onboarding request triggers multiple MCP tools behind the scenes.
User Prompt
│
▼
add_employee
│
▼
send_email
│
▼
create_ticket
│
▼
create_ticket
│
▼
schedule_meeting
│
▼
Return Final SummaryThis demonstrates how Claude Desktop can orchestrate multiple independent MCP tools to complete a complex HR workflow from a single natural language request.
🛠️ Tech Stack
Category | Technologies |
Programming Language | Python 3.11+ |
AI Framework | Model Context Protocol (MCP) |
AI Client | Claude Desktop |
Package Manager | uv |
Communication | SMTP (Email Notifications) |
Data Storage | In-Memory Data Structures |
Configuration | JSON |
Architecture | Modular Service-Oriented Design |
⚙️ Installation
Prerequisites
Before getting started, ensure you have the following installed:
Python 3.11+
uv package manager
Claude Desktop
A valid email account with an App Password (required for sending automated emails)
1. Clone the Repository
git clone <repository-url>
cd hr-assist2. Install Dependencies
Initialize the project:
uv initInstall the required MCP packages:
uv add "mcp[cli]"3. Configure Claude Desktop
Locate your claude_desktop_config.json file and add the following MCP server configuration:
{
"mcpServers": {
"hr-assist": {
"command": "<YOUR_UV_EXECUTABLE_PATH>",
"args": [
"--directory",
"<YOUR_PROJECT_DIRECTORY_PATH>",
"run",
"server.py"
],
"env": {
"EMAIL": "<YOUR_HOST_EMAIL>",
"EMAIL_PASS": "<YOUR_APP_PASSWORD>"
}
}
}
}Configuration Variables
Variable | Description |
| Absolute path to the |
| Absolute path to this project |
| Email address used to send automated notifications |
| App Password for your email account (recommended instead of your account password) |
4. Restart Claude Desktop
After saving the configuration:
Close Claude Desktop.
Reopen Claude Desktop.
Verify that the HR-Assist MCP Server appears in the available connectors.
💡 Note: Claude Desktop may continue running in the background even after closing the application. If your MCP server doesn't appear after updating the configuration, open Task Manager, end all Claude processes, and then launch Claude Desktop again. This ensures Claude reloads the updated MCP configuration.
🚀 Usage
Once the MCP server is configured and Claude Desktop is running, you can interact with the HR system using natural language.
Example Prompts
Onboard a New Employee
Add Karan Mehta who will report to Vikram Singh.Check Leave Balance
How many leaves does Rahul Sharma have remaining?Apply for Leave
Apply leave for Priya Verma from August 5 to August 7.Schedule a Meeting
Schedule a one-on-one meeting between Rahul Sharma and Vikram Singh tomorrow at 10 AM.Create an IT Ticket
Create a laptop replacement ticket for Karan Mehta.The AI agent automatically selects the appropriate MCP tools and executes the requested workflow without requiring users to manually invoke individual tools.
👨💻 About Me
Hi, I'm Keshav Sharma 👋
I'm an aspiring Generative AI & AI/ML Engineer passionate about building intelligent systems using LLMs, Agentic AI, Model Context Protocol (MCP), Machine Learning, and Deep Learning.
I enjoy transforming AI concepts into practical applications by developing projects focused on workflow automation, intelligent agents, computer vision, and natural language processing.
This repository is part of my portfolio, showcasing my approach to designing modular, production-inspired AI systems that combine software engineering best practices with modern AI technologies.
🔗 Connect With Me
💻 GitHub: https://github.com/yash-s27
📧 Email: yash27sharma10@gmail.com
If you have feedback, collaboration ideas, or opportunities related to AI/ML or Generative AI, I'd love to connect!
📄 License
This project is licensed under the MIT License. See the LICENSE file for details.
Available Tools
12 toolsadd_employeeC
Add new employee to the hrms system
:param emp_name :takes new employee name
:param manager_id :takes the manager id
returns: Confirmation message| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| emp_name | Yes | ||
| manager_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must disclose traits. It confirms a write operation ('add') and a confirmation response, but does not mention any side effects, required permissions, or constraints (e.g., duplicate names, max capacity).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the action, but the redundant ':param' lines add little value given schema. Could be more concise by removing the docstring and integrating parameter hints naturally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (context signal), the description only says 'returns: Confirmation message', which is vague. It does not explain error states, success indicators, or what the confirmation contains. For a creation tool with three required params, more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must add meaning. The docstring-style parameter notes merely restate the names ('emp_name: takes new employee name') without adding value like format, constraints, or expected values. The required 'email' parameter is not even mentioned in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('add new employee') and the target system ('hrms system'). No direct sibling tool creates employees, so differentiation is not needed, but the purpose is specific and immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus any alternative, or what prerequisites (e.g., admin rights) are needed. The description only states the action without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_leavesB
Apply for leaves for the employee
:param emp_id: ID of an employee
:leave_dates : List of leave Dates
:returns : Leave application status message| Name | Required | Description | Default |
|---|---|---|---|
| emp_id | Yes | ||
| leave_dates | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only mentions applying leaves and returning a status message, lacking disclosure of side effects, auth needs, or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but uses non-standard colon notation for parameters. It could be more structured and formal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of leave applications, the description lacks details on date format, error conditions, or approval processes. Output schema exists but doesn't compensate fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds inline parameter docs ('emp_id: ID of an employee', 'leave_dates: List of leave Dates'), providing meaning beyond the schema's titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Apply for leaves for the employee' with parameters, clearly indicating the action and resource. It distinguishes from sibling tools like get_employee_leaves 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives or any prerequisites. Sibling tools for different leave operations exist, so such context would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_meetingsC
Cnacel a scheduled meeting of an employee
:param emp_id: ID of an employee
:meeting_date : Dateand time of the meeting in python datetime format
:topic : Topic of the meeting(optional)
returns :Confirmation Message| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| emp_id | Yes | ||
| meeting_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It only mentions the action and return of a confirmation message, lacking details on side effects, idempotency, error states, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief but contains a typo ('Cnacel') and uses a docstring style with colons that may not be ideal for an AI. It is minimally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and a simple mutation tool, the description lacks completeness: no error handling, return value details, or relation to sibling tools like schedule_meeting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description's parameter info contradicts the schema: it marks 'topic' as optional while schema requires it. It also misrepresents 'meeting_date' format (python datetime vs schema's date-time string). Schema coverage is 0%, so description should compensate but instead introduces errors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel' and the resource 'a scheduled meeting of an employee', distinguishing it from sibling tools like schedule_meeting or get_meetings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, prerequisites (e.g., meeting existence), or conditions under which cancellation is valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketC
Create ticket for buying items for the employee
:param emp_name: Nane of the employee
:param item: Item Requested(example: Laptop or ID)
:param reason: reason for the request
returns : Confiramtion of Ticket Genrated| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| emp_id | Yes | ||
| reason | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description carries the full burden. It does not disclose behavioral traits like success/failure behavior, authentication needs, or side effects. The return description is vague ('Confiramtion of Ticket Genrated').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short (two sentences plus param list), but contains typos ('Nane', 'Confiramtion', 'Genrated'). The purpose is front-loaded, but the param list largely repeats the schema without adding much value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; the return description is vague. Missing context about prerequisites (e.g., employee existence) and how the ticket creation fits into the larger toolset. With 3 required params and simple types, completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. However, description mentions 'emp_name' while schema has 'emp_id', causing mismatch. Explanations for params are minimal and lack examples or format details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create ticket for buying items for the employee', specifying the verb (create) and resource (ticket for buying items). It distinguishes from sibling tools like list_ticket, update_ticket_status, add_employee, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, such as whether the employee must already exist, or contrast with other ticket-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_employee_detailsB
Get the employee details by name
:param name: Name of the employee
returns employee ID or Manager ID| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It mentions the output (employee ID or Manager ID) but does not specify side effects, error handling for missing employees, or whether it is read-only. The ambiguous 'or' in output leaves uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a single sentence and a param line. It is front-loaded with the purpose. However, the structure could be improved by separating the return type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one parameter and an output schema, the description is partially complete. It explains the input and basic output, but lacks details like employee details fields (beyond ID/Manager ID), behavior for non-existent names, and edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes a `:param name:` line explaining the parameter's meaning, adding value beyond the schema which only provides type and title. With 0% schema coverage, this is helpful. However, it could be more detailed (e.g., format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves employee details by name, with a specific verb ('Get') and resource ('employee details'). Among sibling tools, it is distinct as a retrieval operation, though no explicit differentiation is provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like add_employee or list_ticket. The description does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_employee_leavesC
Get the leave balance of an Employee
:param emp_id: Id of an employee
:retuns : Remaning or the total number of leaves employee have or left
| Name | Required | Description | Default |
|---|---|---|---|
| emp_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It implies a read operation ('Get') but does not explicitly state safety, idempotency, or any behavioral traits. The return note is confusing ('Remaning or the total number of leaves employee have or left') and lacks clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, but it is poorly structured with a mix of prose and docstring-style comments. The return note has typos ('Remaning', 'retuns') which detract from clarity. It is concise but not well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an existing output schema, the description covers the basic purpose. However, it lacks usage guidance, sibling differentiation, and a clear explanation of the return value. The return note attempts to describe the output but is confusing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It adds a docstring for emp_id: 'Id of an employee', which provides basic context beyond the schema's 'Emp Id' property. However, this is minimal and does not explain format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get the leave balance of an Employee', which clearly identifies the verb (Get) and resource (leave balance). However, it does not distinguish this tool from the sibling 'get_leave_history', which likely retrieves similar leave data, so it lacks differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like 'get_leave_history' or 'apply_leaves'. There is no mention of prerequisites, context, or 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.
get_leave_historyC
Get the history of leaves of an Employee
:param emp_id: Id of an Employee
:returns : Leaves history messsage| Name | Required | Description | Default |
|---|---|---|---|
| emp_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full behavioral disclosure. It only states returns a message, not whether it's read-only, requires auth, or scope of data. Minimal info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief but includes unnecessary colons and formatting. Could be more focused, but it's not overly long. Adequate but not efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity and existence of an output schema, the description missing details about filtering or history scope. Does not differentiate from sibling 'get_employee_leaves' well enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds ':param emp_id: Id of an Employee', which is slightly more than the schema's title 'Emp Id'. However, it's still minimal and obvious.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the history of leaves of an Employee', specifying the verb and resource. It distinguishes from sibling 'get_employee_leaves' by indicating 'history', implying past records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives like 'get_employee_leaves' or 'apply_leaves'. The description does not mention context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meetingsA
Get the list of meetings scheduled for employee
:param emp_id: ID of the employee
:returns: List of the Meetings| Name | Required | Description | Default |
|---|---|---|---|
| emp_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states it returns a list of meetings, without disclosing side effects, error behavior, or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using a single sentence plus a docstring, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values. However, it lacks context on error handling and usage constraints, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds value by documenting the parameter with ':param emp_id: ID of the employee', clarifying its purpose beyond the schema's title 'Emp Id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'list of meetings scheduled for employee', effectively distinguishing it from sibling tools like schedule_meeting (create) and cancel_meetings (delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives; it relies on implied context. The description does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticketC
Get the list of the tickets
:param emp_id: Id of employee
:param status: status of the ticket(optional)
:returns : list of the tickets| Name | Required | Description | Default |
|---|---|---|---|
| emp_id | Yes | ||
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states it returns a list of tickets, but omits side effects, authentication needs, rate limits, or any schema details. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences plus param docs) and front-loaded with purpose. The docstring format is slightly verbose but acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and a simple list operation, the description is too minimal. It lacks details on ticket fields, pagination, ordering, or any filtering beyond emp_id and status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds parameter meaning via docstring comments for emp_id and status. However, it contradicts the input schema: description marks status as optional, but schema requires it. Also, schema coverage is 0%, so description partially compensates but error reduces score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the list of the tickets' with a verb and resource. However, it does not distinguish from sibling tools like 'create_ticket' or 'get_employee_details', and the specific scope (tickets for a given employee) is implicit via parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'create_ticket' or 'update_ticket_status'. There are no explicit conditions, prerequisites, or exclusions.
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,
:param emp_id: ID of the employee
:param meeting_datetime : Date and time of the meeting in python datetime format
:param topic: Topic of the meeting
:returns : Confirmation Message
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| emp_id | Yes | ||
| meeting_datetime | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral context. It states 'returns Confirmation Message' but lacks details about side effects (e.g., conflict checking, notifications), permissions, or constraints. Insufficient for a scheduling action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is short but uses Python docstring format with ':param' syntax, which is unusual for an MCP tool and may confuse AI agents. No wasted words, but formatting is suboptimal for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters), the description covers basic action but lacks details about edge cases (e.g., invalid employee, past dates). Output schema exists but is not described beyond a vague 'Confirmation Message'. Incomplete for robust agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description adds minimal meaning: clarifies emp_id as 'ID of the employee', meeting_datetime format as 'python datetime format', and topic as 'Topic of the meeting'. This provides some semantics beyond the schema but is not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Schedule a meeting for an employee', which is a specific verb and resource. However, it does not differentiate from sibling tools like get_meetings or cancel_meetings, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites, when not to use, or how it differs from other meeting-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailD
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| html | No | ||
| subject | Yes | ||
| to_email | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticket_statusC
Update the status of the ticket
:param emp_id: Id od the employee
:status : Status od the ticket
returns : Confirmation message | Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| ticket_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'returns : Confirmation message', which is insufficient. No disclosure of idempotency, destructive nature, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but includes poorly formatted param lines with typos. It is not well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the description is very incomplete. It lacks details on response, required permissions, and error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description mentions a non-existent param 'emp_id' and provides no explanation for 'ticket_id' or 'status'. No guidance on valid status values or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update the status of the ticket', which is a specific verb+resource pair. It distinguishes from sibling tools like create_ticket and list_ticket. However, the presence of an incorrect param 'emp_id' (not in schema) slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No context about prerequisites, side effects, or 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v0.1.0- First observed
add_employee - First observed
apply_leaves - First observed
cancel_meetings - First observed
create_ticket - First observed
get_employee_details - First observed
get_employee_leaves - First observed
get_leave_history - First observed
get_meetings - First observed
list_ticket - First observed
schedule_meeting - First observed
send_email - First observed
update_ticket_status
TDQS
Tools cover distinct HR areas (employee info, tickets, meetings, leaves), with clear purposes. The only ambiguity is 'send_email', which lacks description and could overlap with notifications, but overall tools are distinct.
All tool names follow a consistent verb_noun pattern (e.g., add_employee, get_meetings, create_ticket). Minor singular/plural variations (e.g., get_meetings vs schedule_meeting) do not detract from overall coherence.
With 12 tools covering employee management, ticketing, meetings, and leave handling, the count is well-scoped for an HR assistant. No redundant or excessive tools.
The tool surface covers key workflows but has notable gaps: no employee update/delete, no ticket deletion, no meeting update, and no leave cancellation. These missing operations could cause agent failures in some scenarios.
Maintenance
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
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Build and manage AI-native customer support agents from Claude or any MCP client.
Let AI agents query data and act across all your business apps via MCP.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP-powered HR management system that automates employee onboarding, leave tracking, meeting scheduling, and IT ticketing. It allows users to manage organizational workflows and administrative tasks through natural language interactions with Claude.2-
- AlicenseCqualityDmaintenanceAutomates HR workflows such as employee onboarding, leave management, and ticket tracking through natural language prompts in Claude Desktop.12MIT
- FlicenseNot gradedqualityCmaintenanceEnables HR teams to automate employee onboarding workflows through an Agentic AI system integrated with Claude Desktop.1-
- FlicenseCqualityCmaintenanceAgentic HR assistant providing employee, leave, meeting, ticket, and email tools over the Model Context Protocol, designed to automate onboarding workflows via an MCP client such as Claude Desktop.14-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/yash-s27/HR-assist-MCP-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server