Public Portfolio MCP
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., "@Public Portfolio MCPsearch your portfolio for projects about security"
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.
Public Portfolio MCP
A small, production-minded read-only JSON-RPC service for exposing a deliberately bounded engineering portfolio to recruiters and external agents.
The interesting part is not the profile data. It is the boundary: callers can invoke three purpose-built tools, but they cannot choose a database table, filesystem path, URL, command, or private application module.
What this demonstrates
Strict TypeScript and zero production dependencies
MCP-style
initialize,tools/list, andtools/callover JSON-RPC 2.0Fixed read-only tool allowlist with exact argument keys
Payload limits, rate limiting, CORS allowlisting, and security headers
Bounded public text and prompt-injection-shaped input rejection
Stable errors without stack traces or request payload logging
Tests, Docker, GitHub Actions, architecture notes, ADR, and threat model
Related MCP server: mundigital
Architecture
Untrusted client
|
v
HTTP safeguards
|
v
JSON-RPC method allowlist
|
v
Strict tool arguments
|
v
Immutable public recordsSee architecture, threat model, and ADR 0001.
Run locally
cp .env.example .env
npm ci
npm test
npm run devHealth check:
curl http://localhost:3000/healthList tools:
curl http://localhost:3000/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Search projects:
curl http://localhost:3000/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_projects","arguments":{"query":"security","limit":3}}}'Security decisions
The server does not expose a generic query tool. Search runs in memory over known public fields. Tool schemas reject additional properties, and the server does not include a database or outbound HTTP adapter.
Pattern rejection is defense in depth. The main control is the absence of dangerous capabilities.
Trade-offs
The in-memory rate limiter is appropriate for this standalone example, not for a multi-instance global quota. A production deployment should use an external atomic store and trust forwarded client identity only from a controlled edge proxy.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Public portfolio MCP for resume, services, availability, project evidence, and introductions.
- BlockReqOAuthcom.blockreq
Read-only BlockReq docs, network catalog, and JSON-RPC calls across EVM chains
1 Akshay Shetty's engineering portfolio and resume, queryable by AI. OAuth-secured.
Profile server for kazejev.com: biography, skills, projects and education.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA server that enables AI assistants to interact with LinkedIn programmatically for job searching, resume/cover letter generation, and managing job applications through standardized JSON-RPC requests.28MIT
- AlicenseNot gradedqualityDmaintenanceExposes a public, read-only professional profile with tools to search resume evidence, fetch curated links, and generate career briefs for LLM agents.MIT
- AlicenseNot gradedqualityDmaintenanceExposes core recruiting tools such as candidate ranking, profile retrieval, honeypot audits, and job description parsing via stdio protocol.MIT
- FlicenseAqualityDmaintenanceExposes a personal portfolio's resume, projects, skills, certifications, and live GitHub repositories as tools for AI assistants to query via natural language.6-