Skip to main content
Glama
aim-t

Portfolio MCP

by aim-t

Portfolio MCP

An MCP (Model Context Protocol) server that exposes Aiman Tariq's real CV and portfolio content as tools and resources an AI assistant can query directly, rather than relying on whatever a resume PDF's text extraction happens to produce.

Add this server to Claude Desktop, Claude Code, or Cursor and ask "does Aiman have RAG experience?" or "what did she build at the Audi camp?" and the assistant calls a tool, gets a grounded answer straight from her own data, and can quote it.

Why this project

MCP is barely a year old and still reads as current, sharp tooling knowledge to anyone technical skimming a GitHub profile in 2026. A handful of open-source "portfolio as MCP server" projects already exist (sohumsuthar/portfolio-mcp, Mrinank-Bhowmick/MCV) - this follows the same pattern, written from scratch against Aiman's own data rather than reusing their code, and is a fast, small, genuinely useful build: a recruiter's own AI assistant can query it directly instead of trusting a resume parser.

Related MCP server: mcp-me

What it exposes

Six tools:

  • get_about() - summary, current role, education

  • get_experience(role="") - work experience, optionally filtered to one role

  • get_projects(name="") - project write-ups, optionally filtered to one project

  • get_skills(category="") - skills, optionally filtered to one category

  • get_contact() - email, portfolio site, LinkedIn, GitHub, location

  • search_portfolio(query) - free-form search across everything, for when the caller doesn't know which specific tool applies

Five resources, the raw markdown files, addressable by URI (portfolio://about, portfolio://experience, portfolio://projects, portfolio://skills, portfolio://contact) - for a client that wants to preload the whole knowledge base as context rather than call tools one at a time.

Both are included deliberately, not just tools: MCP draws a real distinction between tools (model-invoked actions) and resources (passive, URI-addressed data), and this server demonstrates both rather than only the one most tutorials show.

Decisions

Tools return filtered text, not structured JSON. get_experience("PookiDevs") returns the matching markdown section as a string, not a parsed object with named fields. For a knowledge base this small (a handful of files, one person), the model reading a well-formed markdown section is at least as useful as it parsing a JSON schema, and it means adding a new experience entry to data/experience.md never requires touching server.py.

Search is word-overlap, not embeddings. search_portfolio counts query keyword occurrences per section rather than using a vector index. This server has no other dependency beyond the mcp package itself - no ChromaDB, no scikit-learn, no model to download - which keeps it a genuinely fast install and matches the scale of the problem (a few dozen short sections, not a large corpus). If you want the sibling project's smarter retrieval instead, search_portfolio is a small function to swap for a call into ask-my-portfolio's app/rag.py.

Data files mirror ask-my-portfolio/data/. Both projects describe the same person, so data/about.md, experience.md, projects.md, and skills.md here are copies of the ones in the ask-my-portfolio project (plus contact.md, which only this server needs). Keep them in sync by hand when you update either one, or symlink data/ between the two projects if you keep them checked out side by side.

Tested

python test_server.py drives the server through create_connected_server_and_client_session - the real MCP protocol over in-memory streams (list_tools, call_tool, list_resources, read_resource), exactly what a real client does, not just direct Python function calls. All 6 tools, all 5 resources, and an unmatched-filter edge case are checked; the current run passes all 16 checks with zero setup, zero API keys, and zero network calls, since everything here is local markdown.

Project structure

server.py          FastMCP server: tools, resources, search
test_server.py      protocol-level integration test
data/
  about.md, experience.md, projects.md, skills.md, contact.md
requirements.txt, .gitignore

Running it

See SETUP.md for wiring this into Claude Desktop or Claude Code. Short version:

pip install -r requirements.txt
python test_server.py     # prove it works, no client needed
python server.py          # starts the stdio MCP server
F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes a personalized AI agent that reads your resume and provides intelligent responses about your professional background through a standardized MCP server interface with RAG capabilities.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Transforms professional data (CV, projects) into MCP tools for LLMs to query, list, match job descriptions, and ask about experience.
    77
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables retrieval-augmented generation over a local markdown corpus, allowing grounded, cited answers via an MCP tool or CLI.
    9
    MIT

View all related MCP servers

Related MCP Connectors

  • Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.

  • MCP-native collaborative markdown editor with real-time AI document editing

  • Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.

View all MCP Connectors

Latest Blog Posts

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/aim-t/portfolio-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server