Skip to main content
Glama

Web3 Jobs MCP Server

An MCP server that provides AI agents with real-time access to curated Web3 jobs from web3.career, enabling intelligent job discovery and career insights.

GitHub License Python Version Status

Features

  • Job Query Tool: Filter Web3 jobs by:

    • Remote status (remote=True for remote-only jobs)

    • Country (e.g., "United States", case-insensitive)

    • Job tag (e.g., "react", "blockchain", case-insensitive)

    • Limit (1–100 jobs, default 50)

  • Markdown Output: Returns job listings as a formatted Markdown list with:

    • Job ID, Title, Company, Location, Remote status

    • Published At (from date_epoch, formatted as YYYY-MM-DD)

    • Apply URL (clickable link to web3.career)

    • Description (plain text, truncated to 100 characters)

  • Search Prompt: Generates user-friendly job search queries based on role and optional location.

Related MCP server: thegraph-mcp

Prerequisites

Installation

  1. Clone the Repository:

    git clone https://github.com/kukapay/web3-jobs-mcp.git
    cd web3-jobs-mcp
  2. Install Dependencies: Using uv:

    uv sync

    Alternatively, with pip:

    pip install mcp[cli] python-dotenv
  3. Installing to Claude Desktop:

    Install the server as a Claude Desktop application:

    uv run mcp install cli.py --name "Web3 Jobs"

    Configuration file as a reference:

    {
       "mcpServers": {
           "Web3 Jobs": {
               "command": "uv",
               "args": [ "--directory", "/path/to/web3-jobs-mcp", "run", "main.py" ],
               "env": { "WEB3_CAREER_API_TOKEN", "your-api-token" },  
           }
       }
    }

    Replace /path/to/web3-jobs-mcp with your actual installation path, and your-api-token with your web3.career API token.

Usage

Running the Server

Start the server in development mode with the MCP Inspector:

uv run mcp dev main.py

This opens a web interface for testing tools and prompts.

Alternatively, run directly:

uv run main.py

Using the query_jobs Tool

In the MCP Inspector or a compatible client (e.g., Claude Desktop), call the query_jobs tool:

  • Example 1: Get 5 remote blockchain jobs:

    query_jobs(remote=True, tag="blockchain", limit=5)
  • Example 2: Get 10 jobs in the United States:

    query_jobs(country="United States", limit=10)

Sample Output:

# Web3 Job Listings

- **Job ID**: 103945
  - **Title**: Applied Crypto-Economics & Mechanism Design
  - **Company**: Subzero Labs
  - **Location**: Remote Remote Remote
  - **Remote**: Yes
  - **Published At**: 2025-06-01
  - **Apply URL**: [Apply](https://web3.career/r/1QTOzATM__UVWHaa)
  - **Description**: About Rialo We are a pioneering force in the decentralized finance (DeFi) space...

- **Job ID**: 103944
  - **Title**: Blockchain Engineer
  - **Company**: CryptoTech
  - **Location**: Remote
  - **Remote**: Yes
  - **Published At**: 2025-05-31
  - **Description**: Join our team to build cutting-edge blockchain solutions for global clients...
  - **Apply URL**: [Apply](https://web3.career/r/2XYZabc123)

*Source: web3.career*

Using the search_jobs_prompt

Generate a search prompt for a specific role and location:

/search_jobs_prompt role="blockchain developer" location="remote"

This returns a prompt like:

Find Web3 jobs for a blockchain developer role in remote. Provide job titles, companies, locations, and application links from web3.career.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Available Tools

1 tool
query_jobsA
Query Web3 job listings from the web3.career API with optional filters.

Returns a Markdown-formatted list of jobs, including Job ID, Title, Company, Location,
Remote status, Published At date, Apply URL, and Description (always included).

Parameters:
    remote (Optional[bool]): Filter for remote jobs. Set to True for remote-only,
        False for non-remote, or None for no filter. Defaults to None.
    country (Optional[str]): Filter by country (e.g., "United States", "Canada").
        Case-insensitive, spaces are converted to hyphens (e.g., "united-states").
        Defaults to None (no country filter).
    tag (Optional[str]): Filter by job tag (e.g., "react", "blockchain").
        Case-insensitive. Defaults to None (no tag filter).
    limit (Optional[int]): Maximum number of jobs to return. Must be between 1 and 100.
        Defaults to 50. Raises ValueError if limit exceeds 100.
    ctx (Context): MCP context for logging and internal use. Automatically provided
        by the MCP framework. Defaults to None.

Returns:
    str: A Markdown string containing a list of job listings with the specified fields.

Notes:
    - Descriptions are always included (show_description is hardcoded to True),
      truncated to 100 characters, and have HTML tags removed.
    - Published At is derived from the 'date_epoch' field, formatted as YYYY-MM-DD.
    - Apply URL is included as a clickable Markdown link for each job.
    - Source is credited to web3.career per API terms.
ParametersJSON Schema
NameRequiredDescriptionDefault
countryNo
limitNo
remoteNo
tagNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the return format (Markdown-formatted list), data processing (descriptions truncated to 100 characters, HTML tags removed, date formatting), and constraints (limit must be 1-100, raises ValueError if exceeded). It also notes source attribution per API terms. However, it doesn't cover potential errors beyond limit validation or rate limits, leaving minor gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, parameters, returns, notes) and front-loaded key information. It is appropriately sized for the tool's complexity, but some sentences could be more concise (e.g., the parameter explanations are detailed but slightly verbose). Overall, it earns its place with useful details without excessive fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no annotations, no output schema), the description is largely complete. It covers purpose, parameters, return format, and behavioral notes. However, it lacks explicit error handling details beyond the 'limit' validation and doesn't mention pagination or API rate limits, which could be relevant for a query tool. The absence of an output schema is mitigated by describing the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must fully compensate. It provides detailed semantics for all 4 parameters: explains what each filter does (e.g., 'remote' for remote jobs, 'country' with case-insensitivity and formatting rules), specifies defaults, and includes validation for 'limit'. The 'ctx' parameter is noted as automatically provided, clarifying its internal use. This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Query Web3 job listings from the web3.career API with optional filters.' It specifies the verb ('query'), resource ('Web3 job listings'), and source ('web3.career API'), making it highly specific. Since there are no sibling tools, no differentiation is needed, but the description stands alone as complete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the mention of 'optional filters' and the detailed parameter explanations, suggesting when to use specific filters. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., for job searches vs. other data queries), and there are no sibling tools to compare against. This results in implied but not explicit usage guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or confusion between tools. The single tool has a clear, distinct purpose that cannot be mistaken for any other functionality within this server.

Naming Consistency5/5

The single tool follows a consistent verb_noun naming pattern (query_jobs). With only one tool, naming consistency is inherently perfect as there are no other tools to compare against or create inconsistencies with.

Tool Count2/5

A single tool is too few for a server focused on Web3 job listings. While the query_jobs tool provides comprehensive querying functionality, there are obvious gaps in the surface area that would require additional tools to cover a complete job search domain.

Completeness2/5

The server is severely incomplete for Web3 job operations. While query_jobs provides robust filtering capabilities, there are no tools for viewing individual job details, applying to jobs, saving favorites, or managing user profiles. The single tool represents only a fraction of what would be expected in a job search domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/kukapay/web3-jobs-mcp'

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