mcpField
N
Northwestern University Libraries Digital Collections API

Northwestern University Libraries Digital Collections API

Remote
github.com/nulibSearch14Updated today
Repository

About Northwestern University Libraries Digital Collections API

A hosted MCP server for Northwestern University Libraries Digital Collections, intended for assistants exploring digitized library materials. It supports search, similarity discovery, collection browsing, metadata retrieval, and IIIF manifests.

Key features

  1. 01Field-based and natural-language search
  2. 02Visual and semantic similarity search
  3. 03Retrieve work metadata
  4. 04View work and collection IIIF manifests
  5. 05Browse digital collections

Use cases

  1. 01Find digitized works by query
  2. 02Discover visually or semantically related works
  3. 03Retrieve metadata for a known work
  4. 04Browse a collection in an IIIF viewer

MCP support

Exposes Digital Collections search, browsing, metadata, and IIIF operations as MCP tools. A hosted endpoint is available over Streamable HTTP.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://api.dc.library.northwestern.edu/api/v2/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Packages
npm@nulib/dc-api-mcp2.11.15
ocighcr.io/nulib/dc-api-mcp:2.11.15

Tools

8
ParameterTypeRequiredDescription
pagenumberNoThe page of search results to return
querystringNoA natural language query. Best for exploratory / conceptual searches.
fieldsobjectNoStructured field search. Best when searching for specific known items or values, or for narrowing a search by specifying particular fields to search within.
fields.textstringNoFull text associated with the work
fields.genrestringNoDescribes what the original object is, not what it is about
fields.notesstringNoNotes associated with the work
fields.titlestringNoThe title of the work
fields.captionstringNoThe caption for a work
fields.creatorstringNoAn entity primarily responsible for making the work
fields.licenseenumNoThe Creative Commons license for the workAll 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.subjectstringNoThe subject of the work
fields.abstractstringNoA summary of the work
fields.keywordsstringNoKeywords or tags used to describe this content
fields.languagestringNoA language of the work
fields.locationstringNoPlace of publication
fields.publisherstringNoAn entity responsible for making the work available
fields.techniquestringNoThe technique used in the creation of the work
fields.work_typeenumNoThe type of the workAudio | Image | Video
fields.collectionstringNoThe parent collection of the work
fields.contributorstringNoAn entity responsible for making contributions to the work
fields.descriptionstringNoAn account of the work
fields.library_unitenumNoThe library unit responsible for the workSpecial Collections | Faculty Collections | Government and Geographic Information Collection | Herskovits Library | Music Library | Transportation Library | University Archives | University Main Library
fields.style_periodstringNoA defined style, historical period, group, school, dynasty, movement, etc. whose characteristics are represented in the work.
fields.alternate_titlestringNoAlternate titles for the work
fields.controlled_termsstringNoAll controlled terms associated with the work, across all fields. Useful for searching across all controlled fields simultaneously without specifying which field.
fields.rights_statementenumNoThe rights statement of the workCopyright 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_contentsstringNoUsed to provide the titles of separate works or parts of a resource. Information provided may also contain statements of responsibility or other sequential designations.
max_resultsnumberNoThe maximum number of search results to return per page
public_onlybooleanNoOnly include publicly available works in search results

Details

From the project README

dc-api-mcp

A Model Context Protocol (MCP) server that exposes Northwestern University Library's Digital Collections as tools for AI assistants. It provides tools for searching, browsing, and retrieving metadata and IIIF manifests for digitized library materials.

Available Tools

ToolDescription
searchSearch for works using field-based and/or natural language queries
similarity-searchFind works visually or semantically similar to a given work
get-workRetrieve full metadata for a single work by ID
view-workView a work's IIIF manifest for display in compatible viewers
list-collectionsList available digital collections
view-collectionBrowse a specific collection's IIIF manifest
view-search-resultsRetrieve results from a previous search
view-similar-worksRetrieve results from a previous similarity search

Using the Remote Endpoint

The server is available as a hosted remote at:

https://api.dc.library.northwestern.edu/api/v2/mcp

No local installation is required. Configure your MCP client to connect to this URL using the streamable HTTP transport.

Claude Desktop

Add the following to your Claude Desktop configuration file.

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

Development

Requirements
  • Node.js 24+ (see .tool-versions)
  • mise (used by bin/run.sh to activate the correct runtime)
Setup
npm install
Configuration

The server reads the following environment variables:

VariableDefaultDescription
DC_API_BASEhttps://api.dc.library.northwestern.edu/api/v2Base URL for the Digital Collections API
DC_IIIF_BASEhttps://iiif.dc.library.northwestern.edu/iiif/3Base URL for the IIIF server
SECRETS_PATH(none)Base path for AWS Secrets Manager config
Running locally
stdio (for Claude Desktop / Claude Code)
bun run stdio

Or via the wrapper script (activates the correct Node.js version via mise):

bin/run.sh
HTTP (Streamable HTTP transport, port 3000)
bun run http
Configuring Claude Desktop (local build)
{
  "mcpServers": {
    "dc-api": {
      "command": "/path/to/dc-api-v2/mcp/bin/run.sh"
    }
  }
}

Replace /path/to/dc-api-v2/mcp with the absolute path to this directory. Restart Claude Desktop after editing.

Tests
CommandResult
bun run testRun the test suite
bun test:watchRun the test suite, watching for changes
bun test:coverageRun the test suite and calculate coverage
bun test:recordRun the test suite against live data and record new fixtures
  • By default, the test suite uses pre-recorded HTTP fixtures. Set MSW_MODE=live to run against live data.
  • bun test:record records new fixtures (requires mitmproxy: pip install mitmproxy).

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.