Related MCP Server Resources

Explore more AI models, providers, and integration options:

  • Explore AI Models
  • Explore AI Providers
  • Explore MCP Servers
  • LangDB Pricing
  • Documentation
  • AI Industry Blog
  • GitHub PR Comments MCP Server
  • Claude MCP Server
  • Powertools MCP Search Server
  • MCP Pokemon Server
  • MCP Server for Deep Research
Back to MCP Servers
Crossref MCP Server

Crossref MCP Server

Public
botanicastudios/crossref-mcp

Model Context Protocol server enabling search and retrieval of scholarly works via title, author, or DOI using the Crossref API with structured JSON responses.

javascript
0 tools
May 30, 2025
Updated Jun 4, 2025

Supercharge Your AI with Crossref MCP Server

MCP Server

Unlock the full potential of Crossref MCP Server through LangDB's AI Gateway. Get enterprise-grade security, analytics, and seamless integration with zero configuration.

Unified API Access
Complete Tracing
Instant Setup
Get Started Now

Free tier available • No credit card required

Instant Setup
99.9% Uptime
10,000+Monthly Requests

Crossref MCP Server

A Model Context Protocol (MCP) server for interacting with the Crossref API.

Features

  • Search works by title
  • Search works by author
  • Get work details by DOI

Installation

{
  "mcpServers": {
    "crossref": {
      "command": "npx",
      "args": [
        "-y",
        "@botanicastudios/crossref-mcp"
      ]
    }
  }
}

Usage

The server provides three main tools:

1. Search by Title

Search for works in Crossref by title:

// Example: Search for works containing "quantum computing" in the title { "title": "quantum computing", "rows": 5 // Optional, defaults to 5 }

2. Search by Author

Search for works in Crossref by author:

// Example: Search for works by "Einstein" { "author": "Einstein", "rows": 5 // Optional, defaults to 5 }

3. Get Work by DOI

Retrieve a specific work using its DOI:

// Example: Get work with DOI "10.1088/1742-6596/1398/1/012023" { "doi": "10.1088/1742-6596/1398/1/012023" }

Response Format

All responses are returned as structured JSON objects with the following format:

For successful searches:

{ "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... ] }

For single DOI lookup:

{ "status": "success", "query": { "doi": "10.xxxx/xxxxx" }, "result": { // work details as shown above } }

For errors or no results:

{ "status": "error" | "no_results" | "not_found", "message": "Error message" | null, "query": { /* the original query parameters */ } }

Testing

The server comes with a comprehensive test suite using Vitest. Tests cover all available tools and include various scenarios including successful responses, empty results, and error handling.

Running Tests

npm test

Test Structure

The tests use Vitest's mocking capabilities to simulate Crossref API responses without making actual network requests. The test structure includes:

  1. Mock Data: Sample responses for title searches, author searches, and DOI lookups
  2. Mock Handlers: Testing versions of the handler functions in mcp-server-test-handlers.js
  3. Test Cases: Tests for all tools covering:
    • Successful API responses
    • Empty result sets
    • Error handling and network failures

Extending Tests

To add more test cases:

  1. Add new mock data to the test file if needed
  2. Create additional test cases in the relevant describe block
  3. Use the mockFetchResponse() helper to simulate API responses

Example:

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 }); });
Publicly Shared Threads0

Discover shared experiences

Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!

Share your threads to help others
Related MCPs5
  • GitHub PR Comments MCP Server
    GitHub PR Comments MCP Server

    Fetch GitHub Pull Request comments with detailed file paths, line ranges, and threaded replies via a...

    Added May 30, 2025
  • Claude MCP Server
    Claude MCP Server

    Lightweight Model Context Protocol server enabling real-time web search integration with Claude AI u...

    Added May 30, 2025
  • Powertools MCP Search Server
    Powertools MCP Search Server

    Model Context Protocol server enabling efficient local search of AWS Lambda Powertools documentation...

    2 tools
    Added May 30, 2025
  • MCP Pokemon Server
    MCP Pokemon Server

    An MCP server implementation enabling interaction with the PokeAPI to fetch dynamic Pokémon data and...

    Added May 30, 2025
  • MCP Server for Deep Research
    MCP Server for Deep Research

    Conduct comprehensive, structured research with a Model Context Protocol server that elaborates ques...

    Added May 30, 2025