MCP server Streamable HTTP
Give your assistant a way to search the RemoteJobs.org catalog. Connect once, discover the tools, and find opportunities in conversation.
Free, read-only access. No API key.
{
"name": "search_jobs",
"arguments": {
"q": "react",
"category": "programming",
"limit": 5
}
}01 / Connection
In a client that supports remote MCP servers, add an HTTP server named RemoteJobs and paste this endpoint. Choose Streamable HTTP and no authentication if your client asks.
https://remotejobs.org/mcpClients use different configuration formats. This mcpServers example works in clients that accept type: "http"; consult your client’s documentation for its exact format.
{
"mcpServers": {
"remotejobs": {
"type": "http",
"url": "https://remotejobs.org/mcp"
}
}
}Use the RemoteJobs.org endpoint above. The JSON API lives at a separate URL: see the API guide.
02 / Tools
| Tool | What it returns |
|---|---|
search_jobs | Active jobs, newest first, with company details, descriptions, location, salary when recorded, listing URLs, and pagination. |
list_categories | Available category names and slugs. Takes no arguments. Use a returned slug in search_jobs. |
| Argument | Usage |
|---|---|
q | Optional keyword search. English full-text search, up to 500 characters. |
category | Optional category slug, up to 100 characters. Unknown slugs return an empty page. |
type | Optional: full-time, part-time, contract, or freelance. |
limit | Integer from 1 to 50. Defaults to 20. |
offset | Nonnegative integer. Defaults to 0. Add your page size to get the next page. |
Search results use the API response fields. They are returned as structured content and JSON text for client compatibility.
03 / First search
Try: “Use RemoteJobs to find five React roles in programming. Include company names, locations, and listing links.” Your client discovers the tools and decides which calls to make.
Review the listing before applying. Remote can still mean a specific country or time zone. Salary and location may be missing. The server provides listings and links; applications happen on the job’s application page.
Install @modelcontextprotocol/sdk in your Node.js project, then connect with its Streamable HTTP transport.
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const client = new Client({ name: "my-job-tool", version: "1.0.0" });
await client.connect(new StreamableHTTPClientTransport(
new URL("https://remotejobs.org/mcp")
));
try {
const result = await client.callTool({
name: "search_jobs",
arguments: { q: "react", category: "programming", limit: 5 }
});
if (result.isError) throw new Error(JSON.stringify(result.content));
console.log(result.structuredContent);
} finally {
await client.close();
}04 / Limits & behavior
The server supports Streamable HTTP with JSON responses. It has no persistent sessions, event stream, or application submission tools. Client and server negotiate a supported protocol version, including 2025-11-25.
Keep usage below 200 requests per hour per IP address. Rate limiting is best-effort; this is not a guaranteed quota. All MCP POST requests count, including connection and discovery. API and MCP requests are limited separately.
A failed query returns a tool error, not an empty list. HTTP 429 includes Retry-After. Stop on empty pages; listings and pagination totals can change between calls. If pagination totals are unavailable, the request returns a tool error.
MCP and API responses are not cached by their endpoints. Listings can change between requests. New or updated listings may take time to appear.
Keep listing links intact and credit RemoteJobs.org when displaying results. Our terms of service apply to both interfaces.