mcpField
F
Frédérick Madore — Academic Record

Frédérick Madore — Academic Record

ローカル
frederickmadore.com検索12 日前に更新

Frédérick Madore — Academic Record について

Frédérick Madoreの学術記録を検索するMCPサーバーで、研究者や著作を調べる読者向けです。出版物、講演、研究プロジェクト、デジタル・ヒューマニティーズの活動、履歴書を検索でき、全文記録や引用情報も取得できます。

主な機能

  1. 01種別、テーマ、地域、言語、年で出版物を検索
  2. 02出版物と講演の全記録を取得
  3. 03研究・デジタル・ヒューマニティーズのプロジェクトを閲覧
  4. 04活動項目を検索して全文を取得
  5. 05履歴書の各項目と引用形式を取得

活用シーン

  1. 01テーマや地域に関する出版物の調査
  2. 02講演のプログラムと参加者の確認
  3. 03プロジェクトに関連する出版物や現地調査の追跡
  4. 04BibTeXまたはプレーンテキスト形式の引用作成

MCP 対応

MCPクライアント向けに12種類のツールと7つのAPIドキュメントリソースを提供します。stdioとStreamable HTTPに対応し、ウェブサイトの公開済みJSON文書を読み込みます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbfrederickmadore-website.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

website-mcp

frederickmadore.com で公開されている学術記録を提供する MCP サーバーです。Claude(または任意の MCP クライアント)に接続すると、閲覧して探す代わりに、出版物、講演、研究プロジェクト、デジタル人文学の活動、履歴書について質問できます。

このサーバーが対象としないもの。 このサーバーが扱うのは、Frédérick Madore 本人の 研究業績です。IWAC MCP サーバーは、本人が研究している西アフリカの資料アーカイブを扱います。対象とするコーパスは異なります。両方を利用したい場合は、どちらも接続してください。

インストール(Claude Desktop)

最新リリースから frederickmadore-website.mcpb をダウンロードし、ダブルクリックします。Claude Desktop のインストールダイアログが開くので、[インストール]をクリックしてください。手順はこれだけです。編集が必要な設定ファイルも、ターミナルも不要です。また、Claude Desktop が独自のランタイムを提供するため、Node のインストールも必要ありません。

Claude Desktop では、発行元が未確認であるという警告が表示されます。これは想定どおりで、今後も変わりません。バンドルが署名されていない理由をご覧ください。

コミットごとにバンドルもビルドされます。未リリースのビルドが必要な場合は、Actionsで最新の実行を開き、mcpb アーティファクトをダウンロードしてください。自分でビルドする場合は、以下のコマンドをご覧ください。

拡張機能の設定パネルには、サイトアドレスという任意の設定項目が1つあります。未公開のコンテンツを対象に開発する場合を除き、空欄のままにしてください。

動作確認

「Frédérick Madore は、キャンパスでの宗教活動についてどのような研究を発表していますか?」と質問してください。

インストール(その他のクライアント)

stdio 経由で MCP を利用するクライアントであれば、どれでもサーバーを直接実行できます。この方法ではバンドルではなく開発用ビルドを使用するため、Node 20 以降が必要です。

git clone https://github.com/fmadore/Website.git
cd Website
npm install          # also builds the server

Claude Code:

claude mcp add frederickmadore -- node /absolute/path/to/Website/mcp/dist/index.js

mcpServers JSON を読み込むクライアント:

{
	"mcpServers": {
		"frederickmadore": {
			"command": "node",
			"args": ["/absolute/path/to/Website/mcp/dist/index.js"]
		}
	}
}

ツール

ツール説明
search_publications書籍、記事、章、報告書、論文を検索します。種類、タグ、国、プロジェクト、言語、期間で絞り込めます。
get_publication1件の出版物の全情報を取得します。抄録、DOI/ISBN/ISSN、目次、引用している著作、公開済みのレビューが含まれます。
search_communications会議論文、講演、セミナー、ワークショップ、パネル、ポッドキャストを検索します。
get_communicationパネルのプログラムや参加者を含む、1件の講演の全情報を取得します。
search_activitiesニュースや活動記録を検索します。本文全体が検索対象です。
get_activity本文全体を含む、1件の活動の全情報を取得します。
list_research_projectsすべての研究プロジェクトを一覧表示します。各プロジェクトには、関連する出版物、講演、助成金、フィールドワークの ID が記載されています。
get_research_project1件のプロジェクトの全情報を取得します。説明全文、期間、地域、原資料の言語、資金提供、相互参照が含まれます。
list_dh_projectsスキル、受賞歴、レビューを含むデジタルアーカイブ、データセット、ツールを一覧表示します。
get_dh_project1件のデジタルヒューマニティーズプロジェクトの全情報を取得します。
get_cv経歴を取得します。任意で、1つのセクション(grants、teaching、awards など)を指定できます。
get_citationBibTeX 形式、またはプレーンテキストの参考文献を取得します。

検索ではアクセント記号を区別しないため、cote d'ivoire で Côte d'Ivoire に一致します。type と country は値全体に一致します(Niger は Nigeria に一致せず、article は bulletin-article に一致しません)。tag、project、language は値の一部に一致します。 検索結果は limit と offset でページ分けされ、すべてのツールが読みやすいテキストブロックと、スキーマ検証済みの構造化コンテンツを返します。

このサイトでは、サイトを訪問するエージェント向けに、ブラウザー上でも同じ12個のツールを WebMCP(src/lib/utils/webmcp.ts)を通じて登録しています。どちらも、同じローダー、検索、引用コード(src/lib/utils/api*.ts)を介して同じ API ドキュメントを読み込むため、両者の動作に差異は生じません。

検索では見出しが返され、get_* ツールではレコード全体が返されます。すべてのデータセットに全文が含まれています。出版物と講演の抄録、活動の本文、プロジェクトの説明、研究の記録などが含まれるため、サイト上で検索できる情報はすべて内容を確認できます。

リソース

同じ7つの API ドキュメントは、website://api/ 配下の MCP リソースとしても公開されています。 ディスカバリーマニフェスト、研究、出版物、コミュニケーション、活動、デジタルヒューマニティーズプロジェクト、CV が含まれます。ツールは絞り込み検索に効率的な手段です。 リソースは、データプレーンに直接アクセスしたいクライアント向けの、完全な URI アドレス指定可能なデータセットです。

仕組み

サーバーはサイトで公開されている JSON ドキュメント(/api/*.json)を HTTP 経由で読み込み、検証済みの応答をメモリに5分間保持します。同時リクエストでは1回のフェッチを共有し、失敗したリクエストは再試行できます。データベースも検索インデックスもなく、サーバー独自のデータもありません。コーパスは数百件のレコードなので、それを避けるための仕組みを用意するより、線形スキャンのほうが低コストです。有効期限が切れた後の次のリクエストで、新しいコンテンツが取得されます。

WEBSITE_API_TIMEOUT_MS は、レスポンス本文を含むフェッチ全体のタイムアウトを設定します(デフォルトは10,000 ms)。WEBSITE_API_CACHE_TTL_MS はキャッシュの有効期間を設定します(デフォルトは300,000 ms)。どちらもミリ秒単位で指定します。タイムアウトは正の値である必要があります。TTL を0にすると、永続的なキャッシュが無効になります。互換性のない API バージョンと不正なドキュメントは、キャッシュする前に拒否されます。

サーバーは安定版 TypeScript SDK v2 を使用します。serveStdio() と createMcpHandler() は、同じサーバーファクトリーから、ステートレスな 2026-07-28 プロトコルと旧来の2025年ごろのクライアントの両方に対応するため、トランスポート間でツールとリソースの提供内容に差異は生じません。最新の tools/list、resources/list、resources/read の応答では、1時間のパブリックキャッシュを示すヒントを通知します。

Streamable HTTP

ステートレスなリモートエンドポイントをローカルでビルドして実行します。

npm run mcp:build
npm run start:http -w mcp

MCP エンドポイントは http://localhost:7860/mcp です。/ と /healthz は簡易的なヘルスドキュメントを返します。ローカル実行では 127.0.0.1 にバインドします。コンテナやパブリックホスティングでは、意図的に MCP_BIND_HOST=0.0.0.0 を設定してください。SPACE_HOST が存在する場合、Hugging Face Spaces ではこれが自動的に選択されます。PORT と WEBSITE_API_BASE は引き続き設定可能です。

Host と Origin のガードには SDK のバリデーターを使用します。ループバックホスト名と SPACE_HOST は信頼されます。スキームやポートを含めず、カンマ区切りのホスト名を ALLOWED_HOSTS と、別途 ALLOWED_ORIGIN_HOSTS で追加できます。Origin ポリシーはホスト名に基づいており、信頼されたホストのポートは制限されません。Origin を送信しないネイティブクライアントは受け入れられます。信頼されていない Origin、不正な Origin、null の Origin は拒否されます。転送ヘッダーによってこれらのガードが上書きされることはありません。プロキシの実際の Host を設定してください。

get_citation はここで再実装していません。ビルド時に #lib をエイリアス設定し、サイト独自の bibtexGenerator と citationFormatter をバンドルするため、ここで返される BibTeX はサイトのダウンロードボタンが生成するものとバイト単位で同一です。提供するのは BibTeX と通常の参考文献表記のみです。サイト自体が生成する形式はこの2つだけだからです。APA/MLA/Chicago を追加するには src/lib/utils を変更します。その後は、自動的にここでも利用できるようになります。

未公開コンテンツを対象に開発する

ライブサイトの代わりにローカルビルドをサーバーに指定します。

npm run build            # at the repo root, produces build/api/*.json
npm run preview          # serves it on :4173
WEBSITE_API_BASE=http://localhost:4173 node mcp/dist/index.js
コマンド
コマンド説明
npm run mcp:buildstdio、HTTP、共有サーバーのバンドルを mcp/dist/ にビルドします
npm run mcp:packインストール可能な mcp/dist/frederickmadore-website.mcpb をビルドします
npm run mcp:check型チェックを実行します
npm run mcp:smoke両方をビルドしてから、サイトのローカルビルドに対してプロトコル経由でそれぞれを動作させます
npm testサイトのテストスイートとあわせて実行するユニットテスト(検索とランキング)

npm run mcp:smoke を実行するには、まずリポジトリのルートで npm run build が必要です。開発用ビルドと、.mcpb から展開し直したサーバー(実際にユーザーがインストールするアーティファクト)の両方をテストし、同じファクトリーをステートレスな Streamable HTTP 経由で動作させます。最新と旧来、両方のプロトコル世代を対象としています。CI ではすべてのプルリクエストで全テストを実行するため、API フィールドの名前変更、ツール登録の不具合、起動に失敗するバンドルを検出できます。

リリース

タグをプッシュするか、Actions → Release MCP bundle → Run workflow を選択します。

git tag mcp-v0.3.0 && git push origin mcp-v0.3.0

ワークフローでは、型チェック、サイトのビルド、バンドルのビルドと実際の API ドキュメントを使ったスモークテストを実行し、すべて完了してからリリースアセットとして公開します。起動できていないものが出荷されることはありません。

MCP Registry への公開

server.json は、プレビュー中の公式 MCP Registry における、このサーバーのエントリーです。名前は io.github.fmadore/frederickmadore-website です。レジストリに保存されるのはメタデータのみです。エントリーはリリースの .mcpb を参照し、その SHA-256 を記録します。クライアントはインストール前にこの値を確認します。コミット済みファイルには、最新リリースである 0.3.0 の情報が記載されています。

ハッシュはアップロードしたファイルのハッシュでなければなりません。バンドルはビルド日時を含む ZIP ファイルのため、同じコミットをローカルで再ビルドしてもハッシュは異なります。そのため、リリースワークフローでは公開するバンドルに合わせて server.json に情報を記録し(scripts/release/stamp-mcp-registry.mjs)、同じリリースに添付します。公開は手動で行い、GitHub に fmadore としてサインインする必要があります。

  1. 上記の手順でリリースし、そのリリースのエントリーを取得します(ここでは 0.3.0)。

    gh release download mcp-v0.3.0 --repo fmadore/Website --pattern server.json --dir mcp --clobber
    

    0.3.0 を再公開する場合は、この手順を省略します。コミット済みファイルがすでにそのエントリーです。

  2. レジストリのリリースページから mcp-publisher をインストールします。クイックスタートには、Windows ARM 版を含む各プラットフォーム向けの 1 行インストールコマンドがあります。

  3. mcp/ からエントリーを確認し、サインインして公開します。

    mcp-publisher validate
    mcp-publisher login github
    mcp-publisher publish
    

    validate はファイルをレジストリの検証エンドポイントに送信します。login github は GitHub のデバイスフローを開き、publish は ./server.json を読み込みます。login が保存するレジストリトークンは数分で期限切れになるため、その直後に publish を実行してください。401 … token is expired と表示された場合は、もう一度サインインしてください。

  4. エントリーを確認してから、取得した server.json をコミットし、公開した内容をリポジトリに記録します。

    curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.fmadore/frederickmadore-website"
    

npm test は、コミット済みのエントリーがレジストリの制限を満たしているか確認します(scripts/release/mcp-registry.test.mjs)。この手順は将来、id-token: write が必要で、保存済みのシークレットは不要な mcp-publisher login github-oidc を使って release-mcp.yml 内で実行できるようになる可能性があります。

バンドルに署名しない理由

Claude Desktop では、発行者が未検証であるという警告が表示されます。これは意図的なものであり、変更する予定はありません。

mcpb は OS の信頼ストアを呼び出して署名を検証します。macOS では security verify-cert -p codeSign、Windows ではその PowerShell 相当の処理が使われます。そのため、認定 CA が発行した証明書だけが警告を解消できます。こうした証明書には毎年費用がかかり、本人確認も必要ですが、このプロジェクトでは購入しません。

mcpb sign --self-signed は回避策にはなりません。信頼できる証明書につながらない証明書は unsigned として検証されるため、ファイルサイズが約 2 KB 増えるだけで、それ以外には何も変わりません。これは同じ検証コードを使用する Claude Desktop でも同様です。ローダーに無視される署名を付けるより、正直に署名なしのバンドルにするほうが適切です。

バンドルのビルド方法

pack.mjs はすべての依存関係を1つの圧縮ファイルにインライン化します(同梱する node_modules/ はありません)。Claude Desktop がランタイムを提供するため、Node 24 ではなく Node 20 を対象とし、出力を ESM とする package.json を書き込みます。マニフェストのツール一覧は手書きではありません。このスクリプトはビルドしたばかりのサーバーを起動し、プロトコル経由で利用可能なツールを問い合わせ、その結果を書き込みます。手作業で管理する一覧を設けると、ツール名を変更した時点で正確性が失われる、2つ目の信頼できる情報源になってしまいます。

アーカイブは @anthropic-ai/mcpb の CLI を介さず、fflate で直接作成します。この CLI は、まさにこの呼び出しでパッケージ化します。つまり、レベル9の zipSync を使い、外部属性に Unix のモードビットを設定します。しかし、対話型の init ウィザード用に @inquirer/prompts も取り込み、さらに、修正されていない重大度の高い勧告が2件ある tmp も依存関係に加わります。ここでは init を実行しないため、1回の zipSync 呼び出しのために171個のパッケージを追加し、npm audit が失敗することになります。マニフェストの検証は pack.mjs にある短い必須フィールドのチェックで済みます。固定テンプレートから生成するマニフェストでは、これが重要な部分です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。