{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.cyanheads/openalex-mcp-server","description":"Access the OpenAlex academic research catalog — 270M+ publications.","repository":{"url":"https://github.com/cyanheads/openalex-mcp-server","source":"github"},"version":"0.10.0","packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@cyanheads/openalex-mcp-server","version":"0.10.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Clamp oversized per_page values with a notice. Set false to restore rejecting maxima.","format":"string","default":"true","name":"OPENALEX_CLAMP_PER_PAGE"},{"description":"Accept unambiguous native filter strings on search_entities. Set false to require record objects.","format":"string","default":"true","name":"OPENALEX_FILTER_STRING_INPUT"},{"description":"OpenAlex account API key, sent as api_key= - optional (free from https://openalex.org/settings/api). Without it, anonymous rate limits apply.","format":"string","name":"OPENALEX_API_KEY"},{"description":"Optional email sent as mailto= to identify yourself to OpenAlex (the polite pool). Separate from the API key.","format":"string","name":"OPENALEX_MAILTO"},{"description":"OpenAlex API base URL.","format":"string","default":"https://api.openalex.org","name":"OPENALEX_BASE_URL"},{"description":"Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').","format":"string","default":"info","name":"MCP_LOG_LEVEL"}]},{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@cyanheads/openalex-mcp-server","version":"0.10.0","runtimeHint":"npx","transport":{"type":"streamable-http","url":"http://localhost:3010/mcp"},"environmentVariables":[{"description":"Clamp oversized per_page values with a notice. Set false to restore rejecting maxima.","format":"string","default":"true","name":"OPENALEX_CLAMP_PER_PAGE"},{"description":"Accept unambiguous native filter strings on search_entities. Set false to require record objects.","format":"string","default":"true","name":"OPENALEX_FILTER_STRING_INPUT"},{"description":"Selects the HTTP transport.","format":"string","value":"http","name":"MCP_TRANSPORT_TYPE"},{"description":"OpenAlex account API key, sent as api_key= - optional (free from https://openalex.org/settings/api). Without it, anonymous rate limits apply.","format":"string","name":"OPENALEX_API_KEY"},{"description":"Optional email sent as mailto= to identify yourself to OpenAlex (the polite pool). Separate from the API key.","format":"string","name":"OPENALEX_MAILTO"},{"description":"OpenAlex API base URL.","format":"string","default":"https://api.openalex.org","name":"OPENALEX_BASE_URL"},{"description":"The hostname for the HTTP server.","format":"string","default":"127.0.0.1","name":"MCP_HTTP_HOST"},{"description":"The port to run the HTTP server on.","format":"string","default":"3010","name":"MCP_HTTP_PORT"},{"description":"The endpoint path for the MCP server.","format":"string","default":"/mcp","name":"MCP_HTTP_ENDPOINT_PATH"},{"description":"Authentication mode to use: 'none', 'jwt', or 'oauth'.","format":"string","default":"none","name":"MCP_AUTH_MODE"},{"description":"Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').","format":"string","default":"info","name":"MCP_LOG_LEVEL"}]}],"remotes":[{"type":"streamable-http","url":"https://openalex.caseyjhand.com/mcp"}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-10-23T07:22:43.509505Z","publishedAt":"2026-10-23T07:22:43.509505Z","updatedAt":"2026-10-23T07:22:43.509505Z","isLatest":true}}}
