The Himalayas MCP server gives AI assistants real-time access to 41 tools for searching remote jobs, researching companies, checking salary benchmarks, managing profiles, tracking applications, and posting jobs. Connect in any AI platform that supports MCP servers, including Claude (Desktop, Code, Cowork), ChatGPT, Gemini, Cursor, Windsurf, VS Code, Openclaw, and Microsoft Copilot Studio. Public tools work without authentication. Authenticated tools use OAuth 2.1 with PKCE for secure access to personal and employer features.
If any of this is too technical, just copy the entire page and paste it into the AI. It will walk you through setup, and each task you would like to do.
What is the Himalayas MCP server?
The Himalayas MCP server is a Model Context Protocol endpoint at mcp.himalayas.app that connects AI assistants to the Himalayas remote jobs marketplace. It provides 41 tools organized into four categories:
- 13 public tools for job search, company research, salary data, market statistics, talent discovery, and candidate profiles - no authentication required
- 9 job seeker tools for profile management and application tracking - requires a free Himalayas account
- 19 employer tools for company profiles, perks, job posting/management, and candidate messaging - requires an employer account
- 1 public job posting tool for posting jobs without a Himalayas account
Once connected, you can ask your AI assistant questions like "Find remote Python jobs paying over $120k in Europe," "What's the average salary for a product manager?", "Save this job to my tracker," or "Post a new senior React developer role for our company."
What is the Model Context Protocol (MCP)?
The Model Context Protocol (MCP) is an open standard that lets AI assistants connect to external data sources and tools. Instead of relying only on training data, an MCP-connected assistant can query live databases, search APIs, and interact with external services in real time.
The Himalayas MCP server supports two transport protocols:
Streamable HTTP (recommended):
https://mcp.himalayas.app/mcp
Server-Sent Events (legacy fallback):
https://mcp.himalayas.app/sse
What public tools does the MCP server provide?
These tools work without authentication or an API key.
How do I search for remote jobs?
search_jobs - Search remote job listings with detailed filters.
| Parameter | Type | Description |
|---|---|---|
| keyword | string | Search term for job title, skills, or description |
| page | integer | Page number for pagination (starts at 1) |
| country | string | Filter by country name (e.g., "United States", "Germany") |
| worldwide | boolean | Show only jobs with no location restrictions |
| exclude_worldwide | boolean | Exclude worldwide jobs, show country-specific only |
| experience | string | Experience level: entry-level, mid-level, senior, manager, director, executive |
| type | string | Employment type: full-time, part-time, contractor, temporary, intern, volunteer, other |
| salary_min | integer | Minimum salary filter |
| salary_max | integer | Maximum salary filter |
| currency | string | Salary currency (USD, EUR, GBP, CAD, AUD, and 20+ others) |
| salary_required | boolean | Only show jobs that include salary information |
| markets | string | Filter by job categories/markets |
| benefits | string | Filter by company benefits |
| companies | string | Filter by specific company names |
| sort | string | Sort order: relevant, recent, salaryAsc, salaryDesc |
get_jobs - Browse the latest remote job listings with optional country/worldwide filters.
get_job_details - Fetch full details for a specific job including description, requirements, salary, screening questions, and application link. Accepts company_slug and job_slug.
get_related_jobs - Find similar jobs based on skills, location, and category. Accepts company_slug, job_slug, and page.
How do I search for remote companies?
search_companies - Search companies with remote positions.
| Parameter | Type | Description |
|---|---|---|
| keyword | string | Search term for company name, industry, or description |
| page | integer | Page number for pagination (starts at 1) |
| country | string | Filter by country name |
| worldwide | boolean | Show only companies hiring worldwide |
| benefits | string | Filter by company benefits offered |
| tech_stack | string | Filter by technologies used |
| sort | string | Sort order: relevant, recent, jobs, nameAToZ, nameZToA |
get_companies - Browse remote-friendly companies with optional country/worldwide filters.
get_company_details - Get a full company profile including about section, founding year, employee count, tech stack, benefits, open positions, and social links.
How do I get remote job salary data?
get_salary_data - Get salary benchmarks for any remote job title. Returns minimum, median, and maximum salary in USD. Optionally filter by seniority level and country. Uses fuzzy matching on job titles.
| Parameter | Type | Description |
|---|---|---|
| job_title | string | The job title to look up (required) |
| seniority | string | Seniority level filter (optional) |
| country | string | Country filter (optional) |
How do I get remote work market statistics?
get_remote_work_statistics - Get the top 30 entries for remote work statistics across four dimensions.
| Parameter | Type | Description |
|---|---|---|
| record | string | What to count: "jobs" or "companies" |
| type | string | Dimension: "skills", "categories", "countries", or "industries" |
| country | string | Optional country filter |
How do I search for remote talent?
search_talent - Search remote candidates on Himalayas. Returns candidate profiles with current roles, salary expectations, and search status. Public access, no authentication required.
| Parameter | Type | Description |
|---|---|---|
| keyword | string | Search term for skills, roles, or technologies |
| country | string | Filter by country |
| page | integer | Page number for pagination |
| sort | string | Sort order |
get_talent_profile - Get the full detailed profile for a candidate including bio, complete work history, education, tech stack, social links, and career goals. Use the talent_slug from search_talent results.
| Parameter | Type | Description |
|---|---|---|
| talent_slug | string | Talent slug from search_talent results (e.g., "john-doe") |
For a complete walkthrough of hiring with AI — posting jobs, sourcing candidates, benchmarking salaries — see How to Hire Remote Talent with AI.
Other public tools
get_correct_country_name - Fuzzy-match a country name string to the correct format for filtering. Use this when the country name might be abbreviated or misspelled.
check_job_payment_status - Check the Stripe payment status for a job posting by session ID. Returns payment status, customer email, and job URL.
What authenticated tools are available for job seekers?
These tools require a free Himalayas account. On first use, your AI assistant will prompt you to log in through a secure OAuth flow.
How do I manage my profile through AI?
get_my_profile - View your complete Himalayas profile including name, email, location, career search status, work experience, education, and tech stack.
update_profile - Update your career and personal profile information.
| Parameter | Type | Description |
|---|---|---|
| bio | string | Short bio |
| intro | string | Introduction text |
| location | string | Your location |
| career_search_status | string | "actively_searching", "open_to_roles", or "closed_to_roles" |
| career_primary_role | string | Primary role you're looking for |
| career_base_salary | integer | Minimum salary expectation |
| career_max_salary | integer | Maximum salary expectation |
| career_description | string | What you're looking for in your next role |
add_experience - Add work experience to your profile with title, company, employment type, description, dates, and skills.
add_education - Add an education entry with school, degree, field of study, years, and description.
update_tech_stack - Set up to 5 technologies on your profile (e.g., React, Python, TypeScript). The server automatically matches common technology names.
How does the job application tracker work?
The application tracker is a kanban-style board for managing your job search pipeline.
save_job - Save a job to your tracker.
| Parameter | Type | Description |
|---|---|---|
| title | string | Job title |
| company_name | string | Company name |
| status | string | Pipeline stage: seen, saved, applied, interviewing, negotiation, hired, archived |
| base_salary | integer | Offered base salary |
| max_salary | integer | Offered max salary |
| currency | string | Salary currency |
| excitement | integer | Your excitement level (0-5) |
| notes | string | Personal notes |
| app_link | string | External application URL |
| himalayas_link | string | Himalayas job listing URL |
get_saved_jobs - View all saved jobs grouped by status. Returns a formatted kanban-style list.
update_job_status - Update a saved job's status, excitement level, or notes. Use this to move jobs through your pipeline (e.g., saved → applied → interviewing).
remove_saved_job - Remove a job from your application tracker.
What authenticated tools are available for employers?
These tools require an employer account (a Himalayas account associated with a company).
How do I manage my company profile through AI?
get_company_profile - View your company's Himalayas profile including name, summary, about section, CEO, employee range, founding year, locations, social links, and open position count.
update_company_profile - Update company profile information including about section, summary, CEO name, employee range, founding year, locations, and social media links (Twitter, Facebook, LinkedIn, Instagram).
update_company_tech_stack - Update the technologies your company uses. Accepts technology names (e.g., "React", "Python", "PostgreSQL") and automatically resolves them to the Himalayas technology database via fuzzy matching.
How do I manage company perks and benefits?
get_company_perks - View your company's perks grouped by category.
add_company_perk - Add a perk or benefit to your company profile.
| Parameter | Type | Description |
|---|---|---|
| title | string | Perk name (3-50 characters) |
| category | string | One of the 30 benefit categories: Healthcare benefits, Retirement benefits, Paid parental leave, Equity benefits, Location independent salary, Profit sharing, 4-day workweeks, Generous vacation, Paid vacation, Sabbaticals, Unlimited time off, Company meals, Wellness benefits, Home office budget, Co-working space budget, Commuter benefits, Pet-friendly office, Learning and development budget, Company events, Volunteer opportunities, Open source, Company credit card, Life insurance, Employee assistance program (EAP), Flexible working hours, Disability insurance, Fertility benefits, Company retreats, Get paid in crypto, Miscellaneous |
| description | string | Perk description (15-450 characters) |
remove_company_perk - Remove a perk from your company profile by ID.
How do I post and manage remote jobs through AI?
create_company_job - Post a new remote job on Himalayas.
| Parameter | Type | Description |
|---|---|---|
| title | string | Job title (5-80 characters) |
| description | string | Full job description (350+ characters, HTML supported) |
| employment_type | string | Full Time, Part Time, Contractor, Temporary, Intern, Volunteer, Other |
| seniority | string[] | Entry-level, Mid-level, Senior, Manager, Director, Executive |
| app_link_or_email | string | Application URL or email address |
| valid_through | string | Expiration date |
| base_salary | integer | Base salary |
| max_salary | integer | Maximum salary |
| salary_country | string | Country for salary context |
| category_list | string | Job categories (comma-separated) |
| skill_list | string | Required skills (comma-separated) |
| draft | boolean | Save as draft (true) or submit for review (false) |
| screening_questions | array | Optional screening questions (boolean, text, or multiple choice types) |
Jobs are free to post and require admin approval. Optional paid extras are available:
- Sticky placement ($199): Pin the job to the top of search results
- Newsletter feature ($99): Include the job in the weekly email to subscribers
update_company_job - Update an existing job posting. Supports partial updates.
delete_company_job - Permanently delete a job posting.
list_company_jobs - List all your company's job postings with status, view count, click count, and expiration date.
show_company_job - Get full details of a specific job posting.
purchase_job_extras - Add paid extras (sticky, newsletter) to an existing job posting. Returns a Stripe checkout URL for payment.
How do I post a job without a Himalayas account?
post_job_public - Post a remote job without creating a Himalayas account. Provide your email, company name, company URL, and job details. The email domain must match the company URL domain. Payment is required via Stripe checkout.
How do I message candidates through AI?
These tools let employers start conversations with candidates and manage recruiting communications — all through AI conversation.
start_conversation - Start a conversation with a candidate by their talent slug. Optionally include an initial message. If a conversation already exists, returns it.
| Parameter | Type | Description |
|---|---|---|
| talent_slug | string | Candidate's talent slug from search_talent (required) |
| message | string | Optional initial message to send |
send_message - Send a message in an existing conversation. Rate limit: 10 messages per minute.
| Parameter | Type | Description |
|---|---|---|
| message | string | Message text (required) |
| room_name | string | Conversation room name (optional) |
| talent_slug | string | Candidate's talent slug (optional) |
list_conversations - List all messaging conversations with last message preview and status (awaiting reply, new reply, read). No parameters required.
get_conversation - Get the full message history for a conversation. Provide either room_name or talent_slug.
| Parameter | Type | Description |
|---|---|---|
| room_name | string | Conversation room name (optional) |
| talent_slug | string | Candidate's talent slug (optional) |
mark_message_read - Mark a message as read by its ID.
| Parameter | Type | Description |
|---|---|---|
| message_id | number | Message ID (required) |
| room_name | string | Conversation room name (optional) |
| talent_slug | string | Candidate's talent slug (optional) |
delete_conversation - Delete a conversation. Provide either room_name or talent_slug.
| Parameter | Type | Description |
|---|---|---|
| room_name | string | Conversation room name (optional) |
| talent_slug | string | Candidate's talent slug (optional) |
For the complete recruiting workflow — sourcing, evaluating profiles, outreach, and follow-up — see How to Hire Remote Talent with AI.
How do I connect the MCP to Claude Desktop?
Go to Settings → Connectors → Add custom connector and paste:
https://mcp.himalayas.app/mcp
Public tools work immediately. For authenticated tools (profile, tracker, employer features), you'll be prompted to log in on first use.
How do I connect the MCP to Cursor?
There are two ways to add the Himalayas MCP to Cursor:
One-click install: Click the install button on the Himalayas MCP page.
Manual setup: Add to ~/.cursor/mcp.json (or .cursor/mcp.json in your project):
{
"mcpServers": {
"himalayas": {
"url": "https://mcp.himalayas.app/mcp"
}
}
}
How do I connect the MCP to Windsurf?
Add the following to your Windsurf MCP configuration file at ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"himalayas": {
"serverUrl": "https://mcp.himalayas.app/mcp"
}
}
}
Restart Windsurf after saving the configuration.
How does authentication work?
The Himalayas MCP uses OAuth 2.1 with PKCE for secure authentication. Here's how it works:
- Public tools work immediately without any login or API key
- When you call an authenticated tool for the first time, the MCP server returns a message asking you to connect your Himalayas account
- Your AI assistant opens a secure login page in your browser
- You log in with your Himalayas credentials (or create a free account)
- The MCP server receives a secure token and your session is established
- Tokens refresh automatically - you stay connected without re-authenticating
Employer tools require that your Himalayas account is associated with a company. If you're not linked to a company, you'll see a message explaining how to set one up.
What job data fields does the MCP return?
Job search results include these fields:
| Field | Description |
|---|---|
| title | Job title |
| excerpt | Short summary |
| companyName | Hiring company name |
| companyLogo | Company logo URL |
| employmentType | Full Time, Part Time, Contractor, Temporary, Intern, Volunteer, Other |
| minSalary / maxSalary | Salary range (if provided) |
| seniority | Experience level |
| currency | Salary currency |
| locationRestrictions | Required countries |
| timezoneRestrictions | Accepted timezones |
| categories | Job categories and skills |
| description | Full job description (HTML) |
| pubDate | Publication date |
| expiryDate | Expiration date |
| applicationLink | Application URL |
For detailed job views (via get_job_details), additional fields include screening questions, required skills, and the full company profile.
How do I map natural language to MCP tool calls?
| User says | MCP tool | Parameters |
|---|---|---|
| "Find Python jobs" | search_jobs | { keyword: "python" } |
| "Remote jobs in Canada" | search_jobs | { country: "Canada" } |
| "Worldwide remote jobs" | search_jobs | { worldwide: true } |
| "Senior React roles paying over $150k" | search_jobs | { keyword: "react", experience: "senior", salary_min: 150000 } |
| "Part-time contractor positions" | search_jobs | { type: "contractor" } |
| "Companies using TypeScript" | search_companies | { tech_stack: "TypeScript" } |
| "What's the average salary for a product manager?" | get_salary_data | { job_title: "product manager" } |
| "Remote work statistics for the US" | get_remote_work_statistics | { record: "jobs", type: "categories", country: "United States" } |
| "Find React developers in Canada" | search_talent | { keyword: "react", country: "Canada" } |
| "Show me this candidate's full profile" | get_talent_profile | { talent_slug: "jane-doe" } |
| "Tell me about Stripe" | get_company_details | { slug: "stripe" } |
| "Save this job to my tracker" | save_job | { title: "...", company_name: "...", status: "saved" } |
| "Move that job to interviewing" | update_job_status | { id: "...", status: "interviewing" } |
| "Update my profile to actively searching" | update_profile | { career_search_status: "actively_searching" } |
| "Post a remote React developer job, $120-160k" | create_company_job | { title: "React Developer", base_salary: 120000, max_salary: 160000, ... } |
| "Message this candidate about our React role" | start_conversation | { talent_slug: "jane-doe", message: "Hi, we have a..." } |
| "Show my candidate conversations" | list_conversations | {} |
| "Reply to the candidate" | send_message | { talent_slug: "jane-doe", message: "Thanks for..." } |
How should an AI agent use the Himalayas MCP?
If you are building or configuring an AI agent, include these system instructions:
You have access to the Himalayas MCP server for remote jobs, career management, and employer tools. Public tools (no auth required): - search_jobs: Search remote jobs with filters for keyword, country, experience, type, salary, benefits, markets, companies, and sort order. - get_jobs: Browse latest remote job listings. - search_companies: Search companies by keyword, country, benefits, tech stack. - get_companies: Browse remote-friendly companies. - get_job_details: Full job description by company_slug and job_slug. - get_company_details: Full company profile by slug. - get_related_jobs: Similar jobs by skills, location, category. - get_salary_data: Salary benchmarks by role, seniority, country (min/median/max USD). - get_remote_work_statistics: Top skills, categories, countries, industries by job/company count. - search_talent: Search remote candidates by keyword and country. - get_talent_profile: Full candidate profile with bio, work history, education, tech stack, social links. Uses talent_slug from search_talent. - get_correct_country_name: Fuzzy-match country names for filters. - check_job_payment_status: Check Stripe payment status by session ID. Authenticated tools (job seekers - requires Himalayas account): - get_my_profile, update_profile, add_experience, add_education, update_tech_stack: Profile management. - save_job, get_saved_jobs, update_job_status, remove_saved_job: Job application tracker. Authenticated tools (employers - requires company account): - get_company_profile, update_company_profile, update_company_tech_stack: Company profile. - get_company_perks, add_company_perk, remove_company_perk: Perks management. - create_company_job, update_company_job, delete_company_job, list_company_jobs, show_company_job: Job management. - purchase_job_extras: Buy sticky ($199) or newsletter ($99) placement. - list_conversations, get_conversation, start_conversation, send_message, mark_message_read, delete_conversation: Candidate messaging. Public job posting (no account): - post_job_public: Post a job with email and company details. Returns Stripe checkout URL. Tips: - Start broad, then narrow. Search with just a keyword first, then add filters. - Country names should be full English names (e.g., "United States", not "US"). Use get_correct_country_name if unsure. - Each job result includes an applicationLink - provide this so users can apply. - For salary queries, use get_salary_data rather than guessing from job listings. - For valid field values (employment types, seniority levels, currencies, benefit categories), reference: https://himalayas.app/docs/data-dictionary
What does an example tool call flow look like?
User: "Find me senior data science jobs in the US paying at least $150k, then check what the average salary is"
Agent calls:
search_jobs({ "keyword": "data science", "country": "United States", "experience": "senior", "salary_min": 150000 })
MCP returns: An array of matching job objects with title, company, salary, description, and applicationLink.
Agent then calls:
get_salary_data({ "job_title": "data scientist", "seniority": "senior", "country": "United States" })
MCP returns: { min: 125000, median: 165000, max: 220000 } in USD.
Agent responds: Summarizes the job results, compares them against the salary benchmark, and provides application links.
How does an AI agent handle empty results?
When no results match the query, the MCP server returns an empty results array. The agent should:
- Broaden the keyword: Try a more general term (e.g., "engineer" instead of "senior staff platform engineer")
- Remove the country filter: The job may be available worldwide but not restricted to the specified country
- Try worldwide: Set
worldwide: trueto find jobs open to all locations - Adjust salary filters: The salary range may be too narrow for the market
- Check pagination: If previous pages had results, the user may have reached the end
- Use
get_correct_country_name: The country name may not match the expected format
Is there a rate limit?
Yes, the MCP server has built-in rate limiting. The rate limit is generous for typical use - individual users searching for jobs and managing their profiles will not hit it. If you are building an automated tool that makes many requests, contact hi@himalayas.app to discuss your use case.
What are the attribution requirements?
If you build an application or tool that uses the Himalayas MCP server, include a mention of Himalayas as the data source and link back to himalayas.app where the data is displayed.
What is the difference between the MCP, JSON API, and RSS feed?
Himalayas offers three ways to access job data programmatically:
| Feature | MCP Server | JSON API | RSS Feed |
|---|---|---|---|
| Best for | AI assistants, chatbots, IDE integrations | Apps, dashboards, databases | Feed readers, monitoring |
| Tools | 41 tools (search, details, salary, profiles, tracking, employer, messaging) | Single endpoint, all jobs | Single feed, recent jobs |
| Data scope | Jobs, companies, salary, statistics, talent, profiles | Jobs only | Jobs only |
| Authentication | Optional OAuth 2.1 for profile/employer features | None | None |
| Format | MCP protocol (JSON over HTTP/SSE) | JSON | Atom/XML |
| Real-time | Yes | Updated every 24 hours | Updated every 24 hours |
For the JSON API, see Remote Jobs API. For the RSS feed, see Remote Jobs RSS Feed.
Where can I get help?
For MCP setup questions or integration support, email hi@himalayas.app.
For more documentation:
- Hire with AI - Post jobs, search candidates, and benchmark salaries through AI conversation
- AI Agents hub - Overview of all three integration methods and when to use each
- Data Dictionary - Every field, enum value, and taxonomy
- How Remote Jobs Work on Himalayas - Platform overview
- Posting a Remote Job - Guide for employers
- Job Application Tracker - Guide for job seekers using the kanban tracker
- How to Post Jobs Using AI - Walkthrough of AI-powered job posting methods
- Free Alternative to LinkedIn Recruiter - How Himalayas talent search compares to LinkedIn Recruiter