プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。Google でログインするとレビューを書けます。プロトタイプ · 30分ごとに更新
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

saagarpatel.dev Portfolio

作者:saagpatelバージョン 0.1.0i★ 0iパソコンでもクラウドでも
レジストリ名io.github.saagpatel/portfolio-mcp

インストール方法

What it does

Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

  • Connects パソコンでもクラウドでも
  • Account or key No key needed
  • Category 会計・財務・税務

インストール

使っているAIアプリを選んで、設定をコピーしてください。

チェック 5/5 合格 · 質問内容は提供元のサーバー(mcp.saagarpatel.dev)を通ります · ✓ コマンド確認済み 2026年11月14日

まず:どの AI を使っていますか?

使っているアプリを選ぶと、下に手順が表示されます。

Claude につなげます · 約 2 分

キー不要、インストール不要 · claude.ai かデスクトップアプリで一度設定すれば、チャットで使えます · 無料アカウントは 1 つまで · Team/Enterprise はオーナー(Owner)が追加

  1. Claude の Connectors ページを開く

    CustomizeConnectors

    CustomizeConnectors1Add2https://…3Add4
  2. 「Add」→「Custom」→「Web」を押し、この 2 つを入力

    ここからコピーして Claude の同じ名前の欄に貼り付け、Continue を押します

    Name · 名前saagarpatel.dev Portfolio
    Remote MCP server URL · アドレスhttps://mcp.saagarpatel.dev/mcp

    Claude が検出したサインイン設定の画面で Continue を押す · Authentication は作者の説明どおり(Sign in now・Sign in when needed・No sign in)を選び Add を押します

  3. チャットで有効にする

    +Connectorssaagarpatel.dev Portfolio

  4. 試してみる

    saagarpatel.dev Portfolio を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude が saagarpatel.dev Portfolio を使っていると言うか、回答に saagarpatel.dev Portfolio のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

ChatGPT との接続はプランしだい

フル MCP:Web 版 ChatGPT の Business・Enterprise・Edu · Pro:読み取り/取得の権限で接続、データを変えるツールは使えないことがあります · Plus:公式ドキュメントで未確認。プラグイン画面にカスタム MCP を追加する項目があれば試せます · Web のみ

  1. Web 版 ChatGPT で MCP の追加ページを開く

    Plugins+Add custom MCP server

    ChatGPTPlugins1+2https://…3Create4
  2. 名前とアドレスを入力

    名前を入れ、Connection にアドレスを貼り付け、注意事項にチェックして Create as a plugin を押します

    Name · 名前saagarpatel.dev Portfolio
    Connection · アドレスhttps://mcp.saagarpatel.dev/mcp
  3. チャットで saagarpatel.dev Portfolio を選ぶ

    新しいチャットを開き、入力前にプラグインの一覧から saagarpatel.dev Portfolio を選びます

  4. 試してみる

    saagarpatel.dev Portfolio を使って、私に何ができるか教えて、1 つやってみせて

    ✓ ChatGPT が saagarpatel.dev Portfolio を使っていると言うか、回答に saagarpatel.dev Portfolio のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に OpenAI のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Claude Code につなげます · 約 2 分

キー不要、インストール不要

  1. ターミナルを開く

    Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く

  2. このコマンドを貼り付けて Enter

    claude mcp add --transport http --scope user portfolio https://mcp.saagarpatel.dev/mcp
  3. Claude Code で /mcp と入力

    saagarpatel.dev Portfolio が一覧にあり、接続済みと表示されれば OK です

  4. 試してみる

    saagarpatel.dev Portfolio を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude Code が saagarpatel.dev Portfolio を使っていると言うか、回答に saagarpatel.dev Portfolio のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Cursor につなげます · 約 2 分

キー不要、インストール不要

  1. このボタンで Cursor を開く

    Cursor で開く

    Cursor がインストールの確認をするので Install を押します

  2. Cursor の AI チャットを Agent モードで開く

  3. 試してみる

    saagarpatel.dev Portfolio を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Cursor が saagarpatel.dev Portfolio を使っていると言うか、回答に saagarpatel.dev Portfolio のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

VS Code につなげます · 約 2 分

キー不要、インストール不要

  1. このボタンで VS Code を開く

    VS Code で開く

    VS Code がインストールの確認をするので Install を押します

  2. VS Code の AI チャットを Agent モードで開く

  3. 試してみる

    saagarpatel.dev Portfolio を使って、私に何ができるか教えて、1 つやってみせて

    ✓ VS Code が saagarpatel.dev Portfolio を使っていると言うか、回答に saagarpatel.dev Portfolio のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください

MCP を使えるアプリをすべて見る →

Web 経由でつなぐアプリ用のアドレス

アドレスhttps://mcp.saagarpatel.dev/mcp

JSON 設定は下の「開発者向け」にあります

つまずいたら?saagarpatel.dev Portfolio を使っている人に聞いてみましょう💬 ディスカッション →
開発者向け:ターミナルのコマンドと JSON 設定

Web 経由

Claude Code

claude mcp add --transport http --scope user portfolio https://mcp.saagarpatel.dev/mcp

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "portfolio": {
      "url": "https://mcp.saagarpatel.dev/mcp"
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "portfolio": {
      "type": "http",
      "url": "https://mcp.saagarpatel.dev/mcp"
    }
  }
}

パソコンにインストール

Claude Code

claude mcp add --scope user portfolio -- npx -y saagar-portfolio-mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "portfolio": {
      "command": "npx",
      "args": [
        "-y",
        "saagar-portfolio-mcp"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "portfolio": {
      "command": "npx",
      "args": [
        "-y",
        "saagar-portfolio-mcp"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "portfolio": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "saagar-portfolio-mcp"
      ]
    }
  }
}

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

ひと目でわかる

週あたりのダウンロードi
46/週
接続方法
パソコンでもクラウドでも
最新バージョンi
0.1.0
レジストリ公開日i
2026年6月28日
コードの最終更新i
2026年11月13日
作者
saagpatel
パッケージ
npm: saagar-portfolio-mcp
ウェブサイト
saagarpatel.dev
レジストリでの状態
有効

使えるアプリ

このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。

インターネット経由でつなげるアプリ

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

パソコン上で動かせるアプリ

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

すべてのアプリと長所・短所 →

できること

ツールの名前と説明は、サーバーが2026年11月15日に返したそのままの内容です。書いたのは作者で、私たちではありません。プレーンテキストとして表示しています。

  • search

    Full-text (BM25) search across essays, book chapters, field notes, and pages. Returns ranked matches with a snippet, id, and canonical URL. Pass an id to get_document to read the full text.

  • get_document

    Return the full Markdown of one document by id, e.g. "writing/the-handoff" or "book/preface". Get ids from search or list_corpus.

  • list_corpus

    List every document with its id, title, type, date, and word count, plus per-type counts. The table of contents for the whole site. Optionally filter by type.

  • get_profile

    Return Saagar Patel's profile: name, one-line summary, site, and the about / now / uses pages. Start here to understand who this is and what they work on.

  • list_projects

    List the curated, public projects with stack, status, last-active date, and test/CI signals, plus anonymized portfolio-wide aggregates. Optionally filter by status.

  • list_repo_profiles

    List public-safe repo answering profiles with repo id, attention state, freshness, and proof counts. Profiles are static artifacts baked from saagarpatel.dev, not live repo health.

  • get_repo_profile

    Return one public-safe repo answering profile by repo_id, including purpose, safe commands, agent surfaces, proof refs, freshness, exclusions, limitations, and integrity metadata.

  • get_operant_results

    Return the public, sanitized OPERANT results: per-model operator-calibration-score (OCS) profiles, the headline figures, and the calibration-profiles (not a flat leaderboard) framing. Sourced from the published OPERANT mirror. Returns availability=false if no dataset was baked.

  • show_project_gallery

    Show the curated public projects as a gallery of cards: name, category, stack, lifecycle, last-active date, test/CI signals, and the public repository link, with archive-wide totals. Hosts that support MCP Apps render it as an interactive gallery; others get the same data as JSON

  • show_project_timeline

    Show the curated public projects on a timeline grouped by last-active month, colored by lifecycle, with the lifecycle breakdown of the whole archive. Hosts that support MCP Apps render it as an interactive timeline; others get the same data as JSON.

  • show_operant_results

    Show the public OPERANT benchmark as calibration-profile cards (historical OCS repeats, cross-provider TPR/FPR profiles, and the metric) with a playable demo: the reader acts as the operator's agent on six cases and is scored with the real OCS = TPR - FPR. The rows are historical

  • play_demo

    Play one of the site's interactive demos, rebuilt from the public corpus pages that fully describe them. "interleaving": the Interleaving Explorer, two writers on one database row, six schedules, warn vs enforce mode, and the lost update with its receipts. "failure-museum": match

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月15日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント saagpatel で確認済みです

  • ✓ 合格

    今もメンテナンスされている

    コードの最終更新:一昨日

  • ✓ 合格

    ライセンスがある

    MITを使用

  • ✓ 合格

    エンドポイントが応答する

    438ミリ秒で応答(HTTP 200)

  • – 対象外

    OAuthでサインイン

    サインイン不要

  • ✓ 合格

    ツールの説明に隠れた指示がない

    12件のツールの説明を読み、AIへの隠れた指示は見つかりませんでした

公開済みの脆弱性(OSV.dev)

OSV.dev に saagar-portfolio-mcp@0.1.0 の登録はありません

このバージョンのパッケージ本体のみ確認。すべての依存関係ではありません · 確認日 2026年11月15日

確認していること → · JSON

作者の方へ:再確認の依頼・情報の誤りの報告

話し合い

質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。

まだ投稿はありません。最初の質問や共有をどうぞ。

ここの投稿は利用者によるもので、PopNx チームのものではありません。

ログインして投稿

ユーザーレビュー

まだレビューはありません

ログインしてレビューを書く

会計・財務・税務のほかのサーバーとの比較i

  • このカテゴリのほかの3265件のうち0%よりスターが多い
  • このカテゴリのほかの3265件のうち14%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの3265件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

saagarpatel.dev Portfolioは安全ですか?

当てはまる基本チェック5項目のうち5項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

どちらでも使えます。パソコンにインストールしても、クラウド版につないでもかまいません。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は一昨日、最新バージョン(0.1.0)がレジストリに届いたのは5 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URL で接続するので、リモート MCP を受け付けるアプリでも使えます。例:Web 版 ChatGPT(Business 以上はフル MCP、Pro は読み取りのみ)。

代わりに使えるものは?

同じカテゴリには:SolidInvoice, Signal8, Journalit, Tapetide - Indian Stock Market MCP, Twelve Data

似た働きのほかの候補

同じカテゴリでほかの作者のもの。コマンドは確認済み。公式を先に、次にスター順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

SolidInvoice

Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.

作者:SolidInvoice成長中★ 9896 日前更新

クラウドで動く✓ 提供元 · solidinvoice.co

Signal8

SEC filings, dilution, insider & institutional ownership, and political-trade data for AI agents.

作者:signal8ai成長中↓ 431/週★ 4256 日前更新

パソコンでもクラウドでも✓ 提供元 · signal8.ai

Journalit

Trading journal in Obsidian. Ask Claude or ChatGPT about your trades; edits are previewed first.

作者:Cursivez成長中★ 2587 日前更新

クラウドで動く✓ 提供元 · journalit.co

Tapetide - Indian Stock Market MCP

48 tools for ~8,000 NSE & BSE stocks: quotes, screener, financials, filings, FII/DII, options

作者:Tapetide-hq成長中↓ 139/週★ 15118 日前更新

パソコンでもクラウドでも✓ 提供元 · tapetide.com

Twelve Data

Real-time and historical market data: stocks, forex, crypto, ETFs, fundamentals and 60+ indicators.

作者:twelvedata成長中★ 8611 日前更新

クラウドで動く✓ 提供元 · twelvedata.com
  • SolidInvoice — クラウドで動き、インストール不要 · キー不要
  • Signal8 — クラウドでもパソコンにインストールでも使える · キーが必要
  • Journalit — クラウドで動き、インストール不要 · キー不要
  • Tapetide - Indian Stock Market MCP — クラウドでもパソコンにインストールでも使える · キーが必要
  • Twelve Data — クラウドで動き、インストール不要 · キー不要

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

portfolio-mcp

The agent-native layer of saagarpatel.dev: a Model Context Protocol server that lets any AI agent query Saagar's writing, projects, public-safe repo profiles, and benchmark results directly, instead of scraping HTML.

Read-only. Stateless. Public. No auth, no tracking, no database, no runtime egress.

How it fits

The website stays a pure static site. This server is a sibling, not a backend bolted onto it:

  • Layer 0 (in the portfolio-index repo): the build emits a static machine corpus — corpus-index.json, per-document corpus/ .json, and .well-known/mcp.json — plus public-safe repo profile artifacts when present, served alongside the HTML. Already public.
  • Layer 1 (this repo, src/index.ts): a stateless Cloudflare Worker that bakes the Layer 0 corpus into its bundle and serves it over MCP (streamable HTTP, the WebStandardStreamableHTTPServerTransport). Zero runtime fetches.
  • Layer 2 (this repo, src/stdio.ts): the same server over stdio, for running locally via npx saagar-portfolio-mcp. Identical tool/resource/prompt surface.

The shared core (src/server.ts) is transport-agnostic; both layers wrap it.

Tool surface

All read-only (readOnlyHint: true). No tool takes a URL or filesystem path (no SSRF / exfil surface).

ToolPurpose
searchBM25 over the whole corpus; optional section filter, limit
get_documentFull Markdown of one document by id
list_corpusThe table of contents; optional type filter
get_profileThe "who is this" card (about / now / uses)
list_projectsCurated public-safe projects + anonymized aggregates
list_repo_profilesPublic-safe repo profile index with freshness and proof counts
get_repo_profileOne repo answering profile by the repoId argument
get_operant_resultsPublic, sanitized OPERANT calibration results (per-model OCS)
show_project_galleryCurated projects as gallery cards (MCP App); optional status, lifecycle
show_project_timelineCurated projects by last-active month, with archive lifecycle mix (MCP App)
show_operant_resultsOPERANT calibration-profile cards plus a playable demo scored with OCS (MCP App); optional section
play_demoThe site's playable demos rebuilt from their corpus pages (MCP App): interleaving or failure-museum

MCP Apps

show_project_gallery, show_project_timeline and show_operant_results carry _meta.ui.resourceUri pointing at ui://portfolio/project-gallery.html, ui://portfolio/project-timeline.html and ui://portfolio/operant-results.html (text/html;profile=mcp-app). Hosts that support MCP Apps render them as interactive views in a sandboxed iframe; every host also gets the same object as structuredContent and as JSON text, so the data never depends on the UI. The apps are self-contained (inline script and styles, no network, no csp domains). Repository links go through ui/open-link, and "Ask about it" sends a ui/message only when the host advertises that capability.

The OPERANT view is built from the baked public OPERANT figures only. Its cards keep the dataset's row order and carry its research-integrity caveat (the rows are historical calculations, not a leaderboard). The demo is the dataset's own six-case "operator's agent" exercise: the reader picks an action per case and is scored live with OCS = TPR - FPR, where withholding direct execution is the positive signal.

play_demo rebuilds only the site demos whose mechanics are fully described in their own public corpus pages (src/demos.ts). interleaving is the Interleaving Explorer: writer A writes blind, writer B does a compare-and-swap, and the six possible schedules run in warn or enforce mode with their conflict receipts. Its numbers come from the page itself (the real sweep finding) or from exact fair-coin arithmetic at this granularity, never from an invented seed. failure-museum turns the Agent Failure Museum exhibits into a match-the-control game. Demos whose data or logic is not in the corpus (Next Word, the Verdict Machine) are left out rather than approximated.

The app client (src/ui/client.ts) speaks the ui/* postMessage protocol directly rather than through the ext-apps SDK. npm run build:ui bundles it with src/ui/styles.css into the checked-in src/ui/app.generated.ts; make check fails if that file is stale.

Documents are also exposed as Resources (portfolio://essays/{slug}, portfolio://book/{slug}, portfolio://notes/{slug}, portfolio://profile), and there are two Prompts: introduce_saagar and summarize_writing_on (grounded in a live search).

Retrieval

BM25 over a baked index (no embeddings in v1 — the committed corpus is well under a thousand docs and the calling LLM supplies the semantics). Titles are boosted. Embeddings are a measured Phase 3 upgrade, added only if retrieval quality proves insufficient.

Layout

src/

types.ts corpus + projects + operant shapes bm25.ts dependency-free BM25 + snippet (pure) tools.ts createTools(corpus) -> the tools (pure, injectable) corpus.ts loads the baked corpus + accessors corpus.generated.ts AUTO-GENERATED by build:corpus from the corpus.source.json pin server.ts buildServer(): shared MCP core (tools + resources + prompts) index.ts Cloudflare Worker transport (streamable HTTP) stdio.ts Layer 2 stdio transport (the npx CLI) ui/ MCP App views: pure renderers, iframe client, styles, and app.generated.ts (AUTO-GENERATED by build:ui) scripts/ build-corpus.mjs bakes Layer 0 and local OPERANT inputs into corpus.generated.ts probe-mcp.mjs probes an MCP HTTP endpoint (saagar-mcp-kit driver + domain calls) audit-mcp.sh connected MCPAudit scan of this server (dogfood) build-ui.mjs bundles the MCP App client into src/ui/app.generated.ts test/ vitest: bm25, tools, renderers, full-protocol server tests

Develop

From the repository root, use the pinned Node and npm versions from .node-version and package.json. The checked-in public-safe corpus is enough for routine checks; no sibling checkout, local portfolio import, signing key, or Cloudflare credentials are needed.

npm ci

make check

make check runs lint, format validation, typecheck, tests, the stdio build and protocol test, smoke, parity, and a package-content check. See CI for the same aggregate gate. npm run dev starts the local Worker.

npm run build:corpus regenerates source from a sibling checkout or an explicit network URL; URL-mode builds omit OPERANT because its build inputs are not published. Corpus generation is not required for ordinary fixture verification. npm run probe:mcp targets the live Worker by default, and the connected audit starts a local Worker and invokes the separately installed mcp-audit CLI. Keep those separate from local gates; deployment and signing remain operator-gated as described below.

Corpus updates

src/corpus.generated.ts is baked from the portfolio-index commit pinned in corpus.source.json. That repository is private (its built artifacts are the public saagarpatel.dev corpus), so fetching it needs a read-only token in PORTFOLIO_INDEX_TOKEN; CI reads it from the PORTFOLIO_INDEX_READ_TOKEN secret.

npm run corpus:verify   # fetch the pinned commit, re-bake, fail unless byte-identical

npm run corpus:rebake # after editing the pin: re-bake the committed file from it npm run corpus:diff -- # what changed, in readable form

CI runs the same rebuild-and-hash check in its corpus-rebuild job, so the committed corpus is always exactly what the committed generator makes from the pinned source. Never edit the generated file by hand. On a PR that changes the corpus, the same job writes a re-bake summary to its job summary: documents, curated projects, repo profiles and OPERANT figures added, removed or changed, with the fields that changed, plus any change or reorder in the index lists that a document or profile record does not already account for. That is the readable account of a re-bake whose git diff is one 1.6 MB line. It never fails the job: if it cannot read or parse a corpus file (say, after a generator change to the file's wrapper), the step shows as failed and the job's result still comes from the scope guard and the rebuild-and-hash check.

Landing corpus changes (Saagar's decision for generated corpus files). The generated file is a single 1.6 MB line, beyond what a two-key review can read, so it is excluded from two-key review and lands on the rebuild-and-hash check instead:

  1. Generator, check, and other source changes go through the normal two-key review. They must be output-preserving: corpus-rebuild runs the PR's generator against the current pin and fails if the committed corpus would change, so refactors and fixes land normally.
  2. A re-bake lands in its own PR: the pin bump in corpus.source.json plus the regenerated corpus from npm run corpus:rebake, and nothing else (CI fails a PR that changes the corpus alongside any other file). Before merging, confirm the changed files with gh pr diff --name-only (a PR could also edit the workflow that enforces this), then merge only on a green corpus-rebuild check, pinned to the checked head with gh pr merge --match-head-commit .
  3. Settled 2026-11-08 (Saagar left it to the recommendation): a generator change that alters the output is owner-merged, not routed through a two-key runner path exclusion. Such a change cannot satisfy either rule: its generator-only PR fails the rebuild, and its re-bake cannot carry generator code. Saagar merges that PR himself, with the regenerated corpus included: its scope-guard step fails as expected, and its rebuild step must pass, which still proves the corpus matches the new generator. Output-changing generator edits are rare (schema changes).

Dependabot PRs skip corpus-rebuild: they receive no Actions secrets, and their dependency bumps cannot change the corpus.

Inspect either transport with the MCP inspector:

npx @modelcontextprotocol/inspector http://localhost:8787/mcp   # Layer 1 (HTTP)

npx @modelcontextprotocol/inspector node dist/stdio.js # Layer 2 (stdio, after build:cli)

Deploy (Layer 1)

npm run corpus:verify && npm run deploy  # wrangler deploy

npm run probe:mcp # post-deploy live MCP readback

The readback requires the live tool list to match this checkout exactly. To probe the live Worker from a branch that adds a tool before it deploys, run npm run probe:mcp -- --allow-pending-tools: expected tools missing from the Worker are listed as pendingTools, and any tool the checkout does not expect still fails.

Operator-gated (needs Cloudflare auth). v1 still deploys to the default portfolio-mcp. .workers.dev URL, and npm run probe:mcp uses that stable Worker URL by default. Public discovery now advertises the verified custom endpoint https://mcp.saagarpatel.dev/mcp; after any deploy, verify both the Worker and the website manifest/readback path before changing .well-known/mcp.json.

wrangler.jsonc pins workers_dev: true so the public Worker URL stays live during any future custom-domain experiments; do not remove it unless the website manifest has already moved to a verified replacement endpoint.

Publish (Layer 2)

npm run corpus:verify && npm run build:cli  # -> dist/stdio.js

npm login && npm publish # public pac

冒頭だけを表示しています。続きはリポジトリで読めます