← Back to search

io.github.cyanheads/openalex-mcp-server

cyanheads streamable_http Scanned 23d ago

Access the OpenAlex academic research catalog - 270M+ publications via MCP. STDIO & HTTP.

? Not scanned yet

Versions

0.2.7latest
first seen Jun 5, 2026
0.6.9
first seen May 19, 2026

Tools 5

openalex_resolve_name
annotations: verified low

Resolve a name or an identifier to an OpenAlex ID. ALWAYS use this before filtering by entity — names are ambiguous, IDs are not. A name returns up to 10 autocomplete matches with disambiguation hints. An identifier — OpenAlex ID, DOI, ORCID, ROR, PMID, or ISSN, bare or in URL form — resolves directly to the one record it addresses, and needs no entity_type. A PMCID is recognized as well, bare or as a PubMed Central URL, but OpenAlex indexes no PMCIDs, so it resolves nothing — pass the work's PMID or DOI instead.

readOnlyHint true openWorldHint true idempotentHint true
openalex_analyze_trends
annotations: verified low

Aggregate OpenAlex entities into groups and count them. Use for trend analysis (group works by publication_year), distribution analysis (group by oa_status, type, country), and comparative analysis (group by institution or topic). Combine with filters to scope the analysis. Returns up to 200 groups per page — use cursor pagination for fields with many distinct values.

readOnlyHint true openWorldHint true idempotentHint true
openalex_get_citation_graph
annotations: verified low

Walk the citation graph one hop from a seed work. Direction picks the edge: incoming citations (`cites`), the seed's own references (`cited_by`), or OpenAlex's algorithmically-related works (`related_to`). Note: `direction` follows OpenAlex's filter convention, which inverts the common English reading — `cites` returns works that cite the seed; `cited_by` returns works the seed cites. Results use the works schema; combine with filters/sort to narrow further.

readOnlyHint true openWorldHint true idempotentHint true
openalex_describe_fields
annotations: verified low

List valid field names for an OpenAlex entity type and context (filter, group_by, or select). Use proactively before constructing a filter or group_by to avoid invalid-field 400 errors. Pass `query` to rank the list by name similarity — useful when you have a partial or guessed field name. Ranking never drops a field: the full list comes back either way.

input object total number output object context string entity_type string
readOnlyHint true idempotentHint true
openalex_search_entities
annotations: verified low

Search, filter, sort, or retrieve by ID. Covers all OpenAlex entity types (works, authors, sources, institutions, topics, keywords, publishers, funders). Pass `id` to retrieve a single entity. Otherwise, use `query` and/or `filters` for discovery. Supports keyword search with boolean operators, exact phrase matching, and AI semantic search. Use openalex_resolve_name to resolve names to IDs before filtering. Searches and ID lookups return a curated set of fields by default; pass `select` to override with specific fields, or `["*"]` for the full record.

readOnlyHint true openWorldHint true idempotentHint true

Permissions 3

network medium
Server uses network capabilities via: fetch()
shell high
Server uses shell capabilities via: child_process, spawn(), spawnSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 22

info
Tool 'openalex_resolve_name' annotations are consistent annotation_checker · 80%
info
Tool 'openalex_analyze_trends' annotations are consistent annotation_checker · 80%
info
Tool 'openalex_get_citation_graph' annotations are consistent annotation_checker · 80%
info
Tool 'openalex_describe_fields' annotations are consistent annotation_checker · 80%
info
Tool 'openalex_search_entities' annotations are consistent annotation_checker · 80%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
package.json metadata manifest_parser · 100%
info
Tool: openalex_resolve_name manifest_parser · 75%
info
Tool: openalex_analyze_trends manifest_parser · 75%
info
Tool: openalex_get_citation_graph manifest_parser · 75%
info
Tool: openalex_describe_fields manifest_parser · 75%
info
Tool: openalex_search_entities manifest_parser · 75%
info
Required env vars (4) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Tool poisoning in 'openalex_resolve_name': Directive language: 'always' poisoning · 85%
info
SBOM generated: 11 components sbom_generator · 100%
high
Generic API Key Assignment found in cyanheads-openalex-mcp-server-0e276c7/src/index.ts secret_scanner · 75%
high
Hardcoded Password found in cyanheads-openalex-mcp-server-0e276c7/framework-skills/api-utils/references/security.md secret_scanner · 65%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%