Skip to main content
Glama
Mnehmos

arXiv MCP Server

search_by_category

Retrieve academic papers from arXiv by specifying a category, sorting options, and pagination parameters. Supports filtering by relevance, submission, or update date.

Instructions

Search for papers in a specific arXiv category

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categoryYesarXiv category (e.g., cs.AI, physics.optics)
max_resultsNoMaximum number of results to return (max 2000)
sort_byNoSort by: relevance, lastUpdatedDate, submittedDate
sort_orderNoSort order: ascending or descending
startNoStarting index for pagination (0-based)

Implementation Reference

  • The main handler function that implements the search_by_category tool logic. It constructs arXiv API search parameters using the provided category and optional pagination/sorting options, queries the arXiv API, processes the response, and returns the results.
    private async searchByCategory(args: SearchByCategoryArgs) {
      const searchParams: SearchParams = {
        search_query: `cat:${args.category}`,
      };
      
      // Add pagination
      if (args.start !== undefined) {
        searchParams.start = args.start;
      }
      
      if (args.max_results !== undefined) {
        searchParams.max_results = Math.min(args.max_results, 2000); // API limit
      } else {
        searchParams.max_results = 10; // Default
      }
      
      // Add sorting
      if (args.sort_by) {
        searchParams.sortBy = args.sort_by;
      }
      
      if (args.sort_order) {
        searchParams.sortOrder = args.sort_order;
      }
      
      const response = await this.queryArxiv(searchParams);
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify(response, null, 2),
          },
        ],
      };
    }
  • TypeScript interface defining the input arguments for the searchByCategory handler.
    interface SearchByCategoryArgs {
      category: string;
      start?: number;
      max_results?: number;
      sort_by?: string;
      sort_order?: string;
    }
  • src/index.ts:170-200 (registration)
    MCP tool registration in the ListTools response, including name, description, and JSON input schema.
      name: 'search_by_category',
      description: 'Search for papers in a specific arXiv category',
      inputSchema: {
        type: 'object',
        properties: {
          category: {
            type: 'string',
            description: 'arXiv category (e.g., cs.AI, physics.optics)',
          },
          start: {
            type: 'number',
            description: 'Starting index for pagination (0-based)',
          },
          max_results: {
            type: 'number',
            description: 'Maximum number of results to return (max 2000)',
          },
          sort_by: {
            type: 'string',
            description: 'Sort by: relevance, lastUpdatedDate, submittedDate',
            enum: ['relevance', 'lastUpdatedDate', 'submittedDate'],
          },
          sort_order: {
            type: 'string',
            description: 'Sort order: ascending or descending',
            enum: ['ascending', 'descending'],
          },
        },
        required: ['category'],
      },
    },
  • src/index.ts:231-238 (registration)
    Dispatcher case in CallToolRequest handler that validates input and invokes the searchByCategory method.
    case 'search_by_category':
      if (!request.params.arguments || typeof request.params.arguments.category !== 'string') {
        throw new McpError(
          ErrorCode.InvalidParams,
          'Missing or invalid category parameter'
        );
      }
      return await this.searchByCategory(request.params.arguments as unknown as SearchByCategoryArgs);
Install Server

Other Tools

Related Tools

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/Mnehmos/arxiv-mcp-server'

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