import z from 'zod';
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { ScraperAPIParams, ScrapingMCPParams } from 'types';
import { ScraperApiClient } from 'clients/scraper-api-client';
import { SCRAPER_API_TARGETS } from '../constants';
export class RedditSubredditTool {
static register = ({
server,
sapiClient,
}: {
server: McpServer;
sapiClient: ScraperApiClient;
}) => {
server.registerTool(
'reddit_subreddit',
{
description: 'Scrape Reddit subreddit results with automatic parsing',
inputSchema: {
url: z.string().describe('URL to subreddit'),
},
},
async (scrapingParams: ScrapingMCPParams) => {
const params = {
...scrapingParams,
target: SCRAPER_API_TARGETS.REDDIT_SUBREDDIT,
} satisfies ScraperAPIParams;
const { data } = await sapiClient.scrape<object>({ scrapingParams: params });
const text = JSON.stringify(data, null, 2);
return {
content: [
{
type: 'text',
text,
},
],
};
}
);
};
}