Skip to content

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.

Changes · 5

18 tools: 5 change things and 13 only read.

Scanned Oct 21, 2026

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/mcp

Tools

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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.