Alexandria について
Alexandriaは、152の公共デジタルライブラリにあるテキストを検索、閲覧、取り込みできるMCPサーバーです。複数ソースの検索に、引用付き回答、反復型リサーチ、引用グラフのツールを組み合わせ、調査ワークフローを支援します。
主な機能
- 01152のライブラリを横断して検索・閲覧
- 02クエリを振り分け検索結果を統合
- 03引用付きの回答とレポートを生成
- 04テキストをベクトルデータベースに取り込み
- 05ソースの稼働状況と引用関係を確認
- 06レビューやファクトチェック用プロンプト
活用シーン
- 01複数のライブラリから情報源を検索
- 02引用付きの文献レビューや調査レポートを作成
- 03主張や参考文献を検証
- 04あるテキストの引用元・被引用作品を調査
MCP 対応
MCPツール、プロンプト、ドキュメントリソースを通じて、ライブラリの検索、閲覧、取り込み、調査、引用機能を公開します。MCP対応クライアントは検索結果に対応する全文リソースを直接読み取れます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @the-40-thieves/alexandria-mcpOPENAI_API_KEYシークレットOpenAI key for routing (library_ask), synthesis (library_answer, library_research), and embeddings (library_ingest). Search and read tools work without it.ALEXANDRIA_BASE_URLOpenAI-compatible gateway base URL shared by every LLM role (router, synth, research, embeddings, rerank). Falls back to https://api.openai.com/v1.ALEXANDRIA_API_KEYシークレットAPI key paired with ALEXANDRIA_BASE_URL. Falls back to OPENAI_API_KEY.CORE_API_KEYシークレットUnlocks the core source (CORE, 57M+ open access papers). Free key from core.ac.uk/services/api.COURTLISTENER_API_KEYシークレットUnlocks the courtlistener source (US federal and state court opinions). Free key from courtlistener.com.GOVINFO_API_KEYシークレットUnlocks govinfo (Congressional Record, Federal Register, US Code); also accepted by congress and regulations. Free key from api.data.gov.GOOGLE_BOOKS_API_KEYシークレットUnlocks the googlebooks source (40M+ books). Free key from the Google Cloud Console (Books API).GITHUB_TOKENシークレットUnlocks githubsearch and githubmcp (GitHub code search); optional for ghsa and openiti. Public-repo read scope is enough.NASA_ADS_API_KEYシークレットUnlocks the nasaads source (NASA Astrophysics Data System). Free key from ui.adsabs.harvard.edu.EUROPEANA_API_KEYシークレットUnlocks the europeana source (50M+ European cultural heritage items). Free key from apis.europeana.eu.SEMANTIC_SCHOLAR_API_KEYシークレットOptional for semanticscholar and library_recommend; raises the rate limit. Free key from semanticscholar.org/product/api.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
11掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Alexandria
152 の公共デジタル図書館からテキストを検索、閲覧、取り込むための Model Context Protocol(MCP)サーバーです。MCP 対応クライアント(Claude Desktop、Cursor、VS Code Copilot など)で利用できます。
ツール
| ツール | 説明 |
|---|---|
library_list_sources | 説明と全文取得機能を含む、152 件すべてのソースを一覧表示します |
library_ask(query, max_sources?, results_per_source?) | 自然言語検索 — クエリに最適なソースに振り分け、並列検索を実行し、重複を統合した結果を返します |
library_search(query, source, limit?) | タイトル、著者、キーワードで特定のソースを検索します |
library_read(id, source) | アイテムの全文またはメタデータを取得します(上限 200k 文字) |
library_index(id, source) | ドライラン:何も書き込まずにテキストを分割し、品質をスコアリングします |
library_ingest(id, source) | 分割 → 埋め込み → ベクトルデータベースに保存します。冪等です。 |
library_recommend(id, limit?) | Semantic Scholar の推薦エンジンを使って類似論文を取得します(最大 500 件) |
library_answer(query, max_sources?, results_per_source?, read_top?) | 質問を投げかけ、ソース間で reciprocal rank fusion を用いて統合した、インラインの [n] 引用付き回答を取得します。warnings[] は、引用のない回答やすべての項目が除外された回答を示します |
library_research(query, depth?, breadth?, max_minutes?) | 再帰的な複数ラウンドの調査:クエリを生成し、それぞれに回答して学びを抽出し、見つかったすべてのソースを対象に、引用付きの最終レポートを作成します |
library_health_check(source?, cluster?) | ソースごとの状態(ok、degraded、down、key_missing、unknown)を報告します。このプロセスのライブエラー率/レイテンシと、直近のプロセス外プローブ実行結果を統合します |
library_citations(id, source, direction, limit?, format?) | OpenAlex の引用グラフを使い、アイテムが引用している文献(direction: "references")またはそのアイテムを引用している文献(direction: "citations")を一覧表示します。OpenCitations はフォールバックとして使用されます。format: "bibtex" | "ris" | "apa" を指定すると、書式設定済みの参考文献文字列 formatted も返します |
library_ask が主要なエントリーポイントです。library_search は、既知のソースに対する対象を絞ったクエリに使用します。library_index/library_ingest は、取得したテキストからベクトルナレッジベースを構築するために使用します。library_answer と library_research は、生の検索結果を返すのではなく、引用付きの回答またはレポートを統合して作成します。library_health_check を使うと、呼び出す前にソースを利用する価値があるかどうかを確認できます。library_citations は、アイテムを中心に引用グラフをたどり、参考文献一覧としてエクスポートできます。
library_ask、library_search、library_answer、library_research、library_health_check、library_citations は、response_format: "concise" | "detailed" パラメーター(デフォルトは concise)を受け取ります。concise では、結果と引用が重要なフィールド(タイトル、ソース、ID、年、hasFullText、URL、回答/レポートと引用、名前、クラスター、状態)に絞られます。detailed では、振り分けの理由、関連度スコア、各ステージの診断情報、ソースごとのエラー率/レイテンシ/クォータ使用量など、すべてのペイロードが返されます。detailed モードでは、library_search は全文を含む各結果に resource_link コンテンツ項目も追加します。この項目は、そのアイテムの library://doc/{source}/{id} リソースを指します(下記参照)。リソースに対応したクライアントは、2 回目の library_read 呼び出しを行わずに全文を直接読み取れます。
プロンプト
すぐに使える 3 つの調査ワークフローです。MCP クライアントではスラッシュコマンド(Claude Code の /alexandria:<name>、VS Code の /alexandria.prompt)として表示されます。それぞれ、呼び出すツールを順番に指定した単一のメッセージを返します。ツール自体を呼び出すことはありません。
| プロンプト | 説明 |
|---|---|
literature_review(topic, depth?) | 複数のソースからトピックを調査し、引用付きレポートを作成します |
fact_check_claim(claim) | ライブラリを使って 1 つの主張を検証し、裏付けがあるかどうかを報告します |
verify_bibliography(references) | 参考文献のリスト(1 行につき 1 件)が、実在し検索可能なアイテムに解決されるか確認します |
リソース
library://doc/{source}/{id} は、library_search または library_ask が返す source と id の組み合わせを指定して、library_read(id, source) が返すものと同じテキスト(以下のオープンアクセスのフォールバックを含む)を読み取ります。MCP リソースに対応するクライアント(Claude Code の @srv:uri、VS Code の「コンテキストの追加」など)は、アイテムの全文を直接取得できます。
ソース(152)
19 のクラスターにわたる 152 件のソースがあります(このデプロイ環境に存在しないキーまたは設定が必要なため、36 件は非表示です)。認証用の環境変数や最終確認日など、ソースごとの詳細は docs/sources.md で生成されます。
| クラスター | ソース数 | 非表示 |
|---|---|---|
| academic | 22 | 3 |
| ai_research | 3 | 0 |
| archives | 4 | 2 |
| culture | 8 | 3 |
| developer | 17 | 5 |
| economics | 11 | 3 |
| geopolitical | 3 | 3 |
| government | 7 | 3 |
| law | 4 | 1 |
| literature | 16 | 2 |
| markets | 2 | 1 |
| news_global | 5 | 2 |
| news_regional | 15 | 0 |
| real_estate | 2 | 2 |
| science | 8 | 2 |
| security | 14 | 0 |
| standards | 3 | 0 |
| video | 1 | 1 |
| web | 7 | 3 |
| 合計 | 152 | 36 |
認証情報
ほとんどのツールは外部のライブラリ API に直接クエリを送信するため、認証情報は不要です。オプションの依存関係は 2 つあり、それぞれ特定のツールでのみ使用します。
OpenAI(オプション)(platform.openai.com)
次の 2 つのツールでのみ必要です。
library_ask:gpt-4o-miniを使用して、自然言語のクエリを適切なソースに振り分け、ソースごとに最適化された検索語を生成します。このキーがない場合は、library_searchを使ってソースを直接検索してください。library_ingest:ベクトルストアに書き込む前に、チャンク化したテキストを埋め込むためにtext-embedding-3-smallを使用します。
library_list_sources、library_search、library_read、library_index、library_recommend は、いずれも OpenAI キーなしで動作します。
OpenAI に直接接続する代わりに、ロールの接続先をゲートウェイにする
LLM/埋め込みのすべての呼び出し(library_ask でのルーティング、library_ingest での埋め込み)は、OpenAI の SDK に直接接続するのではなく、ロールごとの小さなプロバイダーテーブル(src/utils/providers.ts、THE-318)を経由します。ロールは router、synth、research、embeddings、rerank の5つです。各ロールは、次の順序で環境変数から解決されます。
ALEXANDRIA_<ROLE>_BASE_URL、ALEXANDRIA_<ROLE>_API_KEY、ALEXANDRIA_<ROLE>_MODEL(ロールごとのオーバーライド。<ROLE>はロール名を大文字にしたもので、例:ALEXANDRIA_ROUTER_BASE_URL)ALEXANDRIA_BASE_URL、ALEXANDRIA_API_KEY(すべてのロールで共通のデフォルト値)OPENAI_API_KEY。baseURLのデフォルト値はhttps://api.openai.com/v1
OPENAI_API_KEY だけを設定すると、すべてのロールがステップ3で解決され、これは現在の動作とまったく同じです(router/synth では api.openai.com に対して gpt-4o-mini、embeddings では text-embedding-3-small を使用します)。
すべてのロールを LiteLLM ゲートウェイ経由でルーティングするには、次のようにします。
ALEXANDRIA_BASE_URL=http://100.78.123.100:4001/v1
ALEXANDRIA_API_KEY=sk-litellm-...
Cloudflare AI Gateway(OpenAI 互換エンドポイント)経由でルーティングするには、次のようにします。
ALEXANDRIA_BASE_URL=https://gateway.ai.cloudflare.com/v1/<account_id>/<gateway_id>/openai
ALEXANDRIA_API_KEY=<your OpenAI key, forwarded through the gateway>
または、1つのロールだけをゲートウェイに接続し、残りは引き続き OpenAI に直接接続することもできます。たとえば、ルーティングだけを対象に ALEXANDRIA_ROUTER_BASE_URL と ALEXANDRIA_ROUTER_API_KEY を設定します。
Cloudflare 統合の詳しいガイドについては、docs/cloudflare.md を参照してください。AI Gateway の新しい統合エンドポイント、embeddings/rerank ロール向けの Workers AI、プライベートな /mcp 向けの Tunnel + Access、公開向けの WAF レート制限、オプションのキャッシュストアとしての R2、以下の Browser Run フェッチ階層、そして Alexandria が完全な Workers 移植ではなくハイブリッド(Node コア、Cloudflare サービス)を維持する理由について説明しています。
ALEXANDRIA_<ROLE>_BASE_URL/ALEXANDRIA_BASE_URL が設定され、さらに OPENAI_API_KEY も存在する場合、OPENAI_API_KEY は1回限りのフォールバックとして組み込まれます。ゲートウェイでネットワークエラーまたは 5xx が発生すると、リクエストが失敗する前に、OpenAI に直接接続して一度だけ再試行します。chatJSON(ルーティングで使用)は、常にモデルの応答を zod スキーマに照らして検証し、検証エラーをプロンプトに追加して、同じバックエンドで一度だけ再試行します。これにより、小規模なモデルやローカルモデルをゲートウェイがプロキシしている場合に、初回の試行で JSON の契約に確実に従わない問題に対処できます。response_format: json_object をリクエストするのは、api.openai.com に接続する場合、または ALEXANDRIA_<ROLE>_JSON_MODE=1 によってゲートウェイ/モデルが対応していることを確認できた場合に限られます。それ以外の場合は、プロンプトで JSON を求めます。
Supabase — オプション(supabase.com)
必要とするツールは1つだけです。
library_ingest— チャンク化して埋め込みを追加したテキストを pgvector テーブルに書き込み、セマンティック検索に使用します。これがない場合、取得したテキストはコンテキスト内にとどまり、どこにも永続化されません。
検索、読み取り、ブラウジング、おすすめの取得など、その他の処理はすべて外部ソースをリアルタイムで検索するため、データベースは不要です。
ソース固有のキー
ソースによっては、専用の API キーが必要です。いずれも無料で登録できます。ここにキーが記載されていないソースは、認証情報なしで利用できます。
| 環境変数 | ソース | 取得先 |
|---|---|---|
CORE_API_KEY | core | core.ac.uk/services/api |
COURTLISTENER_API_KEY | courtlistener | courtlistener.com/profile/tokens |
GOVINFO_API_KEY | govinfo。また、DATA_GOV_API_KEY がない場合の代替として congress と regulations でも受け付けられます | api.data.gov/signup。smithsonian には対応していません。smithsonian には、同じ登録ページから取得する専用の SMITHSONIAN_API_KEY が必要です |
GOOGLE_BOOKS_API_KEY | googlebooks | Google Cloud Console → APIs & Services → Books API |
BHL_API_KEY | bhl | biodiversitylibrary.org/getapikey |
DIGITALNZ_API_KEY | digitalnz | digitalnz.org/developers |
DPLA_API_KEY | dpla | pro.dp.la/developers/api-codex |
EUROPEANA_API_KEY | europeana | apis.europeana.eu — テストキーはすぐに取得できます。個人用キーは約 1 週間かかります |
GITHUB_TOKEN | githubsearch と githubmcp では必須。ghsa と openiti では任意 | github.com/settings/tokens、公開リポジトリの読み取りスコープが必要です。トークンがない場合、githubsearch と githubmcp は表示されません。ghsa は 60 秒間隔にフォールバックし、openiti は認証なしの検索経路を使用します |
NASA_ADS_API_KEY | nasaads | ui.adsabs.harvard.edu/user/settings/token |
SPRINGER_OA_API_KEY + SPRINGER_META_API_KEY | springer | dev.springernature.com — 登録は 1 回で、キーは 2 つ取得します |
ZENODO_API_KEY | zenodo | zenodo.org/account/settings/applications/tokens/new — 任意。レート制限が緩和されます |
SMITHSONIAN_API_KEY | smithsonian | api.data.gov/signup。GOVINFO_API_KEY とは別の専用キーです |
SEMANTIC_SCHOLAR_API_KEY | semanticscholar | semanticscholar.org/product/api — 任意。レート制限が緩和されます |
TROVE_API_KEY | trove | trove.nla.gov.au/about/create-something/using-api — 承認まで約 1 週間かかります |
YOUTUBE_API_KEY | youtube | console.cloud.google.com — YouTube Data API v3 を有効にしてください。キーが必要なのは検索のみで、文字起こしには不要です |
プライバシーポリシー
Alexandria 自体はテレメトリーを収集しません。管理者が制御するインフラストラクチャ上で動作し、クエリ、検索結果、認証情報に関する情報が Alexandria プロジェクトに送信されることはありません。
- クエリは、各リクエストに対してエージェントが選択した上流の公開図書館ソースに送信されます。送信には各ソース独自の公開 API を使用し、そのソース独自の利用規約に従います。
- OpenAI(または OpenAI 互換ゲートウェイ)のキーが設定されている場合、
library_ask、library_answer、library_research、library_ingestは、クエリのテキストと取得した抜粋も、運用者が設定した LLM および埋め込みプロバイダーに送信します。Cloudflare AI Gateway のルーティング経路については docs/cloudflare.md を、図書館ソースへの外部フェッチを保護する仕組みについては docs/fetch-tier-runtime.md を参照してください。 - プロジェクト自体は何も保存しません。運用者の
data/ディレクトリには、サーバーの実行マシン上にローカルキャッシュ(状態 DB、プロセスごとの読み取りキャッシュ)が保存されます。それ以外の場所に保存されることはありません。
全文:PRIVACY.md。
セットアップ
git clone https://github.com/The-40-Thieves/alexandria-mcp
cd alexandria-mcp
npm install
npm run build
.env.example を .env にコピーします。認証情報なしで実行する(検索と読み取りのみ)ための最小構成は次のとおりです。
TRANSPORT=stdio
library_ask を有効にするには:
TRANSPORT=stdio
OPENAI_API_KEY=sk-...
library_ingest を有効にするには:
TRANSPORT=stdio
OPENAI_API_KEY=sk-...
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=eyJ...
Supabase スキーマ
library_ingestを使用する場合のみ必要です。
create table if not exists knowledge_chunks (
id bigserial primary key,
content text not null,
embedding vector(1536),
mcp_name text,
metadata jsonb,
created_at timestamptz default now()
);
create table if not exists source_docs (
id bigserial primary key,
source_url text not null,
mcp_name text not null,
title text,
source text,
chunk_count int,
indexed_at timestamptz,
unique (source_url, mcp_name)
);
create index if not exists knowledge_chunks_embedding_hnsw_idx
on knowledge_chunks using hnsw (embedding vector_cosine_ops);
Task 12より前にこのスキーマを設定した場合は、代わりにivfflatインデックス(knowledge_chunks_embedding_idx)を使用していました。docs/sql/match_chunks.sqlはこれを削除し、上記のhnswインデックスを作成します。HNSWは段階的に構築され、テーブルの増加に応じたlistsの調整定数が不要なためです。コーパスキャッシュの検索で、通常の<=>スキャンなら見つかるはずの結果が得られない場合は、クエリの処理速度が遅くなる代わりに、クエリ実行時のhnsw.ef_searchセッション設定(デフォルトは40)を大きくしてください。docs/sql/match_chunks.sql内のコメント付きの推奨設定を参照してください。
コーパスをキャッシュとして使用
library_answerはknowledge_chunksから直接読み取ることもできます。以前に取り込み済みのテキストはすでにベクトル化されているため、ライブのソース別検索に加えて、もう1つのランク付けリストとして利用できます。必要な全文がすでにある検索結果については、ネットワークへのアクセスを省略します。これは、レジストリの鮮度がstaticまたはdailyのソース(realtimeは対象外)のチャンクのみを対象とし、コサイン類似度がALEXANDRIA_CORPUS_MIN_SIM(デフォルトは0.92)を超える場合に限って提供されます。
上記のテーブルに加えて、スキーマをもう1つ設定する必要があります。SupabaseのSQLエディターでdocs/sql/match_chunks.sqlを実行してください。このファイルでは、SupabaseVectorStoreProvider.query()が.rpc()経由で呼び出す近傍検索関数match_knowledge_chunks()と、上記のhnswインデックスを定義しています。このファイルは現行のpgvectorおよびsupabase-jsのドキュメントに基づいて作成されていますが、実際のデータベースでは実行されていません。利用する前に、ご自身のプロジェクトで検証してください。
Claude Code(npx)
claude mcp add --env OPENAI_API_KEY=sk-... alexandria -- npx -y @the-40-thieves/alexandria-mcp
検索と読み取りは、環境変数を一切設定しなくても使用できます。上記の--envフラグは、library_ask、library_answer、library_research、library_ingestを有効にする場合にのみ必要です。省略可能なキーの全一覧については、認証情報を参照してください。
Claude Desktop(stdio)
公開済みパッケージをnpx経由で使用する場合の最小構成(検索と読み取りのみ):
{
"mcpServers": {
"library": {
"command": "npx",
"args": ["-y", "@the-40-thieves/alexandria-mcp"],
"env": {
"TRANSPORT": "stdio"
}
}
}
}
library_askとlibrary_ingestを有効にする場合:
{
"mcpServers": {
"library": {
"command": "npx",
"args": ["-y", "@the-40-thieves/alexandria-mcp"],
"env": {
"TRANSPORT": "stdio",
"OPENAI_API_KEY": "sk-...",
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_SERVICE_ROLE_KEY": "eyJ..."
}
}
}
}
公開済みパッケージの代わりにローカルのチェックアウトを使用する場合は、command/argsを"command": "node", "args": ["/path/to/alexandria-mcp/dist/index.js"]に置き換えてください。
Railway(HTTP)
HTTPモードはデフォルトで無効です。TRANSPORT=httpを設定すると、stdioの代わりに/mcpでStreamable HTTPを提供します。待ち受けポートを指定するにはPORTを設定します(デフォルトは3000です。RailwayではPORTが自動的に設定されます)。リクエストごとに専用のMCPサーバーとトランスポートが作成されるため、エンドポイントはステートレスで、ロードバランサーの背後でも安全に実行できます。
| 環境変数 | 値 | デフォルト |
|---|---|---|
TRANSPORT | stdioまたはhttp | stdio |
PORT | 任意のポート番号。HTTPモードのみ | 3000 |
/mcpのみが保護されています。DNSリバインディングに安全なHost/Origin検証(カンマ区切りのホスト名リストであるALEXANDRIA_ALLOWED_ORIGINSを使用。ループバックは常に許可されます)と、クライアントIPごとのレート制限(ALEXANDRIA_HTTP_RATE_LIMIT。デフォルトは60回/分で、上限を超えるとJSON-RPCエラーボディとともに429を返します)が適用されます。詳しくはdocs/fetch-tier-runtime.mdを、実装についてはsrc/httpGuards.tsを参照してください。
ループバック以外のホスト名からアクセス可能なデプロイでは、必ずALEXANDRIA_ALLOWED_ORIGINSを設定してください。未設定の場合、Hostヘッダーの検証は無効になり、その旨を起動時に警告として1回ログに記録します。デプロイのHostヘッダーにはそのデプロイ自身のホスト名が含まれますが、許可リストが存在しないため、そのホスト名を許可リストに含められません。そのため、許可リストなしで検証を強制すると、すべてのリクエストが403になります。この変数を設定することで、DNSリバインディング保護が有効になります。Originの検証は設定の有無にかかわらず常に行われるため、許可リストにないOriginを含むブラウザーリクエストは必ず拒否されます。
POST /mcpでは、content-type: application/jsonが必要です(それ以外は415)。また、ボディは100 KiB以下でなければなりません(超過した場合は413が返され、接続が閉じられます)。
リバースプロキシや PaaS エッジ(Cloudflare Tunnel、Railway 独自のエッジなど)の背後では、レートリミッターのクライアントごとのキーはデフォルトで req.socket.remoteAddress になります。これは呼び出し元ではなく、すべての呼び出し元に対するプロキシのアドレスです。代わりに CF-Connecting-IP(なければ 右端 の X-Forwarded-For エントリを使用します。これは最後のホップによって追加されたもので、左端のエントリは元の呼び出し元が送信した値です)をキーとして使うには、ALEXANDRIA_TRUSTED_PROXY=1 を設定してください。この設定は、信頼できるプロキシがこれらのヘッダーを正直に設定する場合に限り、/mcp にそのプロキシ経由でのみアクセスできるようになってから行ってください。詳しくは docs/cloudflare.md の Tunnel と Access のセクションを参照してください。
同じ /mcp エンドポイントで、MCP プロトコルの両方の世代に対応します。
createMcpHandler(factory, { legacy: 'stateless' })(@modelcontextprotocol/server を、@modelcontextprotocol/node の toNodeHandler() で node:http に適合させたもの)は、モダンパスでは 2026-07-28 の server/discover プローブまたはリクエストごとのエンベロープに応答し、2025 年代の initialize ハンドシェイクでは、2026 年以前の SDK が使っていたのと同じステートレス方式にフォールバックします。両方で 1 つの createServer() ファクトリーを使用します。stdio では、@modelcontextprotocol/server/stdio の接続に固定された serveStdio(factory) を使用し、接続開始時のやり取りから世代を判定します。注:2025 年代のフォールバックパスでは、SDK にそのパス用の v1 の enableJsonResponse 相当の機能がないため、裸の JSON 本文ではなく text/event-stream(SSE)で応答します。Streamable HTTP トランスポートを基盤とする MCP クライアント(SDK 自体の StreamableHTTPClientTransport を含む)は、どちらの形式も透過的に解析できます。
Railway ダッシュボードでこれら(および任意のソースキー)を設定し、デプロイしてください。
railway up
ローカルでは、同じ設定を次のように行います。
TRANSPORT=http PORT=3000 npm start
Claude Desktop に登録します。
{
"mcpServers": {
"library": {
"url": "https://your-service.up.railway.app/mcp"
}
}
}
ヘルスチェック:GET /health は { status: "ok", version: "11.0.0", sources: { total: 152, visible: 116, hidden: 36, calls: 0, errors: 0 }, byKind: { rest: 118, hub: 0, rss: 22, mcp: 6, scrape: 6 }, quota: { day: "2026-09-02", reserved: 0, sources: 0, backend: "state" }, cache: { entries: 0 }, tools: 11 } を返します。
メトリクス:GET /metrics は、ソースごとのカウンター(calls、errors、timeouts、cacheHits、quotaRejections、latencyMsTotal)とツールごとのカウンター(invocations、llmCalls)を JSON で返します。例:{ "sources": { "arxiv": { "calls": 12, "errors": 0, "timeouts": 0, "cacheHits": 3, "quotaRejections": 0, "latencyMsTotal": 4210 } }, "tools": { "library_ask": { "invocations": 5, "llmCalls": 5 } } }。プロセスの起動後に実際に呼び出されたソースとツールのみが表示されます。
他のクライアントへのインストール
以下はいずれも公開済みパッケージを npx 経由で実行します。検索と読み取りは環境変数なしで使えます。また、--env や環境変数ブロックを追加すると、上記の Claude Code および Claude Desktop のセクションと同じ方法で library_ask、library_answer、library_research、library_ingest が有効になります。
GitHub Copilot - .vscode/mcp.json:
{
"servers": {
"alexandria": {
"command": "npx",
"args": ["-y", "@the-40-thieves/alexandria-mcp"]
}
}
}
Windsurf - mcp_config.json:
{
"mcpServers": {
"alexandria": {
"command": "npx",
"args": ["-y", "@the-40-thieves/alexandria-mcp"]
}
}
}
Codex CLI:
codex mcp add alexandria -- npx -y @the-40-thieves/alexandria-mcp
OpenCode - opencode.json:
{
"mcp": {
"alexandria": {
"type": "local",
"command": ["npx", "-y", "@the-40-thieves/alexandria-mcp"]
}
}
}
Amazon Q - ~/.aws/amazonq/mcp.json(グローバル)または q mcp add:
{
"mcpServers": {
"alexandria": {
"command": "npx",
"args": ["-y", "@the-40-thieves/alexandria-mcp"]
}
}
}
Kiro - .kiro/settings/mcp.json:
{
"mcpServers": {
"alexandria": {
"command": "npx",
"args": ["-y", "@the-40-thieves/alexandria-mcp"]
}
}
}
Gemini CLI:
gemini extensions install https://github.com/The-40-Thieves/alexandria-mcp
Continue - Continue の設定にある mcpServers 配列に追加します。
{
"name": "alexandria",
"command": "npx",
"args": ["-y", "@the-40-thieves/alexandria-mcp"]
}
カスタムプロバイダーの追加
パイプラインはプロバイダーに依存しません。新しい埋め込みモデルやベクトルストアを追加するには:
src/types.tsのEmbeddingProviderまたはVectorStoreProviderを実装します- 実装を
src/pipeline/providers/に追加します src/pipeline/providers/index.tsに登録します- 環境変数に
EMBEDDING_PROVIDERまたはVECTOR_STORE_PROVIDERを設定します
// Example: Ollama embedding provider
import type { EmbeddingProvider } from '../../types.js';
export class OllamaEmbeddingProvider implements EmbeddingProvider {
readonly dimensions = 768;
async embed(texts: string[]): Promise<number[][]> {
// your implementation
}
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。