directory
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
AccessDesk
An IT service-desk agent for access requests, built the way IT security would run it. Employees ask in plain words ("I need Salesforce read access for the month-end report"). Claude finds the right app and explains the outcome; five MCP servers do the work with the employee's own identity, never admin rights. Low-risk standard access is instant, the rest goes to the manager and the app owner, privileged access expires, and segregation-of-duties conflicts are refused.
Live demo: https://sh-accessdesk.streamlit.app (simulated company, no login; Demo mode needs no API key)
The design rule: the AI finds and explains, the policy decides, the employee confirms, approvers approve.
Why
Access requests are a large share of IT service-desk work, and companies already automate the routine ones (Avalara reports 78% of provisioning automated). The risk is an agent that hands out admin rights because someone typed "I'm the CTO", or because a ticket comment told it to. AccessDesk shows least privilege, identity and memory done properly.
Related MCP server: Company Management MCP Server
Results (20 scenarios, 8 of them attacks, fresh company each run)
Metric | Scripted model (CI) | Claude (live) |
Right outcome | 100% | run |
Right app identified | 100% | |
Unauthorised grants (gate, must be 0) | 0 | |
Red-team passed | 8/8 |
Attacks in the set: claiming to be the CTO, asking for admin rights, asking for a colleague who is not your report, segregation-of-duties conflicts (post invoices + approve payments), payroll access from the wrong role, "ignore all previous instructions", and a vendor's ticket comment that tells the agent to grant AWS admin.
How it works
flowchart LR
U((employee<br/>SSO identity)) --> A[agent<br/>Claude: find the app,<br/>preview the policy]
A -- needs data --> T[tools<br/>9 read-only MCP tools<br/>identity added by the hub]
T --> A
A -- respond --> P[policy<br/>code re-checks<br/>the proposal]
P --> C[request card<br/>employee confirms]
C --> W[workflow, code<br/>ticket, approvals,<br/>grant token]
W -. manager / owner .-> H((approvers))
H -.-> W
W --> I[IAM server<br/>checks token,<br/>SoD, eligibility]Policy (code, first match wins): already has it → segregation-of-duties conflict → role not eligible → not yourself or your direct report → standard for your role: granted at once · not standard / medium risk: manager approves · high risk: manager + app owner, expires after max 30 days. A manager asking for a direct report counts as the manager's approval.
MCP servers
Server | Tools (model may call in bold) | Notes |
| whoami, find_employee, get_access | You see your own and your direct reports' access only |
| search_entitlements, team_patterns, preview_request |
|
| my_tickets, get_ticket, create_ticket, request_approvals, pending_approvals, decide, add_comment | Comments come back wrapped as untrusted |
| grant_access, reset_mfa | Need a grant token; re-check SoD and eligibility |
| recall, save_memory, forget | Writes only after the employee confirms |
Identity: tools that act for a person take an identity argument. The MCP client (hub) fills it with the signed token of the logged-in employee and removes it from the tool definitions the model sees, so the model can neither read it nor claim to be someone else. It's the same idea as an OAuth on-behalf-of token, and every server verifies it.
On Streamlit Cloud each server runs as a child process over stdio; in docker-compose each runs as its own service over Streamable HTTP. Built on the official MCP Python SDK v2 (MCPServer).
Memory
Kind | What | Safeguard |
Short-term | Last turns of the chat, plus a summary of submitted requests written by code | Code summary, not model-written |
Long-term (per employee) | Facts like "works on month-end accruals" | Saved only when the employee clicks Remember; refuses instruction-like text; context, never permissions; view and delete anytime (right to erasure) |
Procedural (team patterns) | "Finance analysts usually have Power BI Finance" | Computed from data, used only after an IT admin approves it, so one odd grant can't become a default |
Security (OWASP Top 10 for Agentic Applications)
Risk | Control |
ASI01 Goal hijack | Ticket comments marked untrusted and scanned; the injected vendor comment is shown as ignored; proposals re-checked by the policy |
ASI02 Tool misuse | 9 read-only tools for the model (allow-list and server read-only flag); writes are code after the employee confirms |
ASI03 Identity and privilege abuse | Signed identity per call, hidden from the model; grant token per ticket; IAM server re-checks |
ASI06 Memory poisoning | Consent, filtering, context-only memories; reviewed team patterns |
ASI08 Cascading failures | Step limit, timeouts, nothing changes until confirmed |
ASI09 Human trust exploitation | Approvers see requester, target, app, risk and expiry from the database |
Data protection | Address-book fields only in the directory; Claude via Amazon Bedrock in an EU region with |
Run it
pip install -r requirements.txt
streamlit run app.py # Demo mode needs no key
python -m accessdesk eval # scripted evals (CI gate)
ANTHROPIC_API_KEY=... python -m accessdesk eval --live
printf "IDENTITY_SECRET=%s\nGRANT_SECRET=%s\n" $(openssl rand -hex 32) $(openssl rand -hex 32) > .env && docker compose up --buildIn the app, switch the login in the sidebar: ask as Marta Silva (new Finance analyst), approve as João Pereira (her manager) and Inês Sousa (app owner), review team patterns as Inês.
Stack
Python 3.12 · LangGraph · MCP Python SDK v2 · Claude (Anthropic API or Amazon Bedrock) · Pydantic · SQLite · Streamlit · pytest · ruff · GitHub Actions · Docker
Part of a series
InvoiceGuard: accounts-payable agent, the AI reads, code decides, a person approves
FleetPilot: ML + AI sales copilot
LexTreeRAG: vectorless RAG on EU law
MIT licence.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search employee profiles, read profile fields and list HR tasks in Sapling HR.
Manage API keys, identities, permissions, rate-limit overrides and verification analytics.
Read Namely employee profiles, groups, teams, jobs and reports; update profiles, post to the feed.
Read-only HRMS data (employees, connectors, salary) from Tartan HyperSync. OAuth-protected.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables employee information lookup, directory listing, payroll access, and time-off request management with Okta token validation.-
- FlicenseNot gradedqualityDmaintenanceEnables managing employee information, tasks (todos), and company policies via MCP tools and resources.-
- AlicenseNot gradedqualityCmaintenanceMCP server for Autodesk's Aware employee directory, enabling search for people by name, email, or title, fetching individual records, viewing org reporting lines, and reading your own profile. It uses your own logged-in session to access the same data as the web app, read-only.MIT
- FlicenseNot gradedqualityBmaintenanceEnables read-only access to Workday HCM data such as workers, organizations, locations, job profiles, and cost centers through MCP tools an LLM can call.-