Provides tools for viewing the status of a Git repository and performing commit and push operations to manage version control for portfolio content.
Enables pushing changes to GitHub repositories, allowing for the automated management and synchronization of portfolio source code.
Supports managing blog posts in MDX format, including operations for creating, reading, updating, and deleting content with YAML frontmatter.
Click on "Install 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-mcpCreate a new blog post about TypeScript and push it to GitHub."
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
A Model Context Protocol (MCP) server for managing portfolio posts and projects. Allows Claude and other AI assistants to create, edit, and delete blog posts and projects, with Git integration for committing and pushing changes to GitHub.
Features
Post Management: Create, read, update, and delete MDX blog posts
Project Management: Manage projects in
projectsData.jsGit Integration: View status and commit/push changes with confirmation
MCP Protocol: Full MCP server implementation for Claude integration
REST API: Standalone REST API for web-based management
Setup
Copy the config file:
cp portfolio-mcp.config.json.example portfolio-mcp.config.jsonUpdate
portfolio-mcp.config.jsonwith your portfolio path:{ "portfolioPath": "/path/to/your/suthar-portfolio", "postsDir": "data/posts", "projectsFile": "data/projectsData.js", "git": { "remote": "origin", "branch": "main", "requireConfirmation": true }, "api": { "port": 3333, "host": "localhost" } }Install dependencies:
npm installBuild TypeScript:
npm run build
Running
MCP Server (for Claude Desktop)
REST API Server
Development
Watch mode for MCP:
Watch mode for REST API:
MCP Tools
Tool | Description |
| List all blog posts |
| Get post by slug |
| Create new post |
| Update existing post |
| Delete post |
| List all projects |
| Create project |
| Update project |
| Delete project |
| Show pending changes |
| Commit and push (requires confirmation) |
REST API Endpoints
GET /health- Health checkGET /api/posts- List postsGET /api/posts/:slug- Get postPOST /api/posts- Create postPUT /api/posts/:slug- Update postDELETE /api/posts/:slug- Delete postGET /api/projects- List projectsPOST /api/projects- Create projectPUT /api/projects/:title- Update projectDELETE /api/projects/:title- Delete projectGET /api/git/status- Git statusPOST /api/git/commit-push- Commit and push
Post Format
Posts are MDX files with YAML frontmatter:
Optional fields: pinned, pinnedtext
Project Format
Projects are managed in projectsData.js:
Git Workflow
The git_commit_push tool implements a two-step confirmation workflow:
First call (no
confirmedparam): Returns a dry-run showing what would be committedSecond call (with
confirmed: true): Executes the actual commit and push
This prevents accidental commits and allows users to review changes before pushing.
Claude Desktop Integration
Local Setup
Add to claude_desktop_config.json:
Deployment to Vercel (Recommended for Always-On Access)
This is the most secure approach since Vercel uses HTTPS and you already have sohumsuthar.com there.
Step 1: Push to GitHub
Step 2: Connect to Vercel
Option A: Standalone Vercel Project
Option B: Add to existing sohumsuthar.com project
Select your sohumsuthar project
Settings → Integrations → Add integration
Deploy from
portfolio-mcpdirectory
Step 3: Set Environment Variables
On Vercel dashboard, go to Settings → Environment Variables:
Step 4: Update Claude Desktop Config
For remote Vercel access:
Or better yet, use a simple proxy wrapper:
Create vercel-client.js:
Security Features
✅ HTTPS via Vercel
✅ API Key authentication (Bearer token)
✅ CORS restricted to your domain
✅ Environment variables for secrets (never in git)
✅ Request logging
✅ Rate limiting ready (can add)
✅ GITHUB_TOKEN for private repo access
Generating a GitHub Token
If your portfolio repo is private:
Click "Generate new token (classic)"
Give it
reposcopeCopy and add to Vercel env vars
License
MIT