protogrid

Search / io.github.cyanheads/datacite-mcp-server

datacite-mcp-server

R0· no sign-in

Search DataCite datasets and software, fetch DOI metadata, trace relations, format citations.

v0.1.3 · active · repository · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality89good
Trust94of 100
Uptime, 30 days100%
Latency p50205 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "datacite-mcp-server": {
      "type": "http",
      "url": "https://datacite.caseyjhand.com/mcp"
    }
  }
}
claude mcp add --transport http datacite-mcp-server https://datacite.caseyjhand.com/mcp
[mcp_servers.datacite-mcp-server]
url = "https://datacite.caseyjhand.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "datacite-mcp-server": {
      "type": "remote",
      "url": "https://datacite.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "datacite-mcp-server": {
      "type": "http",
      "url": "https://datacite.caseyjhand.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=datacite-mcp-server&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZGF0YWNpdGUuY2FzZXlqaGFuZC5jb20vbWNwIn0%3D"
}
{
  "servers": {
    "datacite-mcp-server": {
      "type": "http",
      "url": "https://datacite.caseyjhand.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "datacite-mcp-server": {
      "httpUrl": "https://datacite.caseyjhand.com/mcp"
    }
  }
}
extensions:
  "datacite-mcp-server":
    enabled: true
    name: "datacite-mcp-server"
    type: streamable_http
    uri: "https://datacite.caseyjhand.com/mcp"
    timeout: 300

Quality 89 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations6 of 6 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: datacite_get_citation (destructiveHint); datacite_search_works (destructiveHint); datacite_trace_relations (destructiveHint); …
  • pass
    tools.token_costabout 5,288 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes4 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15

6 tools, about 5,288 tokens to load them all · tool set 9e0ba05cd063 · tools last changed 2026-10-18 · checked 2026-10-20 10:35 UTC

Tool changes

  • datacite_search_repositorieschangedinput schema
  • datacite_trace_relationschangedinput schema, output schema
  • datacite_get_workchangeddescription, input schema, output schema
    before

    Fetch the full deposited DataCite metadata for one DOI: titles, creators and contributors with ORCID iDs and ROR affiliations, publisher, dates, version, subjects, descriptions, funding, geolocations, rights, sizes and formats, related identifiers with their relation types, repository and provider, and citation, reference, version, part, view, and download counts. Long lists are capped with their full counts reported; use datacite_trace_relations for the complete relation graph. A DOI DataCite does not hold returns found: false naming the registration agency that does, or saying the DOI does not exist.

    after · 71% of words in common

    Fetch the full deposited DataCite metadata for one DOI: titles, creators and contributors with ORCID iDs and ROR affiliations, publisher, dates, version, subjects, descriptions, funding, geolocations, rights, sizes and formats, related identifiers with their relation types, repository and provider, and citation, reference, version, part, view, and download counts. Long lists are capped with exact list/offset continuation recipes; select a list to retrieve later entries without losing the other metadata. datacite_trace_relations maps a bounded graph (at most 100 nodes and 1,000 edges). A DOI DataCite does not hold returns found: false naming the registration agency that does, or saying the DOI does not exist.

  • datacite_search_workschangedinput schema, output schema

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 94 / 100

provenance80
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +reachable +uptime-100% +updated-2d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

@cyanheads/[email protected] npmthis version is not known to the dependency resolver

@cyanheads/[email protected] npmthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://datacite.caseyjhand.com/mcp streamable-httpnoneyes100%205 ms2026-07-282026-10-20
packageregistryversionruntimesecrets
@cyanheads/datacite-mcp-servernpm0.1.3npx
@cyanheads/datacite-mcp-servernpm0.1.3npx

Tools (6)

datacite_get_citationread-onlyRender one DataCite DOI as a formatted citation in a CSL style and locale (APA in US English by default), or as a machine-readable record: CSL JSON, BibTeX, RIS, DataCite JSON or XML, Schema.org JSON-LD, Codemeta, or JATS. A style the upstream renderer does not support — an unknown id or a dependent journal style — is rejected instead of silently rendered as APA. Formatted text comes back as plain text alongside the upstream HTML markup. A DOI DataCite does not hold returns found: false naming the registration agency that does.
datacite_get_workread-onlyFetch the full deposited DataCite metadata for one DOI: titles, creators and contributors with ORCID iDs and ROR affiliations, publisher, dates, version, subjects, descriptions, funding, geolocations, rights, sizes and formats, related identifiers with their relation types, repository and provider, and citation, reference, version, part, view, and download counts. Long lists are capped with exact list/offset continuation recipes; select a list to retrieve later entries without losing the other metadata. datacite_trace_relations maps a bounded graph (at most 100 nodes and 1,000 edges). A DOI DataCite does not hold returns found: false naming the registration agency that does, or saying the DOI does not exist.
datacite_list_referenceread-onlyLook up the controlled vocabularies and identifier forms the other datacite_* tools accept: resource types, relation types with their inverses and groups, related-identifier types, date and contributor types, fields of science, common license ids, repository types, certificates, software platforms, client types, sort orders, query-syntax field paths, citation formats, verified citation styles and locales, accepted identifier forms (DOI, ORCID iD, ROR ID, Crossref Funder ID, country, language, repository, and provider ids), and coverage and rate-limit rules. Offline; makes no upstream request.
datacite_search_repositoriesread-onlyFind DataCite repository accounts by name or description text, field of science, repository type, certification (e.g. CoreTrustSeal), software platform, client type, or parent provider, or look up known repository IDs. Returns each repository's repositoryId — the value datacite_search_works takes in repository_ids — with its providerId, name, type, certificates, software, subjects, homepage, and re3data link. To rank repositories by how many works they hold on a topic, run datacite_search_works with that topic and include_facets: true; its repositories facet lists the top ten with counts.
datacite_search_worksread-onlySearch DataCite DOI metadata for datasets, software, samples, workflows, and other research outputs. Combine plain words (`text`) or OpenSearch query syntax (`query`) with filters for resource type, creator (ORCID iD or name), affiliation (ROR ID or name), affiliation country, funder (ROR ID, Crossref Funder ID, or name), subject, field of science, repository, provider, license, language, geographic place, publication-year range, and minimum citation count. Returns the total match count and compact rows — DOI, title, first creators, year, type, repository, licenses, and citation/view/download counts — plus optional top facet counts. Page numbers reach the first 10,000 ranked matches; pass cursor "*" to walk any result set in full, in registration order.
datacite_trace_relationsread-onlyMap the relation graph around one DOI — versions, parts, supplements, derivations, documentation, citations, references, and every other DataCite relation type — as nodes and directed edges that keep the relationType exactly as asserted and name each edge's source: the DOI's own metadata, other DataCite records that point at it, or DataCite Event Data (citation links harvested from Crossref and other sources). Accepts any DOI, including a journal article's DOI, to find the datasets and software it cites and those that cite, supplement, or derive from it. DataCite DOIs are hydrated with title, type, year, repository, and citation count; other identifiers stay leaf nodes. Depth 1 by default, at most 2, with a node cap (default 50, max 100) disclosed when it binds. An absent edge is not evidence that no relationship exists.

Schemas: list_tools.

Similar MCP servers

More from io.github.cyanheads

And 140 more from this publisher.

Official server.json
{
  "name": "io.github.cyanheads/datacite-mcp-server",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://datacite.caseyjhand.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.3",
  "packages": [
    {
      "version": "0.1.3",
      "transport": {
        "type": "stdio"
      },
      "identifier": "@cyanheads/datacite-mcp-server",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "MCP_LOG_LEVEL",
          "format": "string",
          "default": "info",
          "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
        },
        {
          "name": "DATACITE_CONTACT_EMAIL",
          "format": "string",
          "description": "Contact email sent in the User-Agent as mailto: (never a URL parameter). Moves requests to DataCite's identified tier (1,000 per 5 minutes per IP instead of 500)."
        },
        {
          "name": "DATACITE_MAX_REQUESTS_PER_5MIN",
          "format": "number",
          "description": "Request budget per 5-minute window, 50-1000. Default 800 with a contact email, 400 without; divide it across replicas sharing one egress IP."
        }
      ]
    },
    {
      "version": "0.1.3",
      "transport": {
        "url": "http://localhost:3010/mcp",
        "type": "streamable-http"
      },
      "identifier": "@cyanheads/datacite-mcp-server",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "MCP_TRANSPORT_TYPE",
          "value": "http",
          "format": "string",
          "description": "Selects the HTTP transport."
        },
        {
          "name": "MCP_HTTP_HOST",
          "format": "string",
          "default": "127.0.0.1",
          "description": "The hostname for the HTTP server."
        },
        {
          "name": "MCP_HTTP_PORT",
          "format": "string",
          "default": "3010",
          "description": "The port to run the HTTP server on."
        },
        {
          "name": "MCP_HTTP_ENDPOINT_PATH",
          "format": "string",
          "default": "/mcp",
          "description": "The endpoint path for the MCP server."
        },
        {
          "name": "MCP_AUTH_MODE",
          "format": "string",
          "default": "none",
          "description": "Authentication mode to use: 'none', 'jwt', or 'oauth'."
        },
        {
          "name": "MCP_LOG_LEVEL",
          "format": "string",
          "default": "info",
          "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
        },
        {
          "name": "DATACITE_CONTACT_EMAIL",
          "format": "string",
          "description": "Contact email sent in the User-Agent as mailto: (never a URL parameter). Moves requests to DataCite's identified tier (1,000 per 5 minutes per IP instead of 500). Set it on any hosted deployment."
        },
        {
          "name": "DATACITE_MAX_REQUESTS_PER_5MIN",
          "format": "number",
          "description": "Request budget per 5-minute window, 50-1000. Default 800 with a contact email, 400 without; divide it across replicas sharing one egress IP."
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/cyanheads/datacite-mcp-server",
    "source": "github"
  },
  "description": "Search DataCite datasets and software, fetch DOI metadata, trace relations, format citations."
}