Northwestern University Libraries Digital Collections API について
Northwestern University Libraries のデジタルコレクションを探索するアシスタント向けの MCP サーバーです。デジタル資料の検索、類似作品の発見、コレクション閲覧、メタデータ取得、IIIF マニフェスト表示に対応します。
主な機能
- 01フィールド検索と自然言語検索
- 02視覚・意味的な類似検索
- 03作品メタデータの取得
- 04作品・コレクションの IIIF マニフェスト表示
- 05デジタルコレクションの閲覧
活用シーン
- 01クエリでデジタル作品を検索
- 02視覚的・意味的に近い作品を発見
- 03指定した作品のメタデータを取得
- 04IIIF ビューアーでコレクションを閲覧
MCP 対応
デジタルコレクションの検索、閲覧、メタデータ取得、IIIF 操作を MCP ツールとして公開します。ホスト済みエンドポイントに Streamable HTTP で接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.dc.library.northwestern.edu/api/v2/mcpclaude mcp add --transport http nulib-dc-api https://api.dc.library.northwestern.edu/api/v2/mcp{"mcpServers":{"nulib-dc-api":{"type":"http","url":"https://api.dc.library.northwestern.edu/api/v2/mcp"}}}Cursor で開く{"servers":{"nulib-dc-api":{"type":"http","url":"https://api.dc.library.northwestern.edu/api/v2/mcp"}}}VS Code で開く{"mcpServers":{"nulib-dc-api":{"type":"http","url":"https://api.dc.library.northwestern.edu/api/v2/mcp"}}}{"mcpServers":{"nulib-dc-api":{"serverUrl":"https://api.dc.library.northwestern.edu/api/v2/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
8| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| page | number | いいえ | 返す検索結果のページ |
| query | string | いいえ | 自然言語クエリ。探索的/概念的な検索に最適です。 |
| fields | object | いいえ | 構造化フィールド検索。既知の特定の項目や値の検索、または検索対象のフィールドを指定して検索を絞り込む場合に最適です。 |
| fields.text | string | いいえ | 作品に関連付けられた全文 |
| fields.genre | string | いいえ | 元のオブジェクトの内容ではなく、その種類を説明します |
| fields.notes | string | いいえ | 作品に関連付けられた注記 |
| fields.title | string | いいえ | 作品のタイトル |
| fields.caption | string | いいえ | 作品のキャプション |
| fields.creator | string | いいえ | 作品の制作に主たる責任を負う主体 |
| fields.license | enum | いいえ | 作品の Creative Commons ライセンスAll rights reserved | Attribution 3.0 United States | Attribution 4.0 International | Attribution-NoDerivatives 4.0 International | Attribution-NoDerivs 3.0 United States | Attribution-NonCommercial 3.0 United States | Attribution-NonCommercial 4.0 International | Attribution-NonCommercial-NoDerivatives 4.0 International | Attribution-NonCommercial-NoDerivs 3.0 United States | Attribution-NonCommercial-ShareAlike 3.0 United States | Attribution-NonCommercial-ShareAlike 4.0 International | Attribution-ShareAlike 3.0 United States | Attribution-ShareAlike 4.0 International | CC0 1.0 Universal | Public Domain Mark 1.0 |
| fields.subject | string | いいえ | 作品の主題 |
| fields.abstract | string | いいえ | 作品の概要 |
| fields.keywords | string | いいえ | このコンテンツの説明に使用されるキーワードまたはタグ |
| fields.language | string | いいえ | 作品の言語 |
| fields.location | string | いいえ | 出版地 |
| fields.publisher | string | いいえ | 作品の提供に責任を負う主体 |
| fields.technique | string | いいえ | 作品の制作に使用された技法 |
| fields.work_type | enum | いいえ | 作品の種類Audio | Image | Video |
| fields.collection | string | いいえ | 作品の親コレクション |
| fields.contributor | string | いいえ | 作品への貢献を担う主体 |
| fields.description | string | いいえ | 作品の説明 |
| fields.library_unit | enum | いいえ | 作品を担当する図書館部門Special Collections | Faculty Collections | Government and Geographic Information Collection | Herskovits Library | Music Library | Transportation Library | University Archives | University Main Library |
| fields.style_period | string | いいえ | 作品に特徴が表れている、特定の様式、歴史的時代、グループ、学派、王朝、運動など。 |
| fields.alternate_title | string | いいえ | 作品の別タイトル |
| fields.controlled_terms | string | いいえ | 作品に関連付けられた全フィールドの統制語。フィールドを指定せずに、すべての統制語フィールドをまとめて検索する場合に便利です。 |
| fields.rights_statement | enum | いいえ | 作品の権利に関する声明Copyright Not Evaluated | Copyright Undetermined | In Copyright | In Copyright - Educational Use Permitted | In Copyright - EU Orphan Work | In Copyright - Non-Commercial Use Permitted | In Copyright - Rights-holder(s) Unlocatable or Unidentifiable | No Copyright - Contractual Restrictions | No Copyright - Non-Commercial Use Only | No Copyright - Other Known Legal Restrictions | No Copyright - United States | No Known Copyright |
| fields.table_of_contents | string | いいえ | リソース内の個別の作品または部分のタイトルを示すために使用します。責任表示やその他の順序を示す情報が含まれる場合もあります。 |
| max_results | number | いいえ | 1ページあたりに返す検索結果の最大数 |
| public_only | boolean | いいえ | 検索結果に一般公開されている作品のみを含めます |
詳細
dc-api-mcp
AI アシスタント向けに、Northwestern University Library の Digital Collections をツールとして提供する Model Context Protocol (MCP) サーバーです。デジタル化された図書館資料の検索、閲覧、メタデータおよび IIIF マニフェストの取得に使えるツールを提供します。
利用可能なツール
| ツール | 説明 |
|---|---|
search | フィールドベースおよび/または自然言語のクエリを使って作品を検索します |
similarity-search | 指定した作品と視覚的または意味的に類似する作品を検索します |
get-work | ID を指定して、単一作品の全メタデータを取得します |
view-work | 対応ビューアーで表示するため、作品の IIIF マニフェストを表示します |
list-collections | 利用可能なデジタルコレクションの一覧を表示します |
view-collection | 特定のコレクションの IIIF マニフェストを閲覧します |
view-search-results | 前回の検索結果を取得します |
view-similar-works | 前回の類似作品検索の結果を取得します |
リモートエンドポイントの使用
サーバーは、次のホスト型リモートサーバーとして利用できます。
https://api.dc.library.northwestern.edu/api/v2/mcp
ローカルへのインストールは不要です。ストリーミング可能な HTTP トランスポートを使用して、この URL に接続するよう MCP クライアントを設定してください。
Claude Desktop
Claude Desktop の設定ファイルに次の内容を追加してください。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"dc-api": {
"type": "http",
"url": "https://api.dc.library.northwestern.edu/api/v2/mcp"
}
}
}
Claude Code
claude mcp add --transport http dc-api https://api.dc.library.northwestern.edu/api/v2/mcp
開発
要件
- Node.js 24+(.tool-versions を参照)
- mise(
bin/run.shで適切なランタイムを有効化するために使用)
セットアップ
npm install
設定
サーバーは次の環境変数を読み込みます。
| 変数 | デフォルト値 | 説明 |
|---|---|---|
DC_API_BASE | https://api.dc.library.northwestern.edu/api/v2 | Digital Collections API のベース URL |
DC_IIIF_BASE | https://iiif.dc.library.northwestern.edu/iiif/3 | IIIF サーバーのベース URL |
SECRETS_PATH | (none) | AWS Secrets Manager 設定のベースパス |
ローカルでの実行
stdio(Claude Desktop/Claude Code 用)
bun run stdio
またはラッパースクリプトを使用します(mise 経由で適切な Node.js バージョンを有効化します)。
bin/run.sh
HTTP(ストリーミング可能な HTTP トランスポート、ポート 3000)
bun run http
Claude Desktop の設定(ローカルビルド)
{
"mcpServers": {
"dc-api": {
"command": "/path/to/dc-api-v2/mcp/bin/run.sh"
}
}
}
/path/to/dc-api-v2/mcp を、このディレクトリの絶対パスに置き換えてください。編集後、Claude Desktop を再起動してください。
テスト
| コマンド | 結果 |
|---|---|
bun run test | テストスイートを実行します |
bun test:watch | 変更を監視しながらテストスイートを実行します |
bun test:coverage | テストスイートを実行し、カバレッジを計算します |
bun test:record | ライブデータに対してテストスイートを実行し、新しいフィクスチャを記録します |
- デフォルトでは、テストスイートは事前に記録された HTTP フィクスチャを使用します。ライブデータに対して実行するには、
MSW_MODE=liveを設定してください。 bun test:recordは新しいフィクスチャを記録します(mitmproxyが必要です。pip install mitmproxyを実行してください)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。