Skip to main content
Glama
reetp14

OpenAlex MCP Server

by reetp14

search_publishers

Find scholarly publishers in OpenAlex using full-text search, filters, and sorting to identify academic publishing sources for research.

Instructions

Search publishers

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchNoFull-text search query
filterNoKey:value OpenAlex filters. Supports entity attributes (e.g., 'country_codes', 'hierarchy_level'), IDs, and convenience filters (e.g., 'display_name.search'). Example: 'country_codes:US,hierarchy_level:0'
sortNoSort field with optional :desc
pageNoPage number
per_pageNoResults per page (max 200)
cursorNoCursor for deep pagination
group_byNoGroup results by field
selectNoFields to return
sampleNoRandom sample size
seedNoRandom seed
mailtoNoEmail for rate limits
api_keyNoPremium API key

Implementation Reference

  • The core handler function that executes the 'search_publishers' tool by making an OpenAlex API request to the /publishers endpoint and formatting the JSON response as MCP content.
    export async function searchPublishers(args: any) {
        return {
            content: [{
                    type: "text",
                    text: JSON.stringify(await makeOpenAlexRequest("/publishers", args), null, 2)
                }]
        };
    }
  • The input schema definition for the 'search_publishers' tool, defining parameters like search, filter, sort, pagination, etc., as registered in the ListTools response.
    {
        name: "search_publishers",
        description: "Search publishers",
        inputSchema: {
            type: "object",
            properties: {
                search: { type: "string", description: "Full-text search query" },
                filter: { type: "string", description: "Key:value OpenAlex filters. Supports entity attributes (e.g., 'country_codes', 'hierarchy_level'), IDs, and convenience filters (e.g., 'display_name.search'). Example: 'country_codes:US,hierarchy_level:0'" },
                sort: { type: "string", description: "Sort field with optional :desc" },
                page: { type: "number", description: "Page number" },
                per_page: { type: "number", description: "Results per page (max 200)" },
                cursor: { type: "string", description: "Cursor for deep pagination" },
                group_by: { type: "string", description: "Group results by field" },
                select: { type: "string", description: "Fields to return" },
                sample: { type: "number", description: "Random sample size" },
                seed: { type: "number", description: "Random seed" },
                mailto: { type: "string", description: "Email for rate limits" },
                api_key: { type: "string", description: "Premium API key" }
            }
        }
    },
  • src/index.ts:291-292 (registration)
    The registration/dispatch case in the main tool handler switch statement that routes calls to the searchPublishers function.
    case "search_publishers":
        return await searchPublishers(args);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/reetp14/openalex-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server