MSPortfolio — MCP-Native Engineering Portfolio
by ManSio · remote · no sign-in to list tools · v1.0.4 · published by GitHub user ManSio
MCP server for Mikhail (ManSio)'s engineering portfolio: projects, principles, lab, evidence.
18 tools: 5 change things and 13 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things5Claude Code: ask: see these tools
- Only reads13Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http msp-portfolio https://msp-portfolio.mansio-dev.workers.dev/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
18 tools
Changes things 5Claude Code: ask
simulate_architectureSimulate how a project's architecture behaves under a scenario (load spike, node loss, cache cold, LLM saturation).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Simulate how a project's architecture behaves under a scenario (load spike, node loss, cache cold, LLM saturation). Returns latency percentiles per load and bottleneck analysis.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
verify_articleVerify an article against the primary source (Dev.to): does the owner have a published article matching the query?No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Verify an article against the primary source (Dev.to): does the owner have a published article matching the query? Fetches the live Dev.to API for the owner's articles and returns the real title/date/reactions/url when found — or an honest 'not found'. Use it to ground claims like 'he wrote about agent memory' in the platform's data instead of the portfolio's own words. Read-only, open world (network fetch).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
verify_claimGround a claim about the owner against the portfolio's data (profile, projects, principles, timeline, antipatterns, experiments, diary, known issues).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Ground a claim about the owner against the portfolio's data (profile, projects, principles, timeline, antipatterns, experiments, diary, known issues). Deterministic: returns the evidence records that support the claim (with source paths) and a supported verdict. Use it before asserting a fact about the owner, or to check what an answer was based on.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
verify_packageVerify an npm package against the primary source (registry.npmjs.org): does it exist, latest version, publish date, description, license, maintainers — and is the owner among them?No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Verify an npm package against the primary source (registry.npmjs.org): does it exist, latest version, publish date, description, license, maintainers — and is the owner among them? Use it to ground claims like 'he published an npm package' in the registry's data instead of the portfolio's. Honest 'not found' when the package does not exist. Read-only, open world (network fetch).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
verify_repoVerify a GitHub repository against the primary source: fetches the actual repo metadata (exists, language, description, topics, stars, last push) from the GitHub API and cross-chec…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Verify a GitHub repository against the primary source: fetches the actual repo metadata (exists, language, description, topics, stars, last push) from the GitHub API and cross-checks it with the portfolio's project record when the repo is one of the owner's projects (language/stack agreement). With readme:true it also returns the actual README text, so claims about what the project does can be checked against the repository's own words. Use it to ground claims like 'the repo is Python' or 'he maintains mscodebase-intelligence' with live data instead of trusting the claim. Read-only, open world (network fetch).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
Only reads 13Claude Code: allow
analyze_stackCompare the owner's stack against a job's required skills.No findings
Why it is in this group
- The name "analyze_stack" says "analyze": a word for reading.
Description, as the server wrote it Compare the owner's stack against a job's required skills. Returns per-skill match with evidence and coverage.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_antipatternsGet the owner's antipattern museum — real engineering mistakes with why they were bad, how they were fixed, and the lesson.No findings
Why it is in this group
- The name "get_antipatterns" says "get": a word for reading.
Description, as the server wrote it Get the owner's antipattern museum — real engineering mistakes with why they were bad, how they were fixed, and the lesson. Read-only, closed world.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_articlesGet recent Dev.to articles with reading time, tags and links.No findings
Why it is in this group
- The name "get_articles" says "get": a word for reading.
Description, as the server wrote it Get recent Dev.to articles with reading time, tags and links.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_commit_historyGet recent commit history across the owner's public repos.No findings
Why it is in this group
- The name "get_commit_history" says "get": a word for reading.
Description, as the server wrote it Get recent commit history across the owner's public repos. Reads the deployed snapshot and reports its `fetchedAt` and `ageMinutes`, so 'how current is this?' is answered by the payload instead of by trusting this description. Use it to answer 'what has he been building lately' or 'show the hardest bugs he has fixed'.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_diaryGet the owner's engineering diary — incidents, root causes, fixes and guards, each tagged with a pattern (NEW vs recurring).No findings
Why it is in this group
- The name "get_diary" says "get": a word for reading.
Description, as the server wrote it Get the owner's engineering diary — incidents, root causes, fixes and guards, each tagged with a pattern (NEW vs recurring). Use it to answer 'what broke and how did you fix it' or 'show your hardest debugging session'. Read-only, closed world.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_engineering_principlesGet engineering principles with real examples and A/B-style counterfactuals.No findings
Why it is in this group
- The name "get_engineering_principles" says "get": a word for reading.
Description, as the server wrote it Get engineering principles with real examples and A/B-style counterfactuals.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_experimentsGet the owner's engineering experiments — hypothesis, command, raw result and verdict (confirmed/refuted/partial) for each.No findings
Why it is in this group
- The name "get_experiments" says "get": a word for reading.
Description, as the server wrote it Get the owner's engineering experiments — hypothesis, command, raw result and verdict (confirmed/refuted/partial) for each. Use it to answer 'what did you measure' or 'show me an experiment you ran'. Includes negative results (approaches that failed). Read-only, closed world.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_issue_detailGet the full detail of a single known issue by its ID (e.g.No findings
Why it is in this group
- The name "get_issue_detail" says "get": a word for reading.
Description, as the server wrote it Get the full detail of a single known issue by its ID (e.g. 'KI-109'). Drills into one open problem: status, temperature, owner, linked source and the raw problem statement. Returns a clear not-found with the available IDs if the ID does not match. Read-only, closed world.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_known_issuesGet the owner's known-issues board — open debt with status, temperature (stable/watching) and deadlines.No findings
Why it is in this group
- The name "get_known_issues" says "get": a word for reading.
Description, as the server wrote it Get the owner's known-issues board — open debt with status, temperature (stable/watching) and deadlines. Use it to answer 'what's still broken' or 'what are you working on'. Read-only, closed world.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_profileGet the owner's professional profile summary, plus nextSteps — concrete ways to continue (contact channels, GitHub, MCP connect).No findings
Why it is in this group
- The name "get_profile" says "get": a word for reading.
Description, as the server wrote it Get the owner's professional profile summary, plus nextSteps — concrete ways to continue (contact channels, GitHub, MCP connect). Use it as the first tool in an interview.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_projectsGet portfolio projects with stack, highlights, and decision logs.No findings
Why it is in this group
- The name "get_projects" says "get": a word for reading.
Description, as the server wrote it Get portfolio projects with stack, highlights, and decision logs. Optional filter by stack tag.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_timelineGet the engineering decision timeline.No findings
Why it is in this group
- The name "get_timeline" says "get": a word for reading.
Description, as the server wrote it Get the engineering decision timeline.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
search_projectsFree-text search across portfolio projects — name, tagline, description, stack and decision-log rationale.No findings
Why it is in this group
- The name "search_projects" says "search": a word for reading.
Description, as the server wrote it Free-text search across portfolio projects — name, tagline, description, stack and decision-log rationale. Returns matched projects with a score and the fields that matched. Use when a fixed stack-tag filter is too narrow (e.g. 'RAG', 'latency', 'Zed'). Read-only, closed world.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.4. Values in angle brackets are yours to fill in.
claude mcp add --transport http msp-portfolio https://msp-portfolio.mansio-dev.workers.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__msp-portfolio__get_profile",
"mcp__msp-portfolio__get_projects",
"mcp__msp-portfolio__search_projects",
"mcp__msp-portfolio__get_engineering_principles",
"mcp__msp-portfolio__get_timeline",
"mcp__msp-portfolio__get_articles",
"mcp__msp-portfolio__get_commit_history",
"mcp__msp-portfolio__get_antipatterns",
"mcp__msp-portfolio__analyze_stack",
"mcp__msp-portfolio__get_experiments",
"mcp__msp-portfolio__get_diary",
"mcp__msp-portfolio__get_known_issues",
"mcp__msp-portfolio__get_issue_detail"
],
"ask": [
"mcp__msp-portfolio__simulate_architecture",
"mcp__msp-portfolio__verify_claim",
"mcp__msp-portfolio__verify_repo",
"mcp__msp-portfolio__verify_article",
"mcp__msp-portfolio__verify_package"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as msp-portfolio. Review it before you use it.
