Servidor MCP de Crossref
Un servidor de Protocolo de Contexto de Modelo (MCP) para interactuar con la API de Crossref.
Características
Buscar obras por título
Buscar obras por autor
Obtener detalles del trabajo por DOI
Related MCP server: Semantic Scholar MCP Server
Instalación
{
"mcpServers": {
"crossref": {
"command": "npx",
"args": [
"-y",
"@botanicastudios/crossref-mcp"
]
}
}
}Uso
El servidor proporciona tres herramientas principales:
1. Buscar por título
Buscar obras en Crossref por título:
// Example: Search for works containing "quantum computing" in the title
{
"title": "quantum computing",
"rows": 5 // Optional, defaults to 5
}2. Búsqueda por autor
Buscar obras en Crossref por autor:
// Example: Search for works by "Einstein"
{
"author": "Einstein",
"rows": 5 // Optional, defaults to 5
}3. Obtener trabajo por DOI
Recuperar una obra específica utilizando su DOI:
// Example: Get work with DOI "10.1088/1742-6596/1398/1/012023"
{
"doi": "10.1088/1742-6596/1398/1/012023"
}Formato de respuesta
Todas las respuestas se devuelven como objetos JSON estructurados con el siguiente formato:
Para búsquedas exitosas:
{
"status": "success",
"query": {
/* the original query parameters */
},
"count": 5,
"results": [
{
"title": "Work title",
"authors": [
{
"given": "First name",
"family": "Last name",
"name": "First name Last name"
}
],
"published": {
"dateParts": [2023, 1, 15],
"dateString": "2023-1-15"
},
"type": "journal-article",
"doi": "10.xxxx/xxxxx",
"url": "https://doi.org/10.xxxx/xxxxx",
"container": "Journal Name",
"publisher": "Publisher Name",
"issue": "1",
"volume": "42",
"abstract": "This is the abstract of the work, if available."
}
// additional results...
]
}Para la búsqueda de un solo DOI:
{
"status": "success",
"query": { "doi": "10.xxxx/xxxxx" },
"result": {
// work details as shown above
}
}En caso de errores o falta de resultados:
{
"status": "error" | "no_results" | "not_found",
"message": "Error message" | null,
"query": { /* the original query parameters */ }
}Pruebas
El servidor incluye un conjunto completo de pruebas con Vitest. Las pruebas abarcan todas las herramientas disponibles e incluyen diversos escenarios, como respuestas correctas, resultados vacíos y gestión de errores.
Ejecución de pruebas
npm testEstructura de la prueba
Las pruebas utilizan las capacidades de simulación de Vitest para simular las respuestas de la API de Crossref sin realizar solicitudes de red reales. La estructura de la prueba incluye:
Datos simulados : ejemplos de respuestas para búsquedas de títulos, autores y DOI
Controladores simulados : versiones de prueba de las funciones del controlador en
mcp-server-test-handlers.jsCasos de prueba : Pruebas para todas las herramientas que cubren:
Respuestas de API exitosas
Conjuntos de resultados vacíos
Manejo de errores y fallas de red
Ampliación de pruebas
Para agregar más casos de prueba:
Agregue nuevos datos simulados al archivo de prueba si es necesario
Cree casos de prueba adicionales en el bloque de descripción correspondiente
Utilice el ayudante
mockFetchResponse()para simular respuestas de API
Ejemplo:
it("should handle a new edge case", async () => {
// Mock the response
mockFetchResponse({
// Your sample response data
});
// Call the handler
const result = await handlers.searchByTitle({ title: "example" });
// Assert the expected results
expect(result).toMatchObject({
// Expected response structure
});
});