Skip to main content
Glama
alexwade

DataCite MCP Server

by alexwade
README.md
# DataCite MCP Server

A Model Context Protocol (MCP) server that wraps the [DataCite REST API](https://support.datacite.org/docs/api), giving Claude and other MCP clients read-only access to DataCite's index of 125M+ research DOIs. No API key is required. The server runs as a local stdio process and communicates with Claude Desktop via the MCP protocol, enabling natural-language queries against the full DataCite catalogue: searching by keyword, person, funder, or repository; retrieving full metadata records; and exploring relationships between research outputs.

## Claude Desktop Configuration

Add the following to your `claude_desktop_config.json` (found at `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "datacite": {
      "command": "node",
      "args": ["/Users/[user_name]/Claude/projects/datacite/dist/index.js"]
    }
  }
}
```

## Build Instructions

```bash
cd [path-to-project]
npm install
npm run build
```

To inspect the server interactively:

```bash
npm run inspector
```

## Available Tools

| Tool | Description |
|------|-------------|
| `search_dois` | Full-text search across DataCite's 125M+ DOI index with filters for resource type, funder, year, repository, and more. Supports cursor-based pagination. |
| `get_doi` | Retrieve complete metadata for a single DOI. Accepts any common DOI format (bare, URL, `doi:` prefix). Optionally includes the raw DataCite Schema XML. |
| `format_citation` | Format a DOI as a formatted citation string. Supports APA, MLA, Chicago, Harvard, IEEE, Vancouver, BibTeX, and CSL JSON. |
| `get_doi_metrics` | Retrieve view, download, and citation counts for a DOI. Optionally include time-series arrays. |
| `get_related_works` | Explore the relationship graph for a DOI — citations, references, versions, and parts. |
| `search_by_person` | Find all DOIs associated with a researcher by ORCID iD or name. |
| `list_repositories` | Browse DataCite member repositories (clients) with optional search and filtering. |
| `get_doi_schema_xml` | Fetch the raw DataCite Metadata Schema XML for a DOI (base64-decoded). |

## Available Prompts

Prompts are pre-built workflows invocable from Claude Desktop's prompt menu (⌘K → "Use a prompt").

| Prompt | Arguments | Description |
|--------|-----------|-------------|
| `find-top-works-by-topic` | `resource_type` (required), `topic` (required) | Find the top 10 most relevant DataCite records for a resource type and subject area. Returns a ranked table with repository/year observations and a suggested follow-up. |
| `repository-summary` | `repository_name` (required) | Full metadata quality and activity report for a repository. Pass a common name like `"Zenodo"` or `"Dryad"` — the prompt resolves it to a DataCite client_id automatically. |
| `researcher-profile` | `identifier` (required) | Researcher profile from DataCite records. Pass an ORCID iD (`0000-0001-8135-3489`) for exact matching, or a name (`"Jane Smith"`) for fuzzy search with disambiguation. |

## Available Resources

| Resource URI | Description |
|-------------|-------------|
| `datacite://schema/resource-types` | The complete DataCite `resourceTypeGeneral` controlled vocabulary. |
| `datacite://providers` | All DataCite member providers (organisations). |
| `datacite://clients` | All DataCite repository clients. |
| `datacite://doi/{doi}` | Full metadata record for a given DOI as JSON. |
| `datacite://doi/{doi}/citations` | Works that cite the given DOI. |
| `datacite://doi/{doi}/references` | Works cited by the given DOI. |
| `datacite://provider/{id}` | Metadata for a specific DataCite provider. |
| `datacite://client/{id}` | Metadata for a specific DataCite repository client. |

## Environment Variables

Copy `.env.example` to `.env` and adjust as needed. All variables are optional — defaults work out of the box.

| Variable | Default | Description |
|----------|---------|-------------|
| `MCP_USER_AGENT_URL` | `https://github.com/alexwade/datacite-mcp` | URL included in the HTTP User-Agent header |
| `MCP_USER_AGENT_EMAIL` | *(empty)* | Contact email for DataCite's polite pool |
| `DATACITE_RATE_LIMIT_RPS` | `10` | Max API requests per second |
| `CACHE_DOI_TTL_SECONDS` | `3600` | DOI cache TTL (1 hour) |
| `CACHE_SEARCH_TTL_SECONDS` | `300` | Search cache TTL (5 minutes) |
| `CACHE_STATIC_TTL_SECONDS` | `86400` | Static data cache TTL (24 hours) |

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: formatting citations, retrieving metadata, metrics, schema XML, related works, repository info, listing, and searching by person or general query. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., format_citation, get_doi, list_repositories, search_dois). The naming is uniform and predictable.

Tool Count5/5

9 tools is well within the ideal range for a focused server. Each tool serves a specific purpose without redundancy, and the count feels appropriate for the scope of DataCite access.

Completeness4/5

The tool set covers all major read operations for DataCite DOIs: retrieval, search, metrics, citation formatting, schema, related works, and repository info. Minor gaps exist (e.g., no write/update operations, no per-repository stats), but these are consistent with a read-only API focus.

Maintenance

ActivityStale
ResponsivenessNo issues