Skip to content
Squatch MCP

io.github.cyanheads/openalex-mcp-server

io.github.cyanheads/openalex-mcp-server

by io.github.cyanheads· v0.11.1Source: Official MCP Registry

All versions

VersionRegistry status
0.11.1latestActive
0.11.0Active
0.10.1Active
0.10.0Active
0.9.0Active
0.8.0Active
0.7.9Active
0.7.8Active
0.7.7Active
0.7.6Active
0.7.5Active
0.7.4Active
0.7.3Active
0.7.2Active
0.7.16Active
0.7.15Active
0.7.14Active
0.7.13Active
0.7.12Active
0.7.11Active
0.7.10Active
0.7.1Active
0.7.0Active
0.6.9Active
0.6.8Active
0.6.7Active
0.6.6Active
0.6.5Active
0.6.4Active
0.6.3Active
0.6.21Active
0.6.20Active
0.6.2Active
0.6.19Active
0.6.18Active
0.6.17Active
0.6.16Active
0.6.15Active
0.6.14Active
0.6.13Active
0.6.12Active
0.6.11Active
0.6.10Active
0.6.1Active
0.6.0Active
0.5.0Active
0.4.0Active
0.3.3Active
0.3.2Active
0.3.1Active
0.3.0Active
0.2.9Active
0.2.8Active
0.2.7Active

Version details

Version
0.11.1
Source
Source: Official MCP Registry
Published
Registry last updated
First observed by Squatch
Content fingerprint
87f5ff2acca8f2b8d9fc24dc97f1a9760effdb5a1b6ab7907cde9d95e6a35181

Transports in this version

  • remotestreamable-httphttps://openalex.caseyjhand.com/mcpNo authentication
  • packagestdionpm @cyanheads/openalex-mcp-serverUnknown
  • packagestreamable-httpnpm @cyanheads/openalex-mcp-serverUnknown
Registry metadata (server.json, sanitized)
{
  "_meta": {
    "io.modelcontextprotocol.registry/official": {
      "status": "active",
      "isLatest": true,
      "updatedAt": "2026-11-11T09:18:26.543183Z",
      "publishedAt": "2026-11-11T09:18:26.543183Z",
      "statusChangedAt": "2026-11-11T09:18:26.543183Z"
    }
  },
  "server": {
    "name": "io.github.cyanheads/openalex-mcp-server",
    "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
    "remotes": [
      {
        "url": "https://openalex.caseyjhand.com/mcp",
        "type": "streamable-http"
      }
    ],
    "version": "0.11.1",
    "packages": [
      {
        "version": "0.11.1",
        "transport": {
          "type": "stdio"
        },
        "identifier": "@cyanheads/openalex-mcp-server",
        "runtimeHint": "npx",
        "registryType": "npm",
        "registryBaseUrl": "https://registry.npmjs.org",
        "environmentVariables": [
          {
            "name": "OPENALEX_CLAMP_PER_PAGE",
            "format": "string",
            "default": "true",
            "description": "Clamp oversized count inputs (per_page, semantic-search per_page, sample, slice.limit) to their caps with a notice. Set false to reject them instead."
          },
          {
            "name": "OPENALEX_FILTER_STRING_INPUT",
            "format": "string",
            "default": "true",
            "description": "Accept unambiguous native filter strings on search_entities. Set false to require record objects."
          },
          {
            "name": "OPENALEX_FILTER_RECORD_REPAIR",
            "format": "string",
            "default": "true",
            "description": "Accept boolean and number values, nested objects, and quoted keys in the filters record, with a notice. Set false to require string values under dotted keys."
          },
          {
            "name": "OPENALEX_SELECT_STRING_INPUT",
            "format": "string",
            "default": "true",
            "description": "Accept a comma-separated select string on search_entities and get_citation_graph, with a notice. Set false to require an array."
          },
          {
            "name": "OPENALEX_API_KEY",
            "format": "string",
            "description": "OpenAlex account API key, sent as api_key= - optional (free from https://openalex.org/settings/api). Without it, anonymous rate limits apply."
          },
          {
            "name": "OPENALEX_MAILTO",
            "format": "string",
            "description": "Optional email sent as mailto= to identify yourself to OpenAlex (the polite pool). Separate from the API key."
          },
          {
            "name": "OPENALEX_BASE_URL",
            "format": "string",
            "default": "https://api.openalex.org",
            "description": "OpenAlex API base URL."
          },
          {
            "name": "MCP_LOG_LEVEL",
            "format": "string",
            "default": "info",
            "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
          }
        ]
      },
      {
        "version": "0.11.1",
        "transport": {
          "url": "http://localhost:3010/mcp",
          "type": "streamable-http"
        },
        "identifier": "@cyanheads/openalex-mcp-server",
        "runtimeHint": "npx",
        "registryType": "npm",
        "registryBaseUrl": "https://registry.npmjs.org",
        "environmentVariables": [
          {
            "name": "OPENALEX_CLAMP_PER_PAGE",
            "format": "string",
            "default": "true",
            "description": "Clamp oversized count inputs (per_page, semantic-search per_page, sample, slice.limit) to their caps with a notice. Set false to reject them instead."
          },
          {
            "name": "OPENALEX_FILTER_STRING_INPUT",
            "format": "string",
            "default": "true",
            "description": "Accept unambiguous native filter strings on search_entities. Set false to require record objects."
          },
          {
            "name": "OPENALEX_FILTER_RECORD_REPAIR",
            "format": "string",
            "default": "true",
            "description": "Accept boolean and number values, nested objects, and quoted keys in the filters record, with a notice. Set false to require string values under dotted keys."
          },
          {
            "name": "OPENALEX_SELECT_STRING_INPUT",
            "format": "string",
            "default": "true",
            "description": "Accept a comma-separated select string on search_entities and get_citation_graph, with a notice. Set false to require an array."
          },
          {
            "name": "MCP_TRANSPORT_TYPE",
            "value": "http",
            "format": "string",
            "description": "Selects the HTTP transport."
          },
          {
            "name": "OPENALEX_API_KEY",
            "format": "string",
            "description": "OpenAlex account API key, sent as api_key= - optional (free from https://openalex.org/settings/api). Without it, anonymous rate limits apply."
          },
          {
            "name": "OPENALEX_MAILTO",
            "format": "string",
            "description": "Optional email sent as mailto= to identify yourself to OpenAlex (the polite pool). Separate from the API key."
          },
          {
            "name": "OPENALEX_BASE_URL",
            "format": "string",
            "default": "https://api.openalex.org",
            "description": "OpenAlex API base URL."
          },
          {
            "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')."
          }
        ]
      }
    ],
    "repository": {
      "url": "https://github.com/cyanheads/openalex-mcp-server",
      "source": "github"
    },
    "description": "Access the OpenAlex academic research catalog — 270M+ publications."
  }
}