Skip to main content
Glama
angheljf

NYTimes Article Search MCP Server

search_articles

Search for New York Times articles published within the last 30 days using a specific keyword to find relevant content quickly.

Instructions

Search NYTimes articles from the last 30 days based on a keyword

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keywordYesKeyword to search for in articles

Implementation Reference

  • Executes the search_articles tool: validates input, queries NYTimes API for recent articles matching the keyword, maps response to simplified format, returns as JSON text content.
    async (request) => {
      if (request.params.name !== "search_articles") {
        throw new McpError(
          ErrorCode.MethodNotFound,
          `Unknown tool: ${request.params.name}`
        );
      }
    
      if (!isValidSearchArticlesArgs(request.params.arguments)) {
        throw new McpError(
          ErrorCode.InvalidParams,
          "Invalid search arguments"
        );
      }
    
      const keyword = request.params.arguments.keyword;
    
      try {
        const response = await this.axiosInstance.get<NYTimesApiResponse>(API_CONFIG.ENDPOINT, {
          params: {
            q: keyword,
            sort: 'newest',
            'begin_date': this.getDateString(30),  // 30 days ago
            'end_date': this.getDateString(0)  // today
          }
        });
    
        const articles: ArticleSearchResult[] = response.data.response.docs.map(article => ({
          title: article.headline.main,
          abstract: article.abstract,
          url: article.web_url,
          publishedDate: article.pub_date,
          author: article.byline.original || 'Unknown'
        }));
    
        return {
          content: [{
            type: "text",
            text: JSON.stringify(articles, null, 2)
          }]
        };
      } catch (error) {
        if (axios.isAxiosError(error)) {
          return {
            content: [{
              type: "text",
              text: `NYTimes API error: ${error.response?.data.message ?? error.message}`
            }],
            isError: true,
          }
        }
        throw error;
      }
    }
  • src/index.ts:94-112 (registration)
    Registers the 'search_articles' tool in the MCP ListToolsRequestSchema response, including name, description, and input schema.
    this.server.setRequestHandler(
      ListToolsRequestSchema,
      async () => ({
        tools: [{
          name: "search_articles",
          description: "Search NYTimes articles from the last 30 days based on a keyword",
          inputSchema: {
            type: "object",
            properties: {
              keyword: {
                type: "string",
                description: "Keyword to search for in articles"
              }
            },
            required: ["keyword"]
          }
        }]
      })
    );
  • TypeScript interface defining the input arguments for search_articles tool.
    export interface SearchArticlesArgs {
      keyword: string;
    }
  • Type guard function to validate search_articles arguments before execution.
    export function isValidSearchArticlesArgs(args: any): args is SearchArticlesArgs {
      return (
        typeof args === "object" &&
        args !== null &&
        "keyword" in args &&
        typeof args.keyword === "string"
      );
    }
  • Helper function to format date for NYTimes API query (days ago).
    private getDateString(daysAgo: number): string {
      const date = new Date();
      date.setDate(date.getDate() - daysAgo);
      return date.toISOString().split('T')[0].replace(/-/g, '');
    }

Tool Definition Quality

Score is being calculated. Check back soon.

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/angheljf/nyt'

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