MCP server providing access to OpenAlex academic research database with tools for searching and retrieving information about works, authors, institutions, and sources
This server provides 7 well-structured research tools with consistent patterns. All tools are READ_ONLY and have proper Zod schemas with type definitions. Naming is clear and action-verb driven (search_*, get_*). Descriptions are present and adequate (ranging from 34-70 chars). However, there are notable gaps: (1) Output schemas are NOT documented, the code returns JSON.stringify() with no schema definition for what fields consumers should expect, (2) Parameter descriptions lack granularity, many params like 'filter' and 'sort' mention OpenAlex API syntax (e.g., 'publication_year:2023') but don't explain when to use them or their constraints, (3) Error handling is minimal, errors are caught but messages are generic ('Error: ' + string), with no guidance for recovery or retry logic, (4) No indication of maximum result limits despite mentioning 'max: 200' for per_page, no statement of what the default limit returns, (5) No pagination guidance beyond per_page parameter, unclear if more results exist or how to fetch next page. The 'verbose' boolean flag is interesting but under-documented (concise mode returns 'select' fields, but users don't see what those fields are). Overall, the tools are solid for basic research but lack the depth needed for production LLM integration.
Get detailed information about an author by ID
Get detailed information about a source by ID
Get detailed information about a specific work by ID
Search for authors
Search for institutions (universities, research institutes)
Search for sources (journals, repositories, conferences)
Search for academic works/papers
Output schemas are not documented. All tools return JSON.stringify() with no declared response schema, field types, or structure. LLMs cannot plan downstream operations or extract specific fields without reverse-engineering the API response.
Error handling is generic and provides no recovery guidance. Errors return 'OpenAlex API Error: <message>' or 'Error: <message>' with no indication of whether to retry, ask the user, or abort. LLMs cannot decide on next steps.
Parameter descriptions mention OpenAlex API syntax ('filter: publication_year:2023,is_oa:true', 'sort: cited_by_count:desc') but do not explain when to use these parameters or their format in natural language. LLMs may struggle with the API-specific string format.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 75 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
No pagination strategy documented. per_page parameter allows up to 200, but tool descriptions do not explain how to fetch the next page, whether a cursor/offset exists, or what the total count is. LLMs may assume all results are returned.
The 'verbose' flag toggles between concise and full result modes, but neither mode is documented. Concise mode returns a 'select' list of fields, but users do not know what fields are included without reading the source code.
No indication of result limits. While per_page defaults to 10 and maxes at 200, there is no statement of a hard cap on total results returned (e.g., 'returns max 1000 results'). LLMs may not realize results could be truncated.