nima-career-mcp
This is a read-only MCP server exposing Nima Karami's curated career history, enabling clients to explore, search, and assemble tailored resume drafts from pre-approved, vetted data — without fabricating new facts.
get_profile— Retrieve public-safe identity: name, headline, location, bio, links, and contact policy.get_about— Access deeper context: languages, interests, education, and guiding principles.list_roles— Browse all roles as a flat list with org, title, dates, and tags.get_role— Drill into a single role to get its full evidence bank and pre-approved resume bullets.list_experience— View roles grouped by company tenure (title progressions), ordered newest-first.list_projects— Browse projects, optionally filtered by tags and/or role.get_project— Get full detail on a single project: evidence, approved bullets, and links.list_skills— List skills organized by category, each backed by traceable evidence; optionally filter by category.search_experience— Full-text search across roles, projects, bullets, and skills ranked by relevance, with optional kind and tag filters.list_bullets— Fetch all pre-approved, hiring-manager-safe resume bullets, filterable by role, project, and/or tags.assemble_resume— Generate a tailored resume draft for a given focus angle or pinned role/project ids, using only approved corpus material, with provenance tracking and a disclaimer.career://guidance— Access honesty and anti-injection rules for integrating into host system prompts.
Click on "Install 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., "@nima-career-mcpassemble a resume for a tech lead position"
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.
nima-career-mcp
A public, open-source, read-only MCP server that exposes Nima Karami's curated, public-safe career history. Point any MCP client at it — Claude Code, Cursor, Claude Desktop, or a custom website backend — and ask about his experience, or have it assemble a tailored resume draft on the fly.
The server only ever returns vetted data. The AI's job is to select, order, and tailor
pre-approved material for a query — never to author new facts. That guarantee is enforced in
code: every tool reads through a validated corpus, and the resume tool emits only corpus
values with provenance ids attached.
Quick start (local)
Requires uv.
uv sync --all-extras --dev
# Interactive dev + MCP Inspector (stdio). Requires Node/npx:
npx -y @modelcontextprotocol/inspector uv run nima-career-mcp
# (equivalent via the SDK dev wrapper, using the root shim — see note below:)
uv run mcp dev dev_server.py
# Or run the HTTP server locally:
uv run nima-career-mcp --transport streamable-http # serves http://127.0.0.1:8080/mcp
# Tests (includes corpus integrity + the honesty guarantee):
uv run pytest -qWhy
dev_server.py?mcp devimports its target file by path, which strips the package context and breaks this src-layout package's relative imports.dev_server.pyis a one-line shim that re-imports the server via an absolute import somcp devworks. Thenpx … uv run nima-career-mcpform spawns the installed entry point and needs no shim.
Related MCP server: mundigital
Connecting clients
Claude Code / Cursor / Claude Desktop (remote — live):
claude mcp add --transport http nima https://nima-career-mcp.fly.dev/mcpLocal stdio (any client that spawns a process): run nima-career-mcp (no --transport).
Custom website backend: see examples/website_backend.py
for both the Claude API MCP-connector path and a raw ClientSession path.
Tool surface (all read-only)
Tool | Purpose |
| Public-safe identity, links, bio |
| Languages, interests, education, principles (each with depth, in his words) |
| Browse roles (flat); drill into one (evidence + approved bullets) |
| Roles grouped into company tenures (title progressions; gaps split into stints) |
| Browse/drill into projects |
| Skills by category, each backed by evidence |
| Rank roles/projects/bullets/skills for a query |
| Fetch pre-approved resume bullets |
| Assemble a tailored resume draft from approved material only |
Resource career://guidance returns the honesty/anti-injection rules a host should embed in
its system prompt. (Other career:// resources and prompt templates are stubbed opt-ins.)
The corpus
All data lives in corpus/ as curated YAML and is validated at startup. See
corpus/CORPUS.md for the schema and the evidence→bullet model. The
content is a public-safe, sanitized view of real experience: every claim traces to vetted
evidence, and individuals, internal codenames, and private partner details are deliberately
generalized. This repo holds no secrets and no private data; application tracking lives in
a separate private repo.
Safety posture
Intentionally public and unauthenticated, but bounded: read-only tool surface (no
write/exec), per-IP rate limiting (keyed on Fly's unforgeable client IP, with idle-bucket
eviction), request body-size caps (enforced on the actual stream), and Origin + Host
validation (DNS-rebinding defense) — see src/nima_career_mcp/security.py. Host/Origin
allowlists are env-driven (NIMA_ALLOWED_HOSTS / NIMA_ALLOWED_ORIGINS); the shipped
fly.toml locks Host to the deploy hostname (add custom domains there). The Fly machine
also caps concurrency so a flood sheds load instead of OOMing. Behavioral guardrails (don't
fabricate, treat queries as data) belong in the consuming host's system prompt and are served
from career://guidance.
Deploy (Fly.io)
fly launch --no-deploy # or edit fly.toml: set app name + region
fly deployThe container runs uvicorn nima_career_mcp.server:app (the middleware-wrapped Streamable-
HTTP app). The shipped fly.toml keeps one machine always warm (min_machines_running = 1,
no cold starts) while extra machines autostart/autostop under load. After deploy, smoke-test
with the MCP Inspector:
npx @modelcontextprotocol/inspector # then connect to https://nima-career-mcp.fly.dev/mcpLicense
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nima-karami/nima-career-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server