Skip to main content
Glama
Ritesh-sudo
by Ritesh-sudo

search_specific_job_site

Search for AI/ML internships and entry-level positions on LinkedIn, Indeed, Glassdoor, ZipRecruiter, or Monster. Filter results by location and Python proficiency to find relevant job opportunities with application URLs.

Instructions

Search for jobs on a specific job site

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
siteYesJob site to search
locationNoJob locationRemote
maxResultsNoMaximum number of results to return

Implementation Reference

  • The handler function for the 'search_specific_job_site' tool. It parses arguments, builds a JobFilter for AI/ML entry-level jobs requiring Python, calls jobSearchService.searchSite, and returns the results as a JSON string in the MCP response format.
    private async searchSpecificJobSite(args: any) { const { site, location = 'Remote', maxResults = 25 } = args; const filter: JobFilter = { location, maxResults, includeInternships: true, includeFullTime: true, keywords: [], experienceLevel: 'entry', requiredSkills: ['python'], jobTypes: ['ai', 'ml', 'machine learning', 'artificial intelligence', 'data science'] }; const results = await this.jobSearchService.searchSite(site, filter); return { content: [ { type: 'text', text: JSON.stringify(results, null, 2) } ] }; }
  • Input schema defining parameters for the tool: site (required, enum of job sites), location, maxResults.
    inputSchema: { type: 'object', properties: { site: { type: 'string', enum: ['linkedin', 'indeed', 'glassdoor', 'ziprecruiter', 'monster'], description: 'Job site to search' }, location: { type: 'string', description: 'Job location', default: 'Remote' }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 25 } }, required: ['site'] }
  • src/index.ts:107-110 (registration)
    Registration in the tool dispatch switch statement within the CallToolRequestSchema handler.
    case 'search_ai_ml_jobs': return await this.searchAIMLJobs(args); case 'search_specific_job_site': return await this.searchSpecificJobSite(args);
  • src/index.ts:73-97 (registration)
    Tool registration in the ListToolsRequestSchema response, including name, description, and input schema.
    { name: 'search_specific_job_site', description: 'Search for jobs on a specific job site', inputSchema: { type: 'object', properties: { site: { type: 'string', enum: ['linkedin', 'indeed', 'glassdoor', 'ziprecruiter', 'monster'], description: 'Job site to search' }, location: { type: 'string', description: 'Job location', default: 'Remote' }, maxResults: { type: 'number', description: 'Maximum number of results to return', default: 25 } }, required: ['site'] } }
  • Core helper method called by the handler. Retrieves the site-specific scraper, calls its search method with the filter, applies post-search filtering, and returns structured results or error.
    async searchSite(site: string, filter: JobFilter): Promise<JobSearchResult> { const startTime = Date.now(); const scraper = this.scrapers.get(site.toLowerCase()); if (!scraper) { throw new Error(`Unsupported job site: ${site}`); } try { const jobs = await scraper.search(filter); const filteredJobs = this.filterJobs(jobs, filter); return { site, jobs: filteredJobs, totalFound: filteredJobs.length, searchTime: Date.now() - startTime }; } catch (error) { return { site, jobs: [], totalFound: 0, searchTime: Date.now() - startTime, error: error instanceof Error ? error.message : 'Unknown error' }; } }

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/Ritesh-sudo/MCPJobSearch'

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