trippyogi-mcp
An MCP server that exposes the author's resume as structured data and fact-checks natural-language claims against public receipts, returning verified, partially verified, or not verifiable verdicts.
README
trippyogi-mcp
An MCP server that lets you fact-check my resume.
Most portfolios ask a reviewer to trust a set of claims. This one exposes the underlying work as structured data and gives every claim one of three answers: verified, partially_verified, or not_verifiable.
not_verifiable is intentional. A private production metric or old employer project does not become publicly proven because it appears on a resume.
Tools
| Tool | Returns |
|---|---|
get_projects |
Shipped or publicly inspectable work with source, package, live, and receipt URLs where available. |
get_experience |
Roles, dates, and what was built, aligned to the public resume. |
get_availability |
Current role targets, work modes, and public contact paths. |
verify_claim |
A verdict, supported and unsupported portions, estimate marker, and receipt URLs for a natural-language claim. |
The server is public, stateless, unauthenticated, and read-only. It applies a best-effort in-process rate limit per serverless isolate (not a shared global limiter). Prefer an edge/WAF limit in front of /mcp for production abuse control. It records the tool name and timestamp for each call and never logs tool inputs.
verify_claim matches only normalized canonical claim text or explicit aliases, and fails closed when the query adds unsupported terms or conflicting numbers.
Run it
Requires Node 22 or newer.
npm ci
npm run check
npm test
npm run generate:site
npm run dev
The endpoint is http://localhost:3000/mcp; health is at /health.
Test with the MCP Inspector:
npx @modelcontextprotocol/inspector
Select Streamable HTTP and connect to http://localhost:3000/mcp.
Example
Input:
{
"claim": "Legendari had 673 Kickstarter backers"
}
Output:
{
"verdict": "verified",
"claim": "Legendari had 673 Kickstarter backers",
"matchedClaim": "Legendari was backed by 673 Kickstarter backers who pledged $190,292 against a $125,000 goal.",
"supported": "Kickstarter publicly reports the backer count, pledged amount, and campaign goal.",
"unsupported": null,
"estimate": false,
"evidence": [
{
"label": "Legendari Kickstarter",
"url": "https://www.kickstarter.com/projects/metatravelers/legendari-action-figures",
"kind": "independent"
}
]
}
Content model
content/profile.jsonis the shared source for projects, experience, availability, the Markdown surfaces, and JSON-LD.content/claims.jsonmaps resume claims to receipts and caveats.npm run generate:siteproducessite/llms.txt,site/resume.md,site/projects.md, andsite/person.jsonldfrom the same source.
The natural-language matcher is deterministic. It does not use an LLM, browse at request time, or invent evidence. Numeric conflicts fail closed: asking it to verify 9,000 units will not match a receipt for 7,777.
Deploy
Vercel
- Import this repository as a new Vercel project (framework: Other / null).
- Set
ALLOWED_HOSTSto the deployment hostname plustrippyogi.comandwww.trippyogi.com, comma-separated. - Disable Vercel Authentication on the project — this endpoint is intentionally public.
- Deploy. Production alias:
https://trippyogi-mcp.vercel.app./mcpand/healthare serverless; generated Markdown surfaces are static. - In the existing
trippyogi.comVercel project, add an external rewrite from/mcpto the MCP project's/mcpURL. This keeps the public connector URL on the portfolio domain.
Example rewrite in the portfolio project's vercel.json:
{
"rewrites": [
{
"source": "/mcp",
"destination": "https://trippyogi-mcp.vercel.app/mcp"
}
]
}
Copy the generated files into the portfolio site's public directory so they resolve as /llms.txt, /resume.md, and /projects.md. Add the contents of site/person.jsonld to the homepage in a <script type="application/ld+json"> element.
Container
docker build -t trippyogi-mcp .
docker run --rm -p 3000:3000 \
-e TRUST_PROXY=1 \
-e ALLOWED_HOSTS=trippyogi.com,localhost \
trippyogi-mcp
Put the service behind the same reverse proxy as the portfolio and route /mcp to port 3000. Apply a second edge rate limit there.
Fork it for your own resume
- Replace the person, project, experience, and availability records in
content/profile.json. - Replace every record in
content/claims.json; do not carry over another person's evidence. - Update allowed hosts, package metadata, and JSON-LD.
- Run
npm run checkand inspect all generated files before deploying.
If a claim has no public receipt, keep it and mark it not_verifiable, or remove it. Do not turn a self-authored resume into its own verification source.
Security and privacy
There are no write tools, user records, analytics payloads, or contact-discovery features. See SECURITY.md for the reporting path and design constraints.
MIT licensed. The personal data and claims are examples, not an invitation to impersonate their subject.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.