Portfolio MCP Server
Click on "Deploy 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., "@Portfolio MCP Server search portfolio for machine learning"
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.
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
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-serverPython Package
# From PyPI (public)
pip install srikanth-mcp-portfolioDocker 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-latestFrom 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-latestUsing 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 runtimesDevelopment Setup
Node.js Development
npm install
npm run devPython 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 dispatchBuilds: 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.js environment |
|
| Python output buffering |
|
| Portfolio data file path |
|
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 toolsget_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
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Query portfolio case studies, verified developer tools, and the AI-UI design system.
Query professional profiles, search candidates, and get AI-powered summaries and job fit analysis.
Akshay Shetty's engineering portfolio and resume, queryable by AI. OAuth-secured.
An interactive portfolio built for AI conversations. Browse work, services, and book calls.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables recruiters to query a person's career, projects, and impact using natural language, acting as a living resume.-
- AlicenseNot gradedqualityBmaintenanceEnables 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
- FlicenseAqualityCmaintenanceEnables searching and retrieving GitHub portfolio repositories and their READMEs through natural language.3-
- AlicenseAqualityCmaintenanceEnables querying a personal portfolio through natural language, providing profile, skills, projects, services, availability, and contact information via read-only tools.78 npmMIT