Northwestern University Libraries Digital Collections API

io.github.nulibPublished by GitHub account nulibv2.12.0Updated Oct 29, 2026

Agent integration with the Northwestern University Libraries Digital Collections API

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Searches and browses Northwestern University Libraries Digital Collections, returning work metadata, collections and IIIF manifests for an assistant.

What you can do
  • Search works by field values or natural language, with field values as extra constraints
  • Retrieve full metadata for a single work by ID and list available collections
  • Find works similar to a given work using semantic embeddings
  • View a work, a collection, or saved search and similarity results as IIIF manifests for compatible viewers
When to use it
Useful when someone wants an assistant to explore Northwestern University Libraries' digitized materials: finding works on a topic, pulling catalog metadata, browsing collections, or locating visually or semantically similar items.
Requirements
Can be used as a hosted remote endpoint over streamable HTTP with no local install, or run locally from the npm package or container image. Local development needs Node.js 24+ and mise; optional environment variables DC_API_BASE, DC_IIIF_BASE and SECRETS_PATH override defaults. No authentication is declared.
Before you install
Read-only access to a public library catalog; no credentials are requested by default. The local setup mentions a SECRETS_PATH variable for AWS Secrets Manager configuration, so review what that path exposes before setting it. Queries and work IDs are sent to the Northwestern University Libraries API.

Installation

In SourceWeft

  1. Open Northwestern University Libraries Digital Collections API in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.nulib%2Fdc-api/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "northwestern-university-libraries-digita": {
      "type": "http",
      "url": "https://api.dc.library.northwestern.edu/api/v2/mcp"
    }
  }
}

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

json
{  "mcpServers": {    "dc-api": {      "type": "http",      "url": "https://api.dc.library.northwestern.edu/api/v2/mcp"    }  }}

Claude Code

bash
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

bash
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)
bash
bun run stdio

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

bash
bin/run.sh
HTTP (Streamable HTTP transport, port 3000)
bash
bun run http

Configuring Claude Desktop (local build)

json
{  "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).

Source: mcp/README.md at commit 56b4d99

Tools

8

get-work

Get Work

Retrieve the full metadata for a work from the NUL Digital Collections.

Parameterswork_idrequired

list-collections

List Collections

List collection records from the NUL Digital Collections.

Parameterspagemax_resultspublic_only

view-work

View Work

View a work from the NUL Digital Collections in an interactive viewer.

Parameterswork_idrequired

view-collection

View Collection

View a collection from the NUL Digital Collections in an interactive viewer.

Parameterscollection_idrequired

view-search-results

View Search Results

View results from the search-works tool in an interactive viewer.

Parameterspagequeryfieldsmax_resultspublic_only

view-similar-works

View Similar Works

View results from the similarity-search tool in an interactive viewer.

Parameterspagework_idrequiredmax_resultspublic_only

Version history

2
  1. v2.12.0LatestOct 29, 2026
  2. v2.11.15Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.