clue2app-user-mcp
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@clue2app-user-mcp list all users"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
clue2app-user-mcp
MCP server exposing coordinator's user/membership/role admin operations as
tools for LLM callers (agents, Claude Desktop, etc.). Every tool is a thin
passthrough to coordinator's /api/users/* endpoints — RBAC is enforced
entirely by coordinator using the caller's bearer token; this service does
not validate or interpret tokens itself.
Tool catalog
Group | Tool | Coordinator endpoint |
users |
|
|
users |
|
|
users |
|
|
users |
|
|
users |
|
|
memberships |
|
|
roles |
|
|
roles |
|
|
Related MCP server: claude-ia-mcp-tools
Local dev (stdio transport)
cd clue2app-user-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e .
export COORDINATOR_URL=http://localhost:8081 # or your coordinator base URL
export COORDINATOR_TOKEN=<a coordinator-issued bearer token>
user-mcp # defaults to --transport=stdio
# or: python -m user_mcp.server --transport=stdioPoint an MCP-capable client (Claude Desktop, mcp dev, etc.) at the
user-mcp command with those two env vars set. stdio has no per-request
auth header, so the token is read once from COORDINATOR_TOKEN at startup
and reused for every tool call in that session.
Quick smoke test
python -c "
import sys; sys.path.insert(0, 'src')
from user_mcp import server
print([t for t in dir(server) if not t.startswith('_')][:5])
"Hosted deploy (SSE transport)
The Knative/kpack deployment runs the SSE transport, which reads the bearer
token per-request from the inbound Authorization: Bearer <token> header —
each caller supplies their own token, so a single instance safely serves
many callers at different privilege levels.
python -m user_mcp.server --transport=sse --port=$PORTThis is exactly what Procfile runs. Paketo's Python buildpack detects
pyproject.toml directly (no requirements.txt needed, no Dockerfile
needed) and uses python -m so we don't depend on where the buildpack
places console-script shims in the launch image.
Env vars
Var | Required | Notes |
| yes | e.g. |
| stdio only | ignored by the SSE transport |
| no | Knative-injected; defaults to 8080 |
No secrets are baked into this service — every tool call carries its own token, and the service holds nothing longer than the lifetime of a single request.
Endpoints
GET /sse— MCP session endpoint (SSE transport)POST /messages— MCP message endpoint (SSE transport)GET /health—200 {"status": "ok"}, no coordinator round-trip. Wire bothreadinessProbeandlivenessProbeto this path — a coordinator outage must not cascade into MCP pod restarts.
Layout
src/user_mcp/
├── server.py # FastMCP init, CLI dispatch, /health, transport wiring
├── coord_client.py # httpx.AsyncClient wrapper, bearer passthrough
├── auth.py # bearer_from_context() using a contextvar
└── tools/
├── users.py # list/get/disable/enable/resolve_duplicates
├── memberships.py # list_user_memberships
└── roles.py # grant/revoke_roleAvailable Tools
8 toolsdisable_userA
Disable a user account. Requires SYSTEM token. Records the given reason for audit.
Inputs: args (required).
enable_userB
Re-enable a previously disabled user account. Requires SYSTEM token.
Inputs: args (required).
get_userB
Fetch a single user record by id.
Inputs: args (required).
grant_roleA
Grant a user a role on a project. Requires SYSTEM or ACCOUNT_ADMIN token.
Inputs: args (required).
list_user_membershipsB
List every project a user belongs to, with their role on each.
Inputs: args (required).
list_usersB
List users, optionally filtered by search query or project membership.
Inputs: args (required).
resolve_duplicate_usersA
Merge duplicate_ids into primary_id, keeping primary_id as the surviving user. Requires SYSTEM token.
Inputs: args (required).
revoke_roleA
Revoke a user's role on a project. Requires SYSTEM or ACCOUNT_ADMIN token.
Inputs: args (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: disabling, enabling, fetching, granting roles, listing memberships, listing users, resolving duplicates, and revoking roles. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., disable_user, grant_role). Naming is predictable and uniform.
8 tools is well-scoped for user management, covering core operations without unnecessary bloat.
The set covers enable/disable, role management, and listing, but lacks create_user and delete_user, which are minor gaps for a user management server.
Maintenance
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Remote MCP for A2A caller identity, scope policy, verdict receipts, and audit history.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Managed Keycloak from any MCP client: clusters, realms, apps, SSO, users, domains, audit events.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables MCP-capable clients to inspect and manage Keycloak realms, users, clients, roles, and groups with layered security modes, realm allowlisting, protected realms, delete gating, dry-run, and audit logging.871 npm1MIT
- FlicenseNot gradedqualityBmaintenanceExposes MCP tools for user CRUD operations (get, list, create, update, delete) by routing requests through shared business logic and an API client, using JSONPlaceholder as the demo backend.-
- FlicenseNot gradedqualityCmaintenanceEnables management of system users through a simple API, exposing two MCP tools that forward authentication headers to the upstream service.-
- FlicenseNot gradedqualityCmaintenanceEnables management of system users through a simple sample API, exposed as MCP tools for natural-language interaction.-