Northwestern University Libraries Digital Collections API
Agent integration with the Northwestern University Libraries Digital Collections API
我该使用它吗
质量与安全性
发现(9)
- LOW在 view-work 中
- LOW在 view-collection 中
- LOW在 get-work 中
- LOW在 list-collections 中
- LOW在 similarity-search 中
- LOW在 view-work 中
- LOW在 view-collection 中
- LOW在 view-search-results 中
- LOW在 view-similar-works 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"dc-api": {
"command": "npx",
"args": [
"@nulib/dc-api-mcp"
]
}
}
}可运行的软件包
2.11.15stdio远程端点
https://api.dc.library.northwestern.edu/api/v2/mcpstreamable-http它能做什么
工具清单
工具(8)
🟢search(query, fields, public_only, max_results, page)
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.
输入模式
{
"type": "object",
"properties": {
"query": {
"description": "A natural language query. Best for exploratory / conceptual searches.",
"type": "string"
},
"fields": {
"type": "object",
"properties": {
"abstract": {
"description": "A summary of the work",
"type": "string"
},
"alternate_title": {
"description": "Alternate titles for the work",
"type": "string"
},
"caption": {
"description": "The caption for a work",
"type": "string"
},
"collection": {
"description": "The parent collection of the work",
"type": "string"
},
"contributor": {
"description": "An entity responsible for making contributions to the work",
"type": "string"
},
"creator": {
"description": "An entity primarily responsible for making the work",
"type": "string"
},
"description": {
"description": "An account of the work",
"type": "string"
},
"genre": {
"description": "Describes what the original object is, not what it is about",
"type": "string"
},
"keywords": {
"description": "Keywords or tags used to describe this content",
"type": "string"
},
"language": {
"description": "A language of the work",
"type": "string"
},
"library_unit": {
"description": "The library unit responsible for the work",
"type": "string",
"enum": [
"Special Collections",
"Faculty Collections",
"Government and Geographic Information Collection",
"Herskovits Library",
"Music Library",
"Transportation Library",
"University Archives",
"University Main Library"
]
},
"license": {
"description": "The Creative Commons license for the work",
"type": "string",
"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"
]
},
"location": {
"description": "Place of publication",
"type": "string"
},
"notes": {
"description": "Notes associated with the work",
"type": "string"
},
"publisher": {
"description": "An entity responsible for making the work available",
"type": "string"
},
"rights_statement": {
"description": "The rights statement of the work",
"type": "string",
"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"
]
},
"style_period": {
"description": "A defined style, historical period, group, school, dynasty, movement, etc. whose characteristics are represented in the work.",
"type": "string"
},
"subject": {
"description": "The subject of the work",
"type": "string"
},
"table_of_contents": {
"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.",
"type": "string"
},
"technique": {
"description": "The technique used in the creation of the work",
"type": "string"
},
"title": {
"description": "The title of the work",
"type": "string"
},
"work_type": {
"description": "The type of the work",
"type": "string",
"enum": [
"Audio",
"Image",
"Video"
]
},
"text": {
"description": "Full text associated with the work",
"type": "string"
},
"controlled_terms": {
"description": "All controlled terms associated with the work, across all fields. Useful for searching across all controlled fields simultaneously without specifying which field.",
"type": "string"
}
},
"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."
},
"public_only": {
"default": true,
"type": "boolean",
"description": "Only include publicly available works in search results"
},
"max_results": {
"default": 10,
"description": "The maximum number of search results to return per page",
"type": "number",
"minimum": 1,
"maximum": 20
},
"page": {
"default": 1,
"description": "The page of search results to return",
"type": "number",
"minimum": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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."
}输出模式
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"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"
},
"description": {
"type": "array",
"items": {
"type": "string"
},
"description": "A brief description 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",
"properties": {
"title": {
"type": "string",
"description": "The title of the collection the search result item belongs to"
}
},
"required": [
"title"
],
"additionalProperties": false
},
"iiif_manifest": {
"type": "string",
"format": "uri",
"description": "A URL to the IIIF manifest for the search result item"
},
"visibility": {
"type": "string",
"enum": [
"Public",
"Private",
"Institution"
],
"description": "Whether the item is publicly accessible"
}
},
"required": [
"id",
"title",
"description",
"thumbnail",
"collection",
"iiif_manifest",
"visibility"
],
"additionalProperties": false
},
"description": "The search results returned from the Digital Collections API"
},
"pagination": {
"type": "object",
"properties": {
"current_page": {
"type": "number",
"description": "The current page of search results"
},
"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"
}
},
"required": [
"current_page",
"limit",
"total_hits",
"total_pages"
],
"additionalProperties": false
},
"info": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the API endpoint"
},
"description": {
"type": "string",
"description": "A description of the API endpoint"
},
"version": {
"type": "string",
"description": "The version of the API endpoint"
}
},
"required": [
"name",
"description",
"version"
],
"additionalProperties": false
},
"aggregations": {},
"explain": {
"description": "The explain output from Elasticsearch for the search query. Only included if the MCP is running in debug mode."
}
},
"required": [
"data",
"pagination",
"info"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get-work(work_id)
Retrieve the full metadata for a work from the NUL Digital Collections.
输入模式
{
"type": "object",
"properties": {
"work_id": {
"type": "string",
"description": "The ID of the work to retrieve"
}
},
"required": [
"work_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list-collections(public_only, max_results, page)
List collection records from the NUL Digital Collections.
输入模式
{
"type": "object",
"properties": {
"public_only": {
"default": true,
"type": "boolean",
"description": "Only include publicly available works in search results"
},
"max_results": {
"default": 10,
"description": "The maximum number of search results to return per page",
"type": "number",
"minimum": 1,
"maximum": 20
},
"page": {
"default": 1,
"description": "The page of search results to return",
"type": "number",
"minimum": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique identifier for the search result item"
},
"title": {
"type": "string",
"description": "The title of the search result item"
},
"description": {
"anyOf": [
{
"type": "string",
"description": "A brief description of the search result item"
},
{
"type": "null"
}
]
},
"thumbnail": {
"type": "string",
"format": "uri",
"description": "A URL to a thumbnail image representing the search result item"
},
"iiif_collection": {
"type": "string",
"format": "uri",
"description": "A URL to the IIIF collection for the search result item"
},
"visibility": {
"type": "string",
"enum": [
"Public",
"Private",
"Institution"
],
"description": "Whether the item is publicly accessible"
}
},
"required": [
"id",
"title",
"thumbnail",
"iiif_collection",
"visibility"
],
"additionalProperties": false
},
"description": "The search results returned from the Digital Collections API"
},
"pagination": {
"type": "object",
"properties": {
"current_page": {
"type": "number",
"description": "The current page of search results"
},
"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"
}
},
"required": [
"current_page",
"limit",
"total_hits",
"total_pages"
],
"additionalProperties": false
},
"info": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the API endpoint"
},
"description": {
"type": "string",
"description": "A description of the API endpoint"
},
"version": {
"type": "string",
"description": "The version of the API endpoint"
}
},
"required": [
"name",
"description",
"version"
],
"additionalProperties": false
},
"aggregations": {},
"explain": {
"description": "The explain output from Elasticsearch for the search query. Only included if the MCP is running in debug mode."
}
},
"required": [
"data",
"pagination",
"info"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢similarity-search(work_id, public_only, max_results, page)
Find works that are similar to a given work. Uses semantic similarity based on work embeddings.
输入模式
{
"type": "object",
"properties": {
"work_id": {
"type": "string",
"description": "ID of a work to find similar items for."
},
"public_only": {
"default": true,
"type": "boolean",
"description": "Only include publicly available works in search results"
},
"max_results": {
"default": 10,
"description": "The maximum number of search results to return per page",
"type": "number",
"minimum": 1,
"maximum": 20
},
"page": {
"default": 1,
"description": "The page of search results to return",
"type": "number",
"minimum": 1
}
},
"required": [
"work_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"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"
},
"description": {
"type": "array",
"items": {
"type": "string"
},
"description": "A brief description 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",
"properties": {
"title": {
"type": "string",
"description": "The title of the collection the search result item belongs to"
}
},
"required": [
"title"
],
"additionalProperties": false
},
"iiif_manifest": {
"type": "string",
"format": "uri",
"description": "A URL to the IIIF manifest for the search result item"
},
"visibility": {
"type": "string",
"enum": [
"Public",
"Private",
"Institution"
],
"description": "Whether the item is publicly accessible"
}
},
"required": [
"id",
"title",
"description",
"thumbnail",
"collection",
"iiif_manifest",
"visibility"
],
"additionalProperties": false
},
"description": "The search results returned from the Digital Collections API"
},
"pagination": {
"type": "object",
"properties": {
"current_page": {
"type": "number",
"description": "The current page of search results"
},
"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"
}
},
"required": [
"current_page",
"limit",
"total_hits",
"total_pages"
],
"additionalProperties": false
},
"info": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the API endpoint"
},
"description": {
"type": "string",
"description": "A description of the API endpoint"
},
"version": {
"type": "string",
"description": "The version of the API endpoint"
}
},
"required": [
"name",
"description",
"version"
],
"additionalProperties": false
},
"aggregations": {},
"explain": {
"description": "The explain output from Elasticsearch for the search query. Only included if the MCP is running in debug mode."
}
},
"required": [
"data",
"pagination",
"info"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢view-work(work_id)
View a work from the NUL Digital Collections in an interactive viewer.
输入模式
{
"type": "object",
"properties": {
"work_id": {
"type": "string",
"description": "The ID of the work to view"
}
},
"required": [
"work_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"iiifContentUrl": {
"type": "string",
"format": "uri",
"description": "A URL to a IIIF manifest or collection"
}
},
"required": [
"iiifContentUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢view-collection(collection_id)
View a collection from the NUL Digital Collections in an interactive viewer.
输入模式
{
"type": "object",
"properties": {
"collection_id": {
"type": "string",
"description": "The ID of the collection to view"
}
},
"required": [
"collection_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"iiifContentUrl": {
"type": "string",
"format": "uri",
"description": "A URL to a IIIF manifest or collection"
}
},
"required": [
"iiifContentUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢view-search-results(query, fields, public_only, max_results, page)
View results from the search-works tool in an interactive viewer.
输入模式
{
"type": "object",
"properties": {
"query": {
"description": "A natural language query. Best for exploratory / conceptual searches.",
"type": "string"
},
"fields": {
"type": "object",
"properties": {
"abstract": {
"description": "A summary of the work",
"type": "string"
},
"alternate_title": {
"description": "Alternate titles for the work",
"type": "string"
},
"caption": {
"description": "The caption for a work",
"type": "string"
},
"collection": {
"description": "The parent collection of the work",
"type": "string"
},
"contributor": {
"description": "An entity responsible for making contributions to the work",
"type": "string"
},
"creator": {
"description": "An entity primarily responsible for making the work",
"type": "string"
},
"description": {
"description": "An account of the work",
"type": "string"
},
"genre": {
"description": "Describes what the original object is, not what it is about",
"type": "string"
},
"keywords": {
"description": "Keywords or tags used to describe this content",
"type": "string"
},
"language": {
"description": "A language of the work",
"type": "string"
},
"library_unit": {
"description": "The library unit responsible for the work",
"type": "string",
"enum": [
"Special Collections",
"Faculty Collections",
"Government and Geographic Information Collection",
"Herskovits Library",
"Music Library",
"Transportation Library",
"University Archives",
"University Main Library"
]
},
"license": {
"description": "The Creative Commons license for the work",
"type": "string",
"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"
]
},
"location": {
"description": "Place of publication",
"type": "string"
},
"notes": {
"description": "Notes associated with the work",
"type": "string"
},
"publisher": {
"description": "An entity responsible for making the work available",
"type": "string"
},
"rights_statement": {
"description": "The rights statement of the work",
"type": "string",
"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"
]
},
"style_period": {
"description": "A defined style, historical period, group, school, dynasty, movement, etc. whose characteristics are represented in the work.",
"type": "string"
},
"subject": {
"description": "The subject of the work",
"type": "string"
},
"table_of_contents": {
"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.",
"type": "string"
},
"technique": {
"description": "The technique used in the creation of the work",
"type": "string"
},
"title": {
"description": "The title of the work",
"type": "string"
},
"work_type": {
"description": "The type of the work",
"type": "string",
"enum": [
"Audio",
"Image",
"Video"
]
},
"text": {
"description": "Full text associated with the work",
"type": "string"
},
"controlled_terms": {
"description": "All controlled terms associated with the work, across all fields. Useful for searching across all controlled fields simultaneously without specifying which field.",
"type": "string"
}
},
"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."
},
"public_only": {
"default": true,
"type": "boolean",
"description": "Only include publicly available works in search results"
},
"max_results": {
"default": 10,
"description": "The maximum number of search results to return per page",
"type": "number",
"minimum": 1,
"maximum": 20
},
"page": {
"default": 1,
"description": "The page of search results to return",
"type": "number",
"minimum": 1
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"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."
}输出模式
{
"type": "object",
"properties": {
"iiifContentUrl": {
"type": "string",
"format": "uri",
"description": "A URL to a IIIF manifest or collection"
}
},
"required": [
"iiifContentUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢view-similar-works(work_id, public_only, max_results, page)
View results from the similarity-search tool in an interactive viewer.
输入模式
{
"type": "object",
"properties": {
"work_id": {
"type": "string",
"description": "ID of a work to find similar items for."
},
"public_only": {
"default": true,
"type": "boolean",
"description": "Only include publicly available works in search results"
},
"max_results": {
"default": 10,
"description": "The maximum number of search results to return per page",
"type": "number",
"minimum": 1,
"maximum": 20
},
"page": {
"default": 1,
"description": "The page of search results to return",
"type": "number",
"minimum": 1
}
},
"required": [
"work_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}输出模式
{
"type": "object",
"properties": {
"iiifContentUrl": {
"type": "string",
"format": "uri",
"description": "A URL to a IIIF manifest or collection"
}
},
"required": [
"iiifContentUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}社区
证据