employee-mcp-server
Provides tools for interacting with a MySQL database to manage employee records, including listing employees, searching by name, filtering by department, adding new employees, and finding the highest salary.
Click on "Deploy 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., "@employee-mcp-serverWho has the highest salary?"
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.
employee-mcp-server
A Node.js MCP (Model Context Protocol) server that connects Claude to a MySQL employees database, exposing tools to list, search, add, and analyze employee records.
Features list_employees — returns all employees search_employee — find employees by name (partial match) employees_by_department — filter employees by department add_employee — insert a new employee (name, department, salary) highest_salary — returns the highest-paid employee Tech Stack Node.js (ES modules) @modelcontextprotocol/sdk — MCP server implementation mysql2 — MySQL driver zod — input schema validation dotenv — local environment variable loading Project Structure employee-mcp/ ├── index.js # MCP server: defines and registers the 5 tools ├── db.js # MySQL connection pool ├── manifest.json # Desktop Extension (.mcpb) manifest ├── package.json # Dependencies ├── .env # Local DB credentials (not committed) └── .gitignore Setup Install dependencies: bash npm install Create a .env file in the project root: DB_HOST=localhost DB_USER=root DB_PASSWORD=your_password DB_NAME=company Run the server directly (for testing): bash node index.js Using with Claude Desktop
This project is packaged as a Desktop Extension (.mcpb) for one-click install:
bash npm install -g @anthropic-ai/mcpb npm install --production mcpb validate manifest.json mcpb pack .
Then in Claude Desktop: Settings → Extensions → Advanced settings → Extension Developer → Install Extension…, select the generated .mcpb file, and enter your MySQL credentials in the setup screen.
Example Prompts Prompt Tool Called "List all employees" list_employees "Search for an employee named Mahesh" search_employee "Show employees in the Engineering department" employees_by_department "Add a new employee named Mahesh Khatal in Engineering with salary 120000" add_employee "Who has the highest salary?" highest_salary Notes .env and node_modules/ are excluded via .gitignore and never committed. Full build walkthrough and debugging notes available in the accompanying project documentation.
Available Tools
5 toolsadd_employeeAdd EmployeeC
Adds a new employee
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| salary | Yes | ||
| department | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral details like permissions, side effects, or idempotency. It merely says 'Adds a new employee,' which reveals nothing about consequences or requirements, similar to the low-scoring update_drive example.
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 a single concise sentence that avoids bloat, but it is under-specified. It earns its place as a basic purpose statement, yet it lacks the substance needed for a fully effective tool description, so it's not particularly well-rounded.
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 three required parameters, no annotations, and no output schema, the description is woefully incomplete. It provides no information about input expectations, return values, or edge cases, leaving the agent without critical context for correct 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?
The input schema has 0% description coverage, and the description does not mention any of the three required parameters (name, department, salary). It fails to compensate for the lack of schema descriptions, leaving parameter meaning completely unexplained.
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 tool adds a new employee, with a specific verb and resource, which distinguishes it from the sibling tools that list, search, or compute. However, it offers no additional specifics beyond the action, so it's not a 5.
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 gives no guidance on when to use this tool versus the alternatives. It does not mention any exclusions, prerequisites, or contexts where another sibling would be more appropriate, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
employees_by_departmentEmployees By DepartmentB
Returns employees from one department
| Name | Required | Description | Default |
|---|---|---|---|
| department | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to rely on, so the description carries the full burden of behavioral disclosure. It only states the basic read operation but does not disclose order, pagination, error behavior, permissions, or whether the result is limited to active employees. Minimal behavioral context is provided.
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 a single, tightly worded sentence that directly states the function. There is no redundant information or fluff. For a simple tool, this is appropriately concise.
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 lack of annotations and output schema, the description should provide more context. It does not cover usage guidelines, parameter semantics, or return details. While the tool is simple, the absence of any guidance on how it relates to sibling tools or handles varying inputs makes it incomplete.
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 input schema has 0% description coverage, and the tool description provides only minimal compensation. It implies that the 'department' parameter is the department to filter by, but does not specify whether it is an ID, name, code, or what values are accepted. No format or edge-case behavior is explained.
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 uses a specific verb ('Returns') and resource ('employees') with a scope ('from one department'). This clearly distinguishes it from siblings like list_employees (which would return all) and search_employee (which likely searches by other criteria).
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 given on when to use this tool versus the sibling tools. The description does not mention alternatives, prerequisites, or any context that would help an agent decide between 'employees_by_department', 'list_employees', and 'search_employee'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
highest_salaryHighest SalaryA
Returns highest paid employee
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 merely restates the tool's name with no details about tie-breaking, ordering, return format, or edge cases. This adds no insight beyond what the name already conveys.
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 a single sentence, concise and to the point, with no unnecessary words. It conveys the essential information efficiently.
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 simplicity (no params, no output schema), the description is minimally adequate. However, it does not clarify tie-handling, empty-result behavior, or the structure of the returned employee object, which could be important in 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 tool has zero parameters, so the input schema is fully covered by default. The description adds no parameter information, but the baseline for zero parameters is 4, which is appropriate.
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 'Returns highest paid employee' clearly states the action (returns) and the target resource (highest paid employee), distinguishing it from siblings like list_employees, search_employee, employees_by_department, and add_employee.
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 purpose implies when to use this tool (when you need the top-paid employee), but there's no explicit guidance on when to prefer it over alternatives like list_employees or employees_by_department. The usage context is clear from the description, but exclusions or alternatives are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_employeesList EmployeesA
Returns all employees
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic return scope ('all employees') but does not mention potential issues like pagination, ordering, authentication, or whether the operation is read-only. The lack of any side-effect or safety information is a notable gap.
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 a single, focused sentence that conveys the essential purpose without any filler. Every word earns its place, making it highly concise and easy to parse.
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 list tool with no parameters and no output schema, the description is minimally adequate. However, it does not explain the structure of the returned employee objects or any sorting behavior, which could matter in practice. Given the lack of annotations and output schema, a bit more detail would improve completeness.
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 tool has zero parameters, so the schema provides no parameter details. The description adds meaning by clarifying that the tool returns 'all' employees, implying no filtering or pagination controls. This is useful context beyond the empty schema, justifying the baseline of 4.
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 'Returns all employees' uses a specific verb ('Returns') and resource ('employees') with an explicit scope ('all'). This clearly distinguishes it from sibling tools like search_employee (filtered search) and highest_salary (aggregate).
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. While the sibling names suggest usage contexts, the description itself does not mention any exclusions or alternatives, leaving the AI agent without explicit decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_employeeSearch EmployeeB
Find employee by name
| Name | Required | Description | Default |
|---|---|---|---|
| name | 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 the basic action without disclosing behaviors such as handling multiple matches, not-found cases, or output format.
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 a single concise sentence that is front-loaded with the action and target. Every word earns its place.
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 lack of annotations and output schema, the description is incomplete. It does not explain what the search returns, whether matches are exact or partial, or what happens if no employee is found.
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 only parameter 'name' is self-explanatory, and the description reiterates it without adding extra semantics like case sensitivity, partial matching, or format requirements.
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 uses a clear verb 'Find' and specifies the resource 'employee' with the search criterion 'name'. It clearly distinguishes from siblings like list_employees (list all) and employees_by_department (filter by department).
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 usage context is implied: this tool is for finding an employee by name. However, there is no explicit mention of when to use it over alternatives, or any exclusions or conditions.
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.
5 tool updates
v1.0.0- First observed
add_employee - First observed
employees_by_department - First observed
highest_salary - First observed
list_employees - First observed
search_employee
TDQS
Scored across 5 tools
Each tool has a clear purpose: list all, search by name, filter by department, add, and find highest salary. While search and department filtering overlap with listing, the descriptions clarify specific query intents, so ambiguity is minimal.
Tool names follow mixed conventions: list_employees, search_employee, and add_employee use verb_noun, but employees_by_department and highest_salary do not follow that pattern. The names are still readable and descriptive, but not fully consistent.
With 5 tools, the server is well-scoped for employee management. Each tool covers a distinct need without excessive fragmentation or bloat, fitting comfortably in the ideal range.
Provides read and create operations (list, search, department filter, add, highest salary) but lacks update and delete operations. This is a notable gap for a full employee management lifecycle.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- mcp-serverOAuthio.klokin
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseCqualityDmaintenanceAn MCP server that enables MySQL database integration with Claude. You can execute SQL queries and manage database connections.29MIT
- AlicenseBqualityDmaintenanceMCP server that allows Claude AI to interact directly with MySQL databases, enabling query execution and table information retrieval through natural language.12 npm4MIT
- AlicenseNot gradedqualityCmaintenanceMySQL MCP Server enables Claude Desktop and Claude Code to execute SQL queries, explore databases, Webview to add or enable Databases, Connections, and interact with your MySQL data - all through a secure, permission-controlled interface.18 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server providing natural-language tools for managing and querying an employee database, including user CRUD, search, and statistics.MIT