MCP server for Srikanth's portfolio data
Project description
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 informationcategory(optional): Filter by specific categorylimit(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
🚀 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/sample-data.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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file srikanth_mcp_portfolio-1.4.0.tar.gz.
File metadata
- Download URL: srikanth_mcp_portfolio-1.4.0.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44be4398fa95482501ca676d0296920c815fc8682599e059d013dba6606cf7d8
|
|
| MD5 |
e895cf26a3fd2a1ac70cbabc1ef2aead
|
|
| BLAKE2b-256 |
559f70668d3e6e36b432876454067cf9775bcd9ac21450d2fa4ca561bdbdb4aa
|
Provenance
The following attestation bundles were made for srikanth_mcp_portfolio-1.4.0.tar.gz:
Publisher:
publish-github-packages.yml on srikanth-karthi/mcp-portfolio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
srikanth_mcp_portfolio-1.4.0.tar.gz -
Subject digest:
44be4398fa95482501ca676d0296920c815fc8682599e059d013dba6606cf7d8 - Sigstore transparency entry: 619074573
- Sigstore integration time:
-
Permalink:
srikanth-karthi/mcp-portfolio@464451c4905954898386fe878332e9780f629507 -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/srikanth-karthi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-github-packages.yml@464451c4905954898386fe878332e9780f629507 -
Trigger Event:
push
-
Statement type:
File details
Details for the file srikanth_mcp_portfolio-1.4.0-py3-none-any.whl.
File metadata
- Download URL: srikanth_mcp_portfolio-1.4.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
423347ab911065af9726e873a1547dcd02f3c1edca623a515b5a7a0de1853ded
|
|
| MD5 |
62ecf37871d7e05350e22d1a588a7cc7
|
|
| BLAKE2b-256 |
45f3fbdf08ef15b0c9a5d9f2f13271fbe5682c439971f535da4f19411ad0b9f8
|
Provenance
The following attestation bundles were made for srikanth_mcp_portfolio-1.4.0-py3-none-any.whl:
Publisher:
publish-github-packages.yml on srikanth-karthi/mcp-portfolio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
srikanth_mcp_portfolio-1.4.0-py3-none-any.whl -
Subject digest:
423347ab911065af9726e873a1547dcd02f3c1edca623a515b5a7a0de1853ded - Sigstore transparency entry: 619074584
- Sigstore integration time:
-
Permalink:
srikanth-karthi/mcp-portfolio@464451c4905954898386fe878332e9780f629507 -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/srikanth-karthi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-github-packages.yml@464451c4905954898386fe878332e9780f629507 -
Trigger Event:
push
-
Statement type: