Simployer MCP Tools - Customer Guide
Overview
The Simployer MCP (Model Context Protocol) Server enables AI assistants and applications to securely access your HR data through a standardized interface. Whether you're building custom AI solutions or integrating with platforms like Claude Desktop or ChatGPT, these tools provide seamless access to employee information, organizational structures, leave management, compensation data, and more.
What is Model Context Protocol (MCP)?
Model Context Protocol (MCP) is an open protocol that enables AI assistants to securely access external data sources and tools. The MCP server acts as a bridge between AI applications (like Claude, ChatGPT, or custom LLM solutions) and the Simployer API, providing:
• Standardized Interface: Consistent API access regardless of the AI platform
• Secure Authentication: JWT-based authentication for all requests
• Tool Discovery: Automatic discovery of available capabilities
• Structured Responses: Well-defined schemas for all operations
Key Benefits
- AI-Ready: Works seamlessly with Claude, ChatGPT, and other MCP-compatible AI platforms
- Secure: JWT-based authentication ensures your data remains protected
- Comprehensive: Access to 17+ HR data modules through a unified interface
- Standardized: Follows the open MCP protocol for consistent integration
Quick Start
Prerequisites
- An active Simployer account
- A JWT access token (see Authentication)
- An MCP-compatible client (Claude Desktop, custom application, etc.)
Transport Protocols
The Simployer MCP server supports two transport methods:
• Streamable HTTP (Recommended): Modern stateless protocol using POST /mcp
- Endpoint: https://mcp-alexis.simployer.com/mcp
- Use this for all new integrations
• Server-Sent Events (SSE) (Legacy): For backward compatibility with older MCP clients
- Endpoints: /sse and /messages
- Only use if your client requires SSE
For custom integrations, always use the Streamable HTTP endpoint at https://mcp-alexis.simployer.com/mcp.
Setting Up Claude Desktop
- Open Claude Desktop settings
- Navigate to MCP Servers configuration
- Add the following configuration:
{ "mcpServers": { "alexishr": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-everything"], "env": { "MCP_SERVER_URL": "https://mcp-alexis.simployer.com/mcp", "MCP_AUTH_TOKEN": "YOUR_TOKEN" } } } }
- Restart Claude Desktop
- Test by asking: "List all employees in the Engineering department"
Setting Up a Custom Client
Use the MCP endpoint with your JWT token:
curl -X POST https://mcp-alexis.simployer.com/mcp \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "jsonrpc": "2.0", "id": "1", "method": "tools/list" }'
Authentication
All requests to the Simployer MCP server require a valid JWT (JSON Web Token) from your Simployer account.
Obtaining Your Token
- Log in to your Simployer account
- Navigate to Settings → Access Tokens
- Generate or retrieve your token
- Copy the token (you'll need it for configuration)
Using Your Token
Include the token in the Authorization header for all requests:
Authorization: Bearer YOUR_JWT_TOKEN
Security Best Practices
- Keep your token secure and never commit it to version control
- Rotate tokens regularly
- Use environment variables to store tokens
- Revoke tokens immediately if compromised
Available Modules
The Simployer MCP server provides access to the following HR data modules:
Module | Tools Available | Primary Use Cases |
|---|---|---|
| Employee Management | 8 tools | Employee lookup, analytics, updates |
| Leave Management | 3 tools | Leave tracking, approval, analysis |
| Compensation | 9 tools | Salary, bonus, and allowance management |
| Organizational Structure | 6 tools | Departments, offices, teams, cost centers |
| Timesheet Management | 5 tools | Time tracking, entry management |
| Project Management | 3 tools | Project tracking and resource planning |
| Employment Management | 6 tools | Employment records and types |
| Scope Management | 7 tools | Feature access, policy scopes |
| Additional Modules | 5 tools | Children, work weeks, leave transactions |
Tool Reference
Employee Management
getAllEmployees
Retrieves a list of employees with optional filtering and pagination.
Parameters:
Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | number | No | 500 | Maximum number of results to return |
| filters | object | No | - | Filter criteria (see below) |
Available Filters:
Filter | Type | Description |
|---|---|---|
| active | boolean | Filter by employee's active status |
| title | string | Filter by employee's job title |
| division | string | Filter by employee's division |
| organization | string | Filter by employee's organization |
| employeeNumber | string | Filter by employee's number |
| firstName | string | Filter by employee's first name |
| lastName | string | Filter by employee's last name |
| nationality | string | Filter by employee's nationality |
| departmentId | string | Filter by department ID |
| officeId | string | Filter by office ID |
Example Request:
{ "jsonrpc": "2.0", "id": "1", "method": "tools/call", "params": { "name": "getAllEmployees", "arguments": { "limit": 100, "filters": { "active": true, "departmentId": "dept-123" } } } }
Common Use Cases:
- "Show me all active employees in the Engineering department"
- "List employees in the New York office"
- "Find employees with the title 'Senior Developer'"
getEmployeeById
Fetches a specific employee by their unique ID.
Parameters:
Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| employeeId | string | Yes | - | The unique identifier of the employee |
Example Request:
{ "jsonrpc": "2.0", "id": "2", "method": "tools/call", "params": { "name": "getEmployeeById", "arguments": { "employeeId": "12345" } } }
updateEmployee
Updates specific fields of an employee in the Simployer system.
Parameters:
Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| employeeId | string | Yes | - | The unique identifier of the employee |
| data | object | Yes | - | Object containing fields to update |
Updatable Fields:
Field | Type | Description |
|---|---|---|
| title | string | Employee's job title |
| departmentId | string | ID of the employee's department |
| division | string | Employee's division |
| organization | string | Employee's organization |
Example Request:
{ "jsonrpc": "2.0", "id": "3", "method": "tools/call", "params": { "name": "updateEmployee", "arguments": { "employeeId": "12345", "data": { "title": "Senior Developer", "division": "Engineering" } } } }
Additional Employee Tools
- getEmployeeCountByDepartment - Count employees by department
- getEmployeeCountByOffice - Count employees by office
- getEmployeeCountByDivision - Count employees by division
- calculateTurnover - Calculate turnover rates
- getOffboardings - List offboarded employees
Department Management
getAllDepartments
Fetches all departments from Simployer API with optional filtering.
Parameters:
Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | number | No | 500 | Maximum number of results to return |
| filters | object | No | - | Filter criteria (see below) |
Available Filters:
Filter | Type | Description |
|---|---|---|
| name | string | Filter by department name |
| companyId | string | Filter by company ID |
Example Request:
{ "jsonrpc": "2.0", "id": "4", "method": "tools/call", "params": { "name": "getAllDepartments", "arguments": { "limit": 50, "filters": { "companyId": "67890" } } } }
getDepartmentById
Fetches a specific department by its unique ID.
Parameters:
Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| departmentId | string | Yes | - | The unique identifier of the department |
updateDepartment
Updates department information.
Leave Management
getAllLeaves
Fetches all leaves from Simployer API with optional filtering.
Parameters:
Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | number | No | 500 | Maximum number of results to return |
| filters | object | No | - | Filter criteria (see below) |
Available Filters:
Filter | Type | Description |
|---|---|---|
| employeeId | string | Filter by employee ID |
| typeId | string | Filter by leave type ID |
| startDate | string | Filter leaves where either startDate or endDate is >= this date (filtered locally) |
| endDate | string | Filter leaves where either startDate or endDate is <= this date (filtered locally) |
Note on Date Filtering:
The startDate and endDate filters are applied locally after fetching leaves from the API. When both filters are provided, leaves are returned where either the leave's startDate or endDate falls within the specified range.
Example Request:
{ "jsonrpc": "2.0", "id": "5", "method": "tools/call", "params": { "name": "getAllLeaves", "arguments": { "limit": 200, "filters": { "employeeId": "12345", "startDate": "2024-07-01", "endDate": "2024-07-31" } } } }
getLeaveById
Fetches a specific leave by its unique ID.
Parameters:
Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| leaveId | string | Yes | - | The unique identifier of the leave |
updateLeave
Updates leave status or details.
Compensation Management
Regular Compensation
Tools Available:
- getAllCompensations - List/search compensation records
- getCompensationById - Get compensation details
- updateCompensation - Update compensation information
Available Filters for getAllCompensations:
Filter | Type | Description |
|---|---|---|
| userId | string | Filter by user ID |
| employeeId | string | Filter by employee ID |
| effectiveDate | any | Filter by effective date |
| amount | number | Filter by amount |
| baseAmount | number | Filter by base amount |
| currency | string | Filter by currency |
| payoutDay | number | Filter by payout day |
| payoutPeriod | string | Filter by payout period |
| payoutFrequency | string | Filter by payout frequency |
| salarySchedule | string | Filter by salary schedule |
| paidOvertime | boolean | Filter by paid overtime |
| salaryYear | number | Filter by salary year |
| salaryCode | string | Filter by salary code |
Bonus Compensation
Tools Available:
- getAllBonusCompensations - List/search bonus records
- getBonusCompensationById - Get bonus details
- updateBonusCompensation - Update bonus information
Additional Compensation
Tools Available:
- getAllAdditionalCompensations - List/search additional compensation
- getAdditionalCompensationById - Get additional compensation details
- updateAdditionalCompensation - Update additional compensation
Office Management
Tools Available:
- getAllOffices - List/search offices with filtering
- getOfficeById - Get office details
- updateOffice - Update office information
Project Management
Tools Available:
- getAllProjects - List/search projects
- getProjectById - Get project details
- updateProject - Update project information
Available Filters for getAllProjects:
Filter | Type | Description |
|---|---|---|
| name | string | Filter by project name |
| archived | boolean | Filter by archived status |
| companyId | string | Filter by company ID |
Company Management
Tools Available:
- getCompanyById - Get company information (read-only)
Team Management
Tools Available:
- getAllTeams - List/search teams
- getTeamById - Get team details
- updateTeam - Update team information
Employee Team References
Tools Available:
- getAllEmployeeTeamReferences - List employee-team associations
- getEmployeeTeamReferenceById - Get specific association
- updateEmployeeTeamReference - Update team membership
Employment Management
Tools Available:
- getAllEmployments - List/search employment records
- getEmploymentById - Get employment details
- updateEmployment - Update employment information
Employment Type Management
Tools Available:
- getAllEmploymentTypes - List/search employment types
- getEmploymentTypeById - Get employment type details
- updateEmploymentType - Update employment type
Cost Center Management
Tools Available:
- getAllCostCenters - List/search cost centers
- getCostCenterById - Get cost center details
- updateCostCenter - Update cost center information
Leave Transaction Management
Tools Available:
- getAllLeaveTransactions - List/search leave transactions
- getLeaveTransactionById - Get transaction details (read-only)
Child Management
Tools Available:
- getAllChildren - List/search children records
- getChildById - Get child details
- updateChild - Update child information
Timesheet Management
Timesheets:
- getAllTimesheets - List/search timesheets
- getTimesheetById - Get timesheet details (read-only)
Timesheet Entries:
- getAllTimesheetEntries - List/search timesheet entries
- getTimesheetEntryById - Get entry details
- updateTimesheetEntry - Update timesheet entry
Timesheet Entry Types:
- getAllTimesheetEntryTypes - List/search entry types
- getTimesheetEntryTypeById - Get entry type details (read-only)
Work Week Management
Tools Available:
- getAllWorkWeeks - List/search work week configurations
- getWorkWeekById - Get work week details
- updateWorkWeek - Update work week configuration
Scope Management
Tools Available:
- getAllScopes - List/search scopes
- getScopeById - Get scope details
- getScopesByParentId - Get scopes by parent ID
- getScopesByParentType - Get scopes by parent type
- getScopeEmployeeCount - Get employee count for scope(s)
- scopeEmployeeSearchByName - Check if employee is in scope
- updateScope - Update scope configuration
Parent Types Available:
ANNOUNCEMENT, COMPETENCE, FEATURE_ACCESS_POLICY, FORTNOX_SETTINGS, FRANKLY_SETTINGS, LEAVE_POLICY, MODULE_ACCESS, PROFILE_TEMPLATE, PROJECT, REVIEW_CYCLE, SIMP_INTEGRATION_SETTINGS, TIMESHEET_POLICY, WORKFLOW_TASK, WORKFLOW_TASK_TEMPLATE, WORKFLOW_TEMPLATE_ADDITIONAL_PROPERTIES, EXTENDED_MODULE_ACCESS
Use Cases & Examples
Employee Analytics
Scenario: "Show me the turnover rate for the last 12 months"
Natural Language Query: "What's our employee turnover rate for the last 12 months?"
Tools Used: calculateTurnover
Example Request:
{ "jsonrpc": "2.0", "id": "6", "method": "tools/call", "params": { "name": "calculateTurnover", "arguments": { "startDate": "2023-01-01", "endDate": "2024-01-01" } } }
Leave Management
Scenario: "Show all approved leaves for July 2024 in the Gdańsk office"
Natural Language Query: "Show me all approved leaves for July 2024 in the Gdańsk office"
Tools Used: 1. getAllOffices (to find office ID) 2. getAllEmployees (to find employees in that office) 3. getAllLeaves (to get leaves with filters)
Step-by-Step:
- First, get the office ID for Gdańsk using getAllOffices with filter city: "Gdańsk"
- Get all employees in that office using getAllEmployees with filter officeId: <office-id>
- Get all leaves for those employees in July 2024 using getAllLeaves with filters startDate: "2024-07-01", endDate: "2024-07-31"
Employee Search
Scenario: "Find all active employees in the Engineering department"
Natural Language Query: "Find all active employees in the Engineering department"
Tools Used: getAllEmployees
Example Request:
{ "jsonrpc": "2.0", "id": "7", "method": "tools/call", "params": { "name": "getAllEmployees", "arguments": { "filters": { "active": true, "departmentId": "dept-123" }, "limit": 100 } } }
Error Handling
Error Response Format
All errors follow the JSON-RPC 2.0 format:
{ "jsonrpc": "2.0", "id": "1", "error": { "code": -32603, "message": "Internal server error", "data": { "details": "Additional error information" } } }
Common Error Codes
Code | Meaning | Solution |
|---|---|---|
| -32600 | Invalid Request | Check your JSON-RPC format |
| -32601 | Method Not Found | Verify the tool name is correct |
| -32602 | Invalid Params | Check parameter types and required fields |
| -32603 | Internal Error | Contact support with error details |
| 401 | Unauthorized | Verify your JWT token is valid |
| 404 | Not Found | Check that the resource ID exists |
| 400 | Bad Request | Validate your request parameters |
Troubleshooting
Authentication Errors
- Verify your JWT token is valid and not expired
- Check token format: Bearer YOUR_TOKEN
- Ensure token has necessary permissions
Connection Issues
- Verify server is accessible: curl https://mcp-alexis.simployer.com/health
- Check network connectivity
- Review error messages in response
Timeout Errors
- Default timeout: 120 seconds
- For large queries, use pagination (limit parameter)
- Consider breaking complex operations into smaller requests
Best Practices
Performance Optimization
Use Pagination
- Default limit: 500 records per request
- Always paginate when totalCount > limit
- Use filters to reduce result sets when possible
Filter Before Fetching
- Apply filters at the API level rather than filtering client-side
- Use specific filters (IDs, dates) when possible
- Combine multiple filters to narrow results
Request Optimization
- Batch related queries when possible
- Cache frequently accessed data
- Use getById methods when you know the ID
Security
- Never commit tokens to version control
- Use environment variables for sensitive data
- Rotate tokens regularly
- Implement proper error handling to avoid exposing sensitive information
- Use HTTPS for all requests
Rate Limiting
- Be mindful of API rate limits
- Implement exponential backoff for retries
- Consider implementing client-side request queuing for high-volume applications
FAQ
General
Q: What is MCP? A: Model Context Protocol (MCP) is an open protocol that enables AI assistants to securely access external data sources and tools.
Q: Do I need to be a developer to use these tools? A: While some technical knowledge helps, many AI platforms (like Claude Desktop) provide a user-friendly interface for using MCP tools.
Q: Is my data secure? A: Yes. All requests use JWT authentication and HTTPS encryption. Your tokens are never stored on our servers.
Integration
Q: Can I use these tools with ChatGPT? A: Yes, if your ChatGPT implementation supports MCP. Check with your AI platform provider for MCP compatibility.
Q: How do I test if my setup is working? A: Try a simple query like "List all employees" or "Show me all departments" through your MCP client.
Q: What if I get authentication errors? A: Verify your JWT token is valid, not expired, and properly formatted in the Authorization header.
Support & Resources
Health Check
Check server status: GET https://mcp-alexis.simployer.com/health
Response: {"status": "ok"}
Additional Resources
- Simployer Public API Documentation
- MCP Protocol Specification
- Related documentation: Public API MCP docs
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article