Skip to main content

Portfolio MCP Server

An MCP server that turns my AI project portfolio into something you can query, not just read.

Point any MCP client (Claude Desktop, Cursor, custom agents) at it and ask "What has Ayush built with LangGraph?" or "What's his flagship project?" — it answers from live structured data, not a static PDF.

License: MIT Python 3.10+ MCP CI Code style: ruff PRs Welcome

Portfolio MCP Server demo

Watch the full walkthrough ▶


Table of contents

Why this exists

Most AI-developer portfolios are a list of links. This is a working MCP server — the same protocol agentic products use to connect to tools — built around my own portfolio. It's both a real implementation of the spec and an answer to "show me you've actually built with MCP," not just talked about it.

Demo

MCP Inspector — tool discovery Live chat demo
MCP Inspector Demo MCP Chat Demo

Full video walkthrough (setup → tool calls → live answers): watch here ▶

Tools exposed

Tool Description
list_projects Short summary of all 9 projects
get_project_details(project_name) Full details for one project
search_projects_by_stack(technology) Find projects using a given technology
get_flagship_project The single best project to look at first
get_resume_summary Background, target role, and core stack

Quickstart

git clone https://github.com/ayush-s-tomar/portfolio-mcp-server.git
cd portfolio-mcp-server

python -m venv venv
source venv/bin/activate        # Windows: venv\Scripts\activate

pip install -r requirements.txt

Test it interactively with the MCP Inspector before wiring it into a client:

mcp dev server.py

This opens a browser UI where you can call each tool manually and inspect raw request/response payloads.

Connect to Claude Desktop

Open your Claude Desktop config file:

OS Path
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%\Claude\claude_desktop_config.json

If the file already has an mcpServers key with other servers in it, add the "portfolio" entry inside the existing object rather than overwriting the file. Use the absolute path to server.py on your machine:

{
  "mcpServers": {
    "portfolio": {
      "command": "python",
      "args": ["/absolute/path/to/portfolio-mcp-server/server.py"]
    }
  }
}

Restart Claude Desktop, then ask it something like:

"What projects has Ayush built with FastAPI?"

Claude will call search_projects_by_stack and answer from the live data.

Stack

Testing & CI

Every push and pull request runs through GitHub Actions:

  • Lint — ruff check .
  • Type check — mypy server.py
  • Smoke test — spins up the server and calls each of the 5 tools over stdio to confirm they return valid, schema-matching JSON

See .github/workflows/ci.yml. Run the same checks locally before opening a PR:

pip install -r requirements-dev.txt
ruff check .
mypy server.py
pytest

Project structure

portfolio-mcp-server/ ├── server.py # FastMCP server + tool definitions ├── data/ │ └── projects.json # Project data the tools read from ├── tests/ │ └── test_tools.py # Smoke tests for each tool ├── requirements.txt ├── requirements-dev.txt └── .github/workflows/ci.yml

Roadmap

  • search_projects_by_stack — support matching on multiple technologies at once
  • Add an HTTP/SSE transport option alongside stdio for remote clients
  • Publish to the MCP server registry
  • Cache resume/project data with a lightweight refresh endpoint instead of static JSON

License

Released under the MIT License.

Author

Ayush Tomar — GitHub

If this was useful as a reference for building your own MCP server, a ⭐ on the repo is appreciated.

mcp-name: io.github.ayush-s-tomar/portfolio-mcp-server

Metadata

Release files for portfolio-mcp-server 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for portfolio-mcp-server 1.0.1
File Size Uploaded Provenance
portfolio_mcp_server-1.0.1.tar.gz 8.0 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for portfolio-mcp-server 1.0.1
File Interpreter ABI Platform
portfolio_mcp_server-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 8.0 MB

Release files / portfolio_mcp_server-1.0.1.tar.gz

Download URL portfolio_mcp_server-1.0.1.tar.gz
Size 8.0 MB
Tags Source
SHA-256 checksum
How to use checksums
9e20757110994934c5185d0c50faaba401ce31901d22162aa1fd06033dcdef59
BLAKE2b-256 checksum
How to use checksums
6924f478d315ddff22cbf08f30215cffacb8f0fdbcf136581c0fb9ece177cab9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release files / portfolio_mcp_server-1.0.1-py3-none-any.whl

Download URL portfolio_mcp_server-1.0.1-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
45688c940b830e0f642d86ddc90fc8df7110eb43ec81b94645e617c915b16f25
BLAKE2b-256 checksum
How to use checksums
fc21888163164a84c45304cb4137d39a3a9ffc9ba461b6b6b26cba2fa6cbb156
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Security for portfolio-mcp-server 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page