Skip to main content
Glama
bitterpanda63

Officient MCP Server

README.md
# Officient MCP Server

A Model Context Protocol (MCP) server for the [Officient](https://www.officient.io/) API, providing seamless integration with Claude and other MCP-compatible clients.

## Features

This MCP server exposes 9 tools for interacting with the Officient API:

- **list_people** - Get a paginated list of people
- **list_all_people** - Get all people with automatic pagination
- **get_person_detail** - Get detailed information about a specific person
- **get_employee_details** - Get details of the current logged-in employee
- **list_coworkers_days_off** - Get coworkers' days off for a specific month
- **list_own_days_off** - Get your own days off for a specific year
- **get_all_salary_slips** - Get all salary slip files
- **get_file_download_url** - Get download URL for a file (e.g., salary slip PDF)
- **get_vacation_day_budgets** - Get vacation day budgets for a specific year

## Installation

1. Clone this repository:
```bash
git clone https://github.com/bitterpanda63/officient-mcp-server.git
cd officient-mcp-server
```

2. Install dependencies:
```bash
npm install
```

3. Build the TypeScript files:
```bash
npm run build
```

4. Create a `.env` file with your Officient token:
You can get this officient token by inspecting a request when logged in and copying the bearer from the `Authselfservice` header.
```bash
cp .env.example .env
# Edit .env and add your OFFICIENT_TOKEN
```

## Configuration

### Environment Variables

Create a `.env` file in the root directory:

```env
OFFICIENT_TOKEN=your_officient_token_here
```

To get your Officient token:
1. Log in to your Officient account
2. Open browser developer tools (F12)
3. Go to Network tab
4. Make any request to Officient
5. Look for the `Authselfservice` header in the request

### MCP Client Configuration

Add this server to your MCP client configuration (e.g., Claude Desktop):

```json
{
  "mcpServers": {
    "officient": {
      "command": "node",
      "args": [
        "/path/to/officient-mcp-server/build/index.js"
      ],
      "env": {
        "OFFICIENT_TOKEN": "your_token_here"
      }
    }
  }
}
```

## Usage

### With Claude Desktop

Once configured, you can use natural language to interact with Officient:

- "List all people in my company"
- "Show me details for person ID 12345"
- "What are my days off this year?"
- "Get my salary slips"
- "Who is on vacation in October 2025?"


### Build

```bash
# Build once
npm run build

# Watch mode (development)
npm run dev
```

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

TDQS

B3.3/5.0

Scored across 9 tools

Disambiguation3/5

Most tools have distinct purposes, but list_all_people and list_people both list people with only pagination difference, which can confuse an agent. Similarly, get_employee_details and get_person_detail both return person details, though for self vs others. Descriptions help but overlap exists.

Naming Consistency4/5

Naming consistently uses 'get_' for single resources and 'list_' for collections. The only minor inconsistency is 'get_all_salary_slips' using 'get_all_' instead of 'list_', and 'list_all_people' using 'list_all_'. Overall pattern is clear.

Tool Count5/5

With 9 tools covering employee details, salary slips, vacation budgets, and days off, the set is well-scoped for a self-service HR server. No tools feel redundant or missing.

Completeness4/5

The tools cover core read operations for employee self-service: personal info, salary slips, vacation budgets, days off, and colleague lookup. Missing write operations (e.g., leave requests) are acceptable for a read-only server, but no tool for individual salary slip detail is a minor gap.

Maintenance

ActivityInactive
ResponsivenessNo issues