portfolio-mcp-server
An MCP (Model Context Protocol) server that connects AI tools — Claude Desktop, Cursor, GitHub Copilot — directly to your universal-portfolio instance.
What it does
Exposes all 32 portfolio tools over stdio so any MCP-compatible AI client can:
- Read your profile, projects, skills, certifications, education, experience, and testimonials
- Create, update, and delete any portfolio item (with a write-enabled API key)
Related
- universal-portfolio — the full-stack portfolio app this server connects to: github.com/muhammad-awais-web-dev/universal-portfolio
---
Setup
1. Install dependencies
npm install
2. Configure environment
cp .env.example .env
Edit .env:
# URL of your running portfolio (local or deployed)
PORTFOLIO_URL=https://your-portfolio-domain.com
# API key from portfolio admin → Settings → API Keys
# Enable "can_write" on the key for write tool access
MCP_API_KEY=your_api_key_here
3. Test manually
npm start
For development with auto-reload:
npm run dev
The server communicates over stdio — it won't print anything until an MCP client connects. Startup messages appear on stderr.
---
Connect to Claude Desktop
Edit ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"portfolio": {
"command": "npx",
"args": ["tsx", "/path/to/portfolio-mcp-server/src/index.ts"],
"env": {
"PORTFOLIO_URL": "https://your-portfolio-domain.com",
"MCP_API_KEY": "your_api_key_here"
}
}
}
}
Restart Claude Desktop. You'll see portfolio listed under MCP tools.
---
Connect to Cursor
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"portfolio": {
"command": "npx",
"args": ["tsx", "/path/to/portfolio-mcp-server/src/index.ts"],
"env": {
"PORTFOLIO_URL": "https://your-portfolio-domain.com",
"MCP_API_KEY": "your_api_key_here"
}
}
}
}
---
Connect to VS Code
Requires VS Code 1.99+ with the GitHub Copilot extension.
Create or edit .vscode/mcp.json in your workspace (or add to your user settings.json under "mcp"):
{
"servers": {
"portfolio": {
"type": "stdio",
"command": "npx",
"args": ["tsx", "/path/to/portfolio-mcp-server/src/index.ts"],
"env": {
"PORTFOLIO_URL": "https://your-portfolio-domain.com",
"MCP_API_KEY": "your_api_key_here"
}
}
}
}
Open the Copilot Chat panel, switch to Agent mode, and the portfolio server will appear under available tools.
---
Connect to GitHub Copilot CLI
Edit ~/.copilot/mcp-config.json:
{
"mcpServers": {
"portfolio": {
"type": "stdio",
"command": "npx",
"args": ["tsx", "/path/to/portfolio-mcp-server/src/index.ts"],
"env": {
"PORTFOLIO_URL": "https://your-portfolio-domain.com",
"MCP_API_KEY": "your_api_key_here"
}
}
}
}
---
Available Tools (32 total)
Read tools — any API key
| Tool | Description | |------|-------------| | get_profile | Profile info, bio, social links | | list_projects | Published projects (filter by category/skill, paginated) | | get_project | Single project by ID or slug | | list_skills | All skills (filter by category, paginated) | | get_skill | Single skill by ID or name | | list_certifications | All certifications | | get_certification | Single certification by ID | | list_education | Education history | | get_education | Single education entry by ID | | list_experience | Work experience | | get_experience | Single experience entry by ID | | list_testimonials | Testimonials (filter featured) | | get_testimonial | Single testimonial by ID |
Write tools — API key with can_write = true
| Tool | Description | |------|-------------| | update_profile | Update name, bio, email, social links, etc. | | create_project | Create a new project | | update_project | Update project by ID (including body_html) | | delete_project | Delete project by ID | | create_skill | Create a new skill | | update_skill | Update skill by ID | | delete_skill | Delete skill by ID | | create_certification | Create a new certification | | update_certification | Update certification by ID | | delete_certification | Delete certification by ID | | create_education | Create an education entry | | update_education | Update education by ID | | delete_education | Delete education by ID | | create_experience | Create a work experience entry | | update_experience | Update experience by ID | | delete_experience | Delete experience by ID | | create_testimonial | Create a testimonial | | update_testimonial | Update testimonial by ID | | delete_testimonial | Delete testimonial by ID |
---
Example prompts (once connected to Claude/Cursor/Copilot)
- "List all my projects"
- "What skills do I have in the Backend category?"
- "Update my profile bio to: I'm a full-stack developer..."
- "Create a new skill called Docker in the DevOps category"
- "Update project 5 — set body_html to:
<p>New description</p>" - "Publish project with slug 'my-app'"
---
Requirements
- Node.js 18+
- A running universal-portfolio instance
- An MCP API key (generated in the portfolio admin panel)











