Skip to main content
Glama
Portfolio MCP Server

Portfolio MCP Server

Portfolio MCP Server

A dual-stack Model Context Protocol (MCP) server for Srikanth Karthikeyan's portfolio data, available in both Node.js and Python implementations with containerized deployment options.

Features

The server provides the following tools:

🔍 search_portfolio

Search through portfolio data by keywords, category, or content.

Parameters:

  • query (required): Search query to find relevant information

  • category (optional): Filter by specific category

  • limit (optional): Maximum results to return (default: 10)

📂 get_portfolio_categories

Get all available categories in the portfolio data.

🎯 get_portfolio_item

Get a specific portfolio item by ID.

Parameters:

  • id (required): The ID of the portfolio item

📞 get_contact_info

Get all contact information.

💻 get_tech_stack

Get detailed information about technical skills and tools.

Parameters:

  • type (optional): Filter by specific tech type

Related MCP server: Interactive Curriculum MCP Server

🚀 Installation & Deployment

Package Registries

Node.js Packages (Both Registries)

# From npmjs.com (public)
npm install srikanth-mcp-portfolio-server

# From GitHub Packages
npm install @srikanth-karthi/srikanth-mcp-portfolio-server

Python Package

# From PyPI (public)
pip install srikanth-mcp-portfolio

Docker Deployment (Multiple Registries)

From Docker Hub (Public)

# Node.js version
docker run -it srikanthkarthi/mcp-portfolio-server:nodejs-latest

# Python version
docker run -it srikanthkarthi/mcp-portfolio-server:python-latest

# Multi-runtime version
docker run -it srikanthkarthi/mcp-portfolio-server:multi-latest

From GitHub Container Registry

# Node.js version
docker run -it ghcr.io/srikanth-karthi/mcp-portfolio-server:nodejs-latest

# Python version
docker run -it ghcr.io/srikanth-karthi/mcp-portfolio-server:python-latest

# Multi-runtime version
docker run -it ghcr.io/srikanth-karthi/mcp-portfolio-server:multi-latest

Using Docker Compose (Local Development)

# Choose one:
docker compose up mcp-portfolio-nodejs    # Node.js only
docker compose up mcp-portfolio-python    # Python only
docker compose up mcp-portfolio-multi     # Both runtimes

Development Setup

Node.js Development

npm install
npm run dev

Python Development

pip install -e .
python -m mcp_portfolio_server.server

🔧 Claude Desktop Integration

Using Docker Hub (Public)

{
  "mcpServers": {
    "portfolio": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "srikanthkarthi/mcp-portfolio-server:latest"
      ]
    }
  }
}

Using GitHub Container Registry

{
  "mcpServers": {
    "portfolio": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/srikanthkarthi/mcp-portfolio-server:latest"
      ]
    }
  }
}

Using npm Package (Public Registry)

{
  "mcpServers": {
    "portfolio": {
      "command": "npx",
      "args": ["srikanth-mcp-portfolio-server"]
    }
  }
}

Using npm Package from GitHub Packages

{
  "mcpServers": {
    "portfolio": {
      "command": "npx",
      "args": ["@srikanth-karthi/srikanth-mcp-portfolio-server"]
    }
  }
}

Using Python Package

{
  "mcpServers": {
    "portfolio": {
      "command": "python",
      "args": ["-m", "mcp_portfolio_server.server"]
    }
  }
}

Development Mode

{
  "mcpServers": {
    "portfolio": {
      "command": "node",
      "args": ["/path/to/mcp-portfolio/src/index.js"],
      "cwd": "/path/to/mcp-portfolio"
    }
  }
}

📦 Automated Building & Publishing

GitHub Actions Workflows

The repository includes automated CI/CD workflows:

  • Triggers: Git tags (v*) or manual workflow dispatch

  • Builds: Multi-architecture Docker images (AMD64/ARM64)

  • Publishes:

    • Node.js package to GitHub Packages

    • Python package to PyPI

    • Docker images to GitHub Container Registry

Manual Building

Docker Build Commands

# Build Node.js image
docker build --target nodejs -t mcp-portfolio:nodejs .

# Build Python image
docker build --target python -t mcp-portfolio:python .

# Build multi-runtime image
docker build --target multi -t mcp-portfolio:multi .

Configuration Options

Environment Variable

Description

Default

NODE_ENV

Node.js environment

production

PYTHONUNBUFFERED

Python output buffering

1

DATA_PATH

Portfolio data file path

/app/db/portfolio-data/ai-portfolio.json

Switch between Node.js and Python in multi-runtime container:

# In docker-compose.yml, uncomment to use Python:
command: ["python3", "-m", "mcp_portfolio_server.server"]

Data Categories

The server provides access to the following portfolio categories:

  • Profile Summary: Overview and introduction

  • Current Position: Job title, company, duration

  • Current Work: Responsibilities and projects

  • Experience: Work history and achievements

  • Education: Academic background

  • Tech Stack: Programming languages, frameworks, tools

  • Certifications: Professional certifications

  • Volunteerism: Community service and activities

  • Contact: Social media and professional links

  • Languages: Language proficiency

Example Queries

  • Search for cloud experience: search_portfolio("cloud", "Experience")

  • Get all tech stack info: get_tech_stack()

  • Find contact information: get_contact_info()

  • Search for certifications: search_portfolio("aws certification")

License

MIT

Available Tools

5 tools
get_contact_infoA

Get all contact information for Srikanth

Inputs: no named parameters.

get_portfolio_categoriesA

Get all available categories in the portfolio data

Inputs: no named parameters.

get_portfolio_itemA

Get a specific portfolio item by ID

Inputs: id (required).

get_tech_stackB

Get detailed information about Srikanth's technical skills and tools

Inputs: type.

search_portfolioB

Search through Srikanth's portfolio data by keywords, category, or content

Inputs: query (required), limit, category.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool targets a distinct purpose: search_portfolio is for free-form discovery, get_portfolio_categories and get_portfolio_item handle browsing by category or ID, while get_contact_info and get_tech_stack provide specific static information. There is no meaningful overlap that would confuse an agent.

    Naming Consistency4/5

    Most tools follow the 'get_' verb pattern, but search_portfolio deviates by using 'search_' instead. The two get_portfolio_* tools share a clear prefix, and the remaining get_* tools are still predictable and consistent in style.

    Tool Count5/5

    With 5 tools, the server is well-scoped for a personal portfolio. Each tool serves a distinct and necessary function without redundancy or excessive granularity, making the set feel curated and complete for its purpose.

    Completeness4/5

    The read-only portfolio surface is well covered: search, category listing, item retrieval, contact information, and tech stack. A minor gap is the lack of an explicit 'list all items' operation, though search_portfolio may fill that role depending on implementation.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants and LLM clients to query a professional CV and portfolio, including work history, technical skills, projects, job compatibility evaluation, education, and contact details.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables querying a personal portfolio through natural language, providing profile, skills, projects, services, availability, and contact information via read-only tools.
      7
      8 npm
      MIT