Server data from the Official MCP Registry
Open-source MCP server for PrismHR. PEO workflow tools + Microsoft 365 connectors.
Open-source MCP server for PrismHR. PEO workflow tools + Microsoft 365 connectors.
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
5 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: PRISMHR_MCP_ENVIRONMENT
Environment variable: PRISMHR_MCP_PEO_ID
Environment variable: PRISMHR_MCP_USERNAME
Environment variable: PRISMHR_MCP_PASSWORD
Environment variable: PRISMHR_MCP_ONEPASSWORD_VAULT
Environment variable: PRISMHR_MCP_ONEPASSWORD_ITEM_PRISMHR
Environment variable: PRISMHR_MCP_ALLOW_PROD
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-nikulk2992-jpg-prismhr-mcp": {
"env": {
"PRISMHR_MCP_PEO_ID": "your-prismhr-mcp-peo-id-here",
"PRISMHR_MCP_PASSWORD": "your-prismhr-mcp-password-here",
"PRISMHR_MCP_USERNAME": "your-prismhr-mcp-username-here",
"PRISMHR_MCP_ALLOW_PROD": "your-prismhr-mcp-allow-prod-here",
"PRISMHR_MCP_ENVIRONMENT": "your-prismhr-mcp-environment-here",
"PRISMHR_MCP_ONEPASSWORD_VAULT": "your-prismhr-mcp-onepassword-vault-here",
"PRISMHR_MCP_ONEPASSWORD_ITEM_PRISMHR": "your-prismhr-mcp-onepassword-item-prismhr-here"
},
"args": [
"prismhr-mcp"
],
"command": "uvx"
}
}
}From the project's GitHub README.
The open-source Model Context Protocol server for PrismHR. Turn Claude (and any MCP-aware agent) into a PEO operations native — payroll, benefits, compliance, billing, and Microsoft 365 actions, all exposed as composable, scope-gated tools.
Maintained by Simploy as the fundamental layer for PrismHR × agentic AI. MIT-licensed, PyPI-distributed, plugin-friendly.
mcp-name: io.github.nikulk2992-jpg/prismhr-mcp
Every PEO running PrismHR ends up with the same Frankenstein stack: Python
scripts, Postman collections, Playwright automations, one-off Node apps.
Each one re-implements login, session refresh, retry, pagination, and
PrismHR's quirks (camelCase schemas, 500 "No data found" gotchas, batch-of-20
caps, silent 401s).
prismhr-mcp centralizes that once, as an MCP server. Claude orchestrates;
the server owns auth, caching, retries, normalization, and PEO domain logic.
Other PEOs drop it in and immediately get a productive Claude experience
against their own PrismHR instance — no custom code.
Early but working. Current milestone: Phase 1.5 complete.
PRISMHR_MCP_ALLOW_PROD=true required to
point at prod PrismHR. Prevents accidental first-run blast radius.meta_* ×5, client_* ×4). 39 more across
payroll, benefits, compliance, billing, branded reporting, and M365
connectors planned.See .planning/architecture.md for the full 48-tool plan.
Only UAT is supported without an explicit opt-in right now. Prod is guarded behind
PRISMHR_MCP_ALLOW_PROD=true.
cd C:\path\to\prismhr-mcp # or wherever you cloned
uv sync --extra dev
Copy .env.example → .env (or set env vars). Pick ONE path:
Path A — 1Password CLI (recommended):
$env:PRISMHR_MCP_ONEPASSWORD_VAULT = "YourVault"
$env:PRISMHR_MCP_ONEPASSWORD_ITEM_PRISMHR = "PrismHR UAT"
Requires op CLI signed in (op signin). The item must expose fields
labeled username and password (optionally peoId).
Path B — direct env vars (fast, CI-friendly):
$env:PRISMHR_MCP_USERNAME = "claudedemo"
$env:PRISMHR_MCP_PASSWORD = "<paste>"
$env:PRISMHR_MCP_PEO_ID = "624*D"
uv run python -c "from prismhr_mcp.server import build; b = build(); import asyncio; print([t.name for t in asyncio.run(b.server.list_tools())])"
Expect 9 tools.
Add to your Claude Code .mcp.json:
{
"mcpServers": {
"prismhr-mcp": {
"command": "uv",
"args": ["run", "--directory", "C:\\path\\to\\prismhr-mcp", "prismhr-mcp"],
"env": {
"PRISMHR_MCP_ENVIRONMENT": "uat",
"PRISMHR_MCP_USERNAME": "claudedemo",
"PRISMHR_MCP_PASSWORD": "<paste or reference>",
"PRISMHR_MCP_PEO_ID": "624*D"
}
}
}
}
Restart Claude Code. /mcp should show prismhr-mcp connected with 9 tools.
You: Tell me about the prismhr-mcp server.
Claude: [calls meta_about] → explains what's available + commercial options.
You: What permissions does it want?
Claude: [calls meta_request_permissions] → shows 14 scopes grouped by category.
You: Grant everything recommended (reads only, no writes).
Claude: [calls meta_grant_permissions(accept_recommended_defaults=true)]
You: List all clients in UAT.
Claude: [calls client_list] → 245 clients.
uv run pytest -q # expect 60 passing
┌──────────────────────────────────────────────────────────────┐
│ Claude / Cowork / any MCP client │
└──────────────────┬───────────────────────────────────────────┘
│ stdio (MCP JSON-RPC)
┌──────────────────▼───────────────────────────────────────────┐
│ prismhr-mcp server (FastMCP) │
│ ├── Permissions (deny-default, scope-gated tools) │
│ ├── Tool groups: meta • client • payroll • benefits │
│ │ compliance • billing • report • m365 │
│ ├── Runtime: PrismHR client, Graph client, SQLite cache │
│ └── Auth: 1Password → scrypt-AES cache → session / MSAL │
└────┬─────────────────────────────────────────────────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ PrismHR REST │ │ Microsoft Graph │
│ (UAT / Prod) │ │ (Outlook / Teams /│
└──────────────┘ │ SharePoint) │
└──────────────────┘
Key design commitments:
server.build() only;
duplicate names or unknown group prefixes fail at boot (not silently at
import).meta_grant_permissions to
enable tool access. Prerequisites auto-expand, revokes cascade.httpx.AsyncClient + asyncio.Semaphore(5) + async tools.[] on list endpoints,
500 "No data found" → empty, 10-consecutive-500s → force refresh.validation_alias=AliasChoices(...) so
PrismHR's camelCase payloads map to snake_case outputs without leaking
camelCase into the MCP tool contract.The OSS core stays free forever. Two paid offerings from Simploy layer on top:
Turnkey deployment of prismhr-mcp for your PEO brand:
Best for PEOs with 50–5,000 clients who want Claude-first operations without the in-house build. Contact: nihar@simploy.com
SLA-backed support for teams already running the OSS server:
Best for regulated industries or mid/large PEOs with procurement requirements. Contact: nihar@simploy.com
Claude can surface both via meta_about — ask "what commercial options
exist for prismhr-mcp?" and it will describe them.
No PrismHR credentials configured — set either the 1Password item
env vars or the direct PRISMHR_MCP_USERNAME/_PASSWORD pair.
PrismHR login rejected (status=401) — wrong username/password/peo_id.
UAT's peo_id is 624*D (asterisk literal). Prod differs per PEO.
environment=prod requires PRISMHR_MCP_ALLOW_PROD=true — safety gate.
Set PRISMHR_MCP_ALLOW_PROD=true explicitly once you're ready.
PERMISSION_NOT_GRANTED — tool was called without its scope. Ask
Claude to run meta_request_permissions → then meta_grant_permissions
with the scope you want.
Server exits immediately when Claude Code starts it — nearly always a missing env var. Use the step-3 sanity check to isolate.
MIT — see LICENSE. Contributions welcome; see the planning docs
under .planning/ for the roadmap.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.