MCP Server — Streamable HTTP

Your AI-Powered
Web3 Career Copilot

Semantic job search, resume analysis, fit scoring, and application planning — all through a Model Context Protocol server your AI assistant can call directly.

Nine Tools for Your Job Hunt

Every tool is designed to turn your AI assistant into a career strategist that understands web3 roles.

search_jobs
Semantic search across thousands of web3 jobs. Uses AI embeddings + Vectorize to match intent, not just keywords.
Workers AI Vectorize D1
filter_jobs
Browse jobs with structured filters: remote, domain (DeFi, infra, wallet…), seniority, and tag.
D1
get_job
Return the full job record with apply URL, source URL, salary, tags, and requirements.
D1
understand_job
Extract day-to-day work, hidden expectations, interview topics, recruiter questions, and concerns.
D1 Workers AI
set_resume
Store your resume as an immutable snapshot with an AI-extracted profile (skills, chains, evidence).
D1 Workers AI Vectorize
get_resume
Retrieve your latest resume snapshot and extracted profile with all parsed skills and evidence.
D1
analyze_fit
Score your resume against a job. Returns fit score, matched evidence, gaps, and a recommendation.
D1 Workers AI Vectorize
compare_jobs
Compare multiple jobs side-by-side against your resume, ranked by fit score.
D1 Workers AI Vectorize
plan_application
Get application angle, talking points, prep topics, risks, and questions to ask the recruiter.
D1 Workers AI Vectorize

Connect Your AI Assistant

The server uses Streamable HTTP over the /mcp endpoint. Authenticate with a Bearer token.

Cursor / Windsurf / Generic

mcp.json
{
  "mcpServers": {
    "web3-jobs": {
      "url": "https://web3-jobs.athelstan.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

opencode

opencode.json
{
  "mcp": {
    "servers": {
      "web3-jobs": {
        "url": "https://web3-jobs.athelstan.workers.dev/mcp",
        "headers": {
          "Authorization": "Bearer YOUR_TOKEN"
        }
      }
    }
  }
}

Quick Start

  1. Get your token

    The ADMIN_TOKEN is set as a Cloudflare Worker secret. Contact the server operator to get your bearer token.

  2. Add the MCP config

    Copy the config snippet on the left into your AI tool's MCP settings file. Replace YOUR_TOKEN with the actual token.

  3. Resume is pre-loaded

    Your resume is already stored in the system. You can skip straight to searching and analyzing — just ask your AI assistant to find jobs and check your fit.

  4. Start exploring

    Ask things like: "Find remote Solidity roles", "How do I fit for job #42?", or "Compare jobs 10, 22, 35".

One Command to Connect

Add the web3-jobs MCP server to Claude Code with a single CLI command. No config files to edit.

Option A: CLI Command (Recommended)

terminal
# Add as a user-scoped server (available in all projects)
claude mcp add --transport http \
  --header "Authorization: Bearer YOUR_TOKEN" \
  --scope user \
  web3-jobs \
  https://web3-jobs.athelstan.workers.dev/mcp

# Or project-scoped (shared via .mcp.json)
claude mcp add --transport http \
  --header "Authorization: Bearer YOUR_TOKEN" \
  --scope project \
  web3-jobs \
  https://web3-jobs.athelstan.workers.dev/mcp

Option B: JSON Config

terminal
# Add from JSON (useful for scripting)
claude mcp add-json web3-jobs \
  '{"type":"http","url":"https://web3-jobs.athelstan.workers.dev/mcp","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

Option C: .mcp.json file

.mcp.json
{
  "mcpServers": {
    "web3-jobs": {
      "type": "http",
      "url": "https://web3-jobs.athelstan.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Verify & Manage

verification commands
# List all configured servers
claude mcp list

# Check web3-jobs status
claude mcp get web3-jobs

# View tools inside Claude Code session
# Type /mcp in the Claude Code REPL

# Remove if needed
claude mcp remove web3-jobs

Scope Reference

  1. User scope --scope user

    Available in all projects on your machine. Stored in ~/.claude.json. Best for personal tools like web3-jobs.

  2. Project scope --scope project

    Shared with your team via .mcp.json at the repo root. Committed to version control. Use ${VAR} for tokens.

  3. Local scope (default)

    Private to you, current project only. Stored in ~/.claude.json under the project path. Good for experiments.

Example session
# Start Claude Code
$ claude

> Search for remote Solidity roles in DeFi
> How do I fit for job #15?
> Compare jobs 15, 23, 41 against my resume
> Plan my application for the best fit
> What are the hidden expectations for job #8?

Using with Codex CLI

Connect the Web3 Jobs MCP server to OpenAI's Codex CLI for agent-driven job search.

codex config
# Install Codex CLI globally
npm install -g @openai/codex

# Set your OpenAI API key
export OPENAI_API_KEY="sk-..."

# Create MCP config for Codex
codex --mcp-config mcp.json
mcp.json (for Codex)
{
  "mcpServers": {
    "web3-jobs": {
      "type": "streamable-http",
      "url": "https://web3-jobs.athelstan.workers.dev/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Codex Usage Tips

  1. Install & configure

    Install Codex CLI and place the mcp.json in your project root or ~/.codex/ directory.

  2. Launch with MCP

    Run codex --mcp-config mcp.json to start a session with the web3-jobs tools loaded.

  3. Full agent mode

    Use codex --full-auto --mcp-config mcp.json for autonomous agent mode. The AI can chain multiple tool calls on its own.

  4. Example prompts

    "Find me senior Solidity roles in DeFi, analyze fit against my resume, and plan my application for the top 3."

Example session
# Interactive mode
$ codex --mcp-config mcp.json

> Search for remote protocol engineering roles
> Analyze my fit for job #15
> Compare jobs 15, 23, 41 against my resume
> Plan my application for the best fit

# One-shot with full auto
$ codex --full-auto --mcp-config mcp.json \
  "Search for remote DeFi roles, analyze fit for the top 5, \
   and write application plans for the best 2"

Common Issues & Fixes

If something isn't working, check these solutions first.

"Missing Authorization header" error
The MCP server requires a Bearer token. Make sure your config includes the headers object with Authorization: Bearer YOUR_TOKEN. Check that the token matches the ADMIN_TOKEN secret set on the Worker.
"Unauthorized" despite correct token
Verify the token hasn't been rotated. The Worker uses timing-safe comparison. If you copied the token from a terminal, make sure there are no trailing newlines or spaces. Wrap the token value in quotes in your JSON config.
Connection refused / timeout
Check that the Worker URL is correct: https://web3-jobs.athelstan.workers.dev/mcp. The MCP endpoint is at /mcp, not the root. If using a custom domain, ensure DNS is properly configured. The Worker may be sleeping on its first request (cold start) — retry after a few seconds.
"No matching jobs found" for every search
The job database syncs hourly via a cron trigger. If the database is empty, the cron may not have run yet. You can trigger a manual sync via POST /api/sync (requires auth). Also check that your search query isn't too narrow.
Codex CLI doesn't detect the MCP server
Ensure you're passing the config file: codex --mcp-config mcp.json. The file must be valid JSON. Check Codex supports MCP in your version (codex --version). Place the config in ~/.codex/mcp.json for auto-detection, or pass the path explicitly.
Resume analysis returns "No resume found"
A resume snapshot is already stored in the system. If you see this error, the database may have been reset. You can re-store your resume by telling your AI assistant: "Store my resume with label 'v1'". The latest snapshot is used automatically when no resume_id is specified.
Tool calls are slow or timing out
Semantic search (search_jobs) runs an AI embedding + Vectorize query, which can take 2-5 seconds. analyze_fit is heavier and may take 5-10 seconds. If requests time out, try reducing top_k or running one analysis at a time instead of bulk comparisons.
"Vectorize index not found" error
The Vectorize index web3-jobs-1024 must exist and be bound in wrangler.jsonc. If redeploying to a new account, create the index first: npx wrangler vectorize create web3-jobs-1024 --dimensions 1024 --metric cosine, then run POST /api/reindex to populate it.