Servidor MCP

Northwestern University Libraries Digital Collections API

io.github.nulib/dc-api

Qué hace este MCP

Searches and retrieves metadata and similar works from Northwestern University Libraries Digital Collections.

get-work
Get Work
Retrieve the full metadata for a work from the NUL Digital Collections.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['work_id'], 'properties': {'work_id': {'type': 'string', 'description': 'The ID of the work to retrieve'}}}
list-collections
List Collections
List collection records from the NUL Digital Collections.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'default': 1, 'minimum': 1, 'description': 'The page of search results to return'}, 'max_results': {'type': 'number', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'The maximum number of search results to return per page'}, 'public_only': {'type': 'boolean', 'default': True, 'description': 'Only include publicly available works in search results'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data', 'pagination', 'info'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'thumbnail', 'iiif_collection', 'visibility'], 'properties': {'id': {'type': 'string', 'description': 'The unique identifier for the search result item'}, 'title': {'type': 'string', 'description': 'The title of the search result item'}, 'thumbnail': {'type': 'string', 'format': 'uri', 'description': 'A URL to a thumbnail image representing the search result item'}, 'visibility': {'enum': ['Public', 'Private', 'Institution'], 'type': 'string', 'description': 'Whether the item is publicly accessible'}, 'description': {'anyOf': [{'type': 'string', 'description': 'A brief description of the search result item'}, {'type': 'null'}]}, 'iiif_collection': {'type': 'string', 'format': 'uri', 'description': 'A URL to the IIIF collection for the search result item'}}, 'additionalProperties': False}, 'description': 'The search results returned from the Digital Collections API'}, 'info': {'type': 'object', 'required': ['name', 'description', 'version'], 'properties': {'name': {'type': 'string', 'description': 'The name of the API endpoint'}, 'version': {'type': 'string', 'description': 'The version of the API endpoint'}, 'description': {'type': 'string', 'description': 'A description of the API endpoint'}}, 'additionalProperties': False}, 'explain': {'description': 'The explain output from Elasticsearch for the search query. Only included if the MCP is running in debug mode.'}, 'pagination': {'type': 'object', 'required': ['current_page', 'limit', 'total_hits', 'total_pages'], 'properties': {'limit': {'type': 'number', 'description': 'The maximum number of search results returned per page'}, 'total_hits': {'type': 'number', 'description': 'The total number of search results'}, 'total_pages': {'type': 'number', 'description': 'The total number of pages of search results'}, 'current_page': {'type': 'number', 'description': 'The current page of search results'}}, 'additionalProperties': False}, 'aggregations': {}}, 'additionalProperties': False}
search
Search
Search for works in the Digital Collections using field-based and/or natural language queries. If both a natural language query and specific field values are provided, the natural language query will take priority, using the specified field values as additional constraints. The result will also include a list of aggregations that show how many results match different values for certain fields. For example, you could see how many results match each collection, work type, or visibility and use that information to refine your search. Perform an empty search to retrieve all works and their aggregations. NOTE: Structured field values enclosed in double quotes will be treated as exact, case-sensitive matches, while unquoted values will be treated as full-text searches.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'default': 1, 'minimum': 1, 'description': 'The page of search results to return'}, 'query': {'type': 'string', 'description': 'A natural language query. Best for exploratory / conceptual searches.'}, 'fields': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Full text associated with the work'}, 'genre': {'type': 'string', 'description': 'Describes what the original object is, not what it is about'}, 'notes': {'type': 'string', 'description': 'Notes associated with the work'}, 'title': {'type': 'string', 'description': 'The title of the work'}, 'caption': {'type': 'string', 'description': 'The caption for a work'}, 'creator': {'type': 'string', 'description': 'An entity primarily responsible for making the work'}, 'license': {'enum': ['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'], 'type': 'string', 'description': 'The Creative Commons license for the work'}, 'subject': {'type': 'string', 'description': 'The subject of the work'}, 'abstract': {'type': 'string', 'description': 'A summary of the work'}, 'keywords': {'type': 'string', 'description': 'Keywords or tags used to describe this content'}, 'language': {'type': 'string', 'description': 'A language of the work'}, 'location': {'type': 'string', 'description': 'Place of publication'}, 'publisher': {'type': 'string', 'description': 'An entity responsible for making the work available'}, 'technique': {'type': 'string', 'description': 'The technique used in the creation of the work'}, 'work_type': {'enum': ['Audio', 'Image', 'Video'], 'type': 'string', 'description': 'The type of the work'}, 'collection': {'type': 'string', 'description': 'The parent collection of the work'}, 'contributor': {'type': 'string', 'description': 'An entity responsible for making contributions to the work'}, 'description': {'type': 'string', 'description': 'An account of the work'}, 'library_unit': {'enum': ['Special Collections', 'Faculty Collections', 'Government and Geographic Information Collection', 'Herskovits Library', 'Music Library', 'Transportation Library', 'University Archives', 'University Main Library'], 'type': 'string', 'description': 'The library unit responsible for the work'}, 'style_period': {'type': 'string', 'description': 'A defined style, historical period, group, school, dynasty, movement, etc. whose characteristics are represented in the work.'}, 'alternate_title': {'type': 'string', 'description': 'Alternate titles for the work'}, 'controlled_terms': {'type': 'string', 'description': 'All controlled terms associated with the work, across all fields. Useful for searching across all controlled fields simultaneously without specifying which field.'}, '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'], 'type': 'string', 'description': 'The rights statement of the work'}, 'table_of_contents': {'type': 'string', 'description': 'Used to provide the titles of separate works or parts of a resource. Information provided may also contain statements of responsibility or other sequential designations.'}}, 'description': 'Structured field search. Best when searching for specific known items or values, or for narrowing a search by specifying particular fields to search within.'}, 'max_results': {'type': 'number', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'The maximum number of search results to return per page'}, 'public_only': {'type': 'boolean', 'default': True, 'description': 'Only include publicly available works in search results'}}, 'description': 'Search for items in the Digital Collections using either a natural language query or specific field values. If both a natural language query and specific field values are provided, the search will return items that match the natural language query and have the specified field values.'}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data', 'pagination', 'info'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'description', 'thumbnail', 'collection', 'iiif_manifest', 'visibility'], 'properties': {'id': {'type': 'string', 'description': 'The unique identifier for the search result item'}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'The title of the search result item'}, 'thumbnail': {'type': 'string', 'format': 'uri', 'description': 'A URL to a thumbnail image representing the search result item'}, 'collection': {'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'The title of the collection the search result item belongs to'}}, 'additionalProperties': False}, 'visibility': {'enum': ['Public', 'Private', 'Institution'], 'type': 'string', 'description': 'Whether the item is publicly accessible'}, 'description': {'type': 'array', 'items': {'type': 'string'}, 'description': 'A brief description of the search result item'}, 'iiif_manifest': {'type': 'string', 'format': 'uri', 'description': 'A URL to the IIIF manifest for the search result item'}}, 'additionalProperties': False}, 'description': 'The search results returned from the Digital Collections API'}, 'info': {'type': 'object', 'required': ['name', 'description', 'version'], 'properties': {'name': {'type': 'string', 'description': 'The name of the API endpoint'}, 'version': {'type': 'string', 'description': 'The version of the API endpoint'}, 'description': {'type': 'string', 'description': 'A description of the API endpoint'}}, 'additionalProperties': False}, 'explain': {'description': 'The explain output from Elasticsearch for the search query. Only included if the MCP is running in debug mode.'}, 'pagination': {'type': 'object', 'required': ['current_page', 'limit', 'total_hits', 'total_pages'], 'properties': {'limit': {'type': 'number', 'description': 'The maximum number of search results returned per page'}, 'total_hits': {'type': 'number', 'description': 'The total number of search results'}, 'total_pages': {'type': 'number', 'description': 'The total number of pages of search results'}, 'current_page': {'type': 'number', 'description': 'The current page of search results'}}, 'additionalProperties': False}, 'aggregations': {}}, 'additionalProperties': False}
similarity-search
Search for Similar Works
Find works that are similar to a given work. Uses semantic similarity based on work embeddings.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['work_id'], 'properties': {'page': {'type': 'number', 'default': 1, 'minimum': 1, 'description': 'The page of search results to return'}, 'work_id': {'type': 'string', 'description': 'ID of a work to find similar items for.'}, 'max_results': {'type': 'number', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'The maximum number of search results to return per page'}, 'public_only': {'type': 'boolean', 'default': True, 'description': 'Only include publicly available works in search results'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['data', 'pagination', 'info'], 'properties': {'data': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'description', 'thumbnail', 'collection', 'iiif_manifest', 'visibility'], 'properties': {'id': {'type': 'string', 'description': 'The unique identifier for the search result item'}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'The title of the search result item'}, 'thumbnail': {'type': 'string', 'format': 'uri', 'description': 'A URL to a thumbnail image representing the search result item'}, 'collection': {'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'The title of the collection the search result item belongs to'}}, 'additionalProperties': False}, 'visibility': {'enum': ['Public', 'Private', 'Institution'], 'type': 'string', 'description': 'Whether the item is publicly accessible'}, 'description': {'type': 'array', 'items': {'type': 'string'}, 'description': 'A brief description of the search result item'}, 'iiif_manifest': {'type': 'string', 'format': 'uri', 'description': 'A URL to the IIIF manifest for the search result item'}}, 'additionalProperties': False}, 'description': 'The search results returned from the Digital Collections API'}, 'info': {'type': 'object', 'required': ['name', 'description', 'version'], 'properties': {'name': {'type': 'string', 'description': 'The name of the API endpoint'}, 'version': {'type': 'string', 'description': 'The version of the API endpoint'}, 'description': {'type': 'string', 'description': 'A description of the API endpoint'}}, 'additionalProperties': False}, 'explain': {'description': 'The explain output from Elasticsearch for the search query. Only included if the MCP is running in debug mode.'}, 'pagination': {'type': 'object', 'required': ['current_page', 'limit', 'total_hits', 'total_pages'], 'properties': {'limit': {'type': 'number', 'description': 'The maximum number of search results returned per page'}, 'total_hits': {'type': 'number', 'description': 'The total number of search results'}, 'total_pages': {'type': 'number', 'description': 'The total number of pages of search results'}, 'current_page': {'type': 'number', 'description': 'The current page of search results'}}, 'additionalProperties': False}, 'aggregations': {}}, 'additionalProperties': False}
view-collection
View Collection
View a collection from the NUL Digital Collections in an interactive viewer.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['collection_id'], 'properties': {'collection_id': {'type': 'string', 'description': 'The ID of the collection to view'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['iiifContentUrl'], 'properties': {'iiifContentUrl': {'type': 'string', 'format': 'uri', 'description': 'A URL to a IIIF manifest or collection'}}, 'additionalProperties': False}
view-search-results
View Search Results
View results from the search-works tool in an interactive viewer.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'default': 1, 'minimum': 1, 'description': 'The page of search results to return'}, 'query': {'type': 'string', 'description': 'A natural language query. Best for exploratory / conceptual searches.'}, 'fields': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Full text associated with the work'}, 'genre': {'type': 'string', 'description': 'Describes what the original object is, not what it is about'}, 'notes': {'type': 'string', 'description': 'Notes associated with the work'}, 'title': {'type': 'string', 'description': 'The title of the work'}, 'caption': {'type': 'string', 'description': 'The caption for a work'}, 'creator': {'type': 'string', 'description': 'An entity primarily responsible for making the work'}, 'license': {'enum': ['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'], 'type': 'string', 'description': 'The Creative Commons license for the work'}, 'subject': {'type': 'string', 'description': 'The subject of the work'}, 'abstract': {'type': 'string', 'description': 'A summary of the work'}, 'keywords': {'type': 'string', 'description': 'Keywords or tags used to describe this content'}, 'language': {'type': 'string', 'description': 'A language of the work'}, 'location': {'type': 'string', 'description': 'Place of publication'}, 'publisher': {'type': 'string', 'description': 'An entity responsible for making the work available'}, 'technique': {'type': 'string', 'description': 'The technique used in the creation of the work'}, 'work_type': {'enum': ['Audio', 'Image', 'Video'], 'type': 'string', 'description': 'The type of the work'}, 'collection': {'type': 'string', 'description': 'The parent collection of the work'}, 'contributor': {'type': 'string', 'description': 'An entity responsible for making contributions to the work'}, 'description': {'type': 'string', 'description': 'An account of the work'}, 'library_unit': {'enum': ['Special Collections', 'Faculty Collections', 'Government and Geographic Information Collection', 'Herskovits Library', 'Music Library', 'Transportation Library', 'University Archives', 'University Main Library'], 'type': 'string', 'description': 'The library unit responsible for the work'}, 'style_period': {'type': 'string', 'description': 'A defined style, historical period, group, school, dynasty, movement, etc. whose characteristics are represented in the work.'}, 'alternate_title': {'type': 'string', 'description': 'Alternate titles for the work'}, 'controlled_terms': {'type': 'string', 'description': 'All controlled terms associated with the work, across all fields. Useful for searching across all controlled fields simultaneously without specifying which field.'}, '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'], 'type': 'string', 'description': 'The rights statement of the work'}, 'table_of_contents': {'type': 'string', 'description': 'Used to provide the titles of separate works or parts of a resource. Information provided may also contain statements of responsibility or other sequential designations.'}}, 'description': 'Structured field search. Best when searching for specific known items or values, or for narrowing a search by specifying particular fields to search within.'}, 'max_results': {'type': 'number', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'The maximum number of search results to return per page'}, 'public_only': {'type': 'boolean', 'default': True, 'description': 'Only include publicly available works in search results'}}, 'description': 'Search for items in the Digital Collections using either a natural language query or specific field values. If both a natural language query and specific field values are provided, the search will return items that match the natural language query and have the specified field values.'}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['iiifContentUrl'], 'properties': {'iiifContentUrl': {'type': 'string', 'format': 'uri', 'description': 'A URL to a IIIF manifest or collection'}}, 'additionalProperties': False}
view-similar-works
View Similar Works
View results from the similarity-search tool in an interactive viewer.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['work_id'], 'properties': {'page': {'type': 'number', 'default': 1, 'minimum': 1, 'description': 'The page of search results to return'}, 'work_id': {'type': 'string', 'description': 'ID of a work to find similar items for.'}, 'max_results': {'type': 'number', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'The maximum number of search results to return per page'}, 'public_only': {'type': 'boolean', 'default': True, 'description': 'Only include publicly available works in search results'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['iiifContentUrl'], 'properties': {'iiifContentUrl': {'type': 'string', 'format': 'uri', 'description': 'A URL to a IIIF manifest or collection'}}, 'additionalProperties': False}
view-work
View Work
View a work from the NUL Digital Collections in an interactive viewer.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['work_id'], 'properties': {'work_id': {'type': 'string', 'description': 'The ID of the work to view'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['iiifContentUrl'], 'properties': {'iiifContentUrl': {'type': 'string', 'format': 'uri', 'description': 'A URL to a IIIF manifest or collection'}}, 'additionalProperties': False}
Añadido
view-similar-works
17 de September de 2026 a las 12:45
Añadido
view-search-results
17 de September de 2026 a las 12:45
Añadido
view-collection
17 de September de 2026 a las 12:45
Añadido
view-work
17 de September de 2026 a las 12:45
Añadido
similarity-search
17 de September de 2026 a las 12:45
Añadido
list-collections
17 de September de 2026 a las 12:45
Añadido
get-work
17 de September de 2026 a las 12:45
Añadido
search
17 de September de 2026 a las 12:45