# hilan-mcp

Brings Hilan payslips and Form 106 into an AI assistant. Handy when you want to ask the agent what you earned last month.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Author: udah1
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/udah1/hilan-mcp
- Updated: 2026-08-07
- HTML: https://affpapa.org/en/nevibecode/mcp/hilan-mcp

## What it does

Hilan has no public API, so this server launches a headless Chromium through Playwright, signs in, and keeps using that logged-in session to hit Hilan's internal `.asmx` endpoints and pull PDFs. Cookies and headers come from a genuine page load instead of being stitched together by hand.

Login forms vary between employers: two fields at one tenant, three at another. The server inspects the form again the first time credentials are ingested for a given tenant, so nothing is pinned to a single company. Records sit in a SQLCipher-encrypted SQLite file, and the key is never stored on disk as plain text. Keep it in the OS credential store or pass it as `HILAN_DB_KEY`.

Type your credentials yourself in a terminal, not into a chat window. The first run installs Chromium and asks for an encryption key of at least 6 characters. On npm 12 or newer, dependency install scripts are blocked, and `better-sqlite3-multiple-ciphers` cannot compile its native binding without one. Setup looks fine, then every database-backed tool breaks. Clear the way first with `npm config set allow-scripts=better-sqlite3-multiple-ciphers --location=user`.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `COMPANY_URL`, `COMPANY_TENANT`, `COMPANY_CODE`, `HILAN_DB_KEY`, `NODE_EXTRA_CA_CERTS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env COMPANY_URL=<COMPANY_URL> --env COMPANY_TENANT=<COMPANY_TENANT> --env COMPANY_CODE=<COMPANY_CODE> --env HILAN_DB_KEY=<HILAN_DB_KEY> --env NODE_EXTRA_CA_CERTS=<NODE_EXTRA_CA_CERTS> --transport stdio hilan-mcp -- npx -y hilan-mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add hilan-mcp --env COMPANY_URL=<COMPANY_URL> --env COMPANY_TENANT=<COMPANY_TENANT> --env COMPANY_CODE=<COMPANY_CODE> --env HILAN_DB_KEY=<HILAN_DB_KEY> --env NODE_EXTRA_CA_CERTS=<NODE_EXTRA_CA_CERTS> -- npx -y hilan-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "hilan-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "hilan-mcp"
            ],
            "env": {
                "COMPANY_URL": "<COMPANY_URL>",
                "COMPANY_TENANT": "<COMPANY_TENANT>",
                "COMPANY_CODE": "<COMPANY_CODE>",
                "HILAN_DB_KEY": "<HILAN_DB_KEY>",
                "NODE_EXTRA_CA_CERTS": "<NODE_EXTRA_CA_CERTS>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "hilan-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "hilan-mcp"
            ],
            "env": {
                "COMPANY_URL": "<COMPANY_URL>",
                "COMPANY_TENANT": "<COMPANY_TENANT>",
                "COMPANY_CODE": "<COMPANY_CODE>",
                "HILAN_DB_KEY": "<HILAN_DB_KEY>",
                "NODE_EXTRA_CA_CERTS": "<NODE_EXTRA_CA_CERTS>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e COMPANY_URL=<COMPANY_URL> -e COMPANY_TENANT=<COMPANY_TENANT> -e COMPANY_CODE=<COMPANY_CODE> -e HILAN_DB_KEY=<HILAN_DB_KEY> -e NODE_EXTRA_CA_CERTS=<NODE_EXTRA_CA_CERTS> hilan-mcp npx -y hilan-mcp
```
Replace <…> with your own values

## When to use it
- pull a payslip for a chosen month as structured data
- download the annual Form 106 PDF
- ask the agent for June earnings without opening the web portal
- wire up several Hilan employers in one client
- keep the Hilan password off disk in readable form

## Example prompts
- Show my March payslip for tenant amdocs
- Download last year's Form 106
- How much did I earn in June?

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
