MCP Hub
Back to servers

ClawHire MCP

An employer-facing MCP server that enables hiring managers to post jobs, search for candidates, and manage applications through natural language conversation. It integrates with WonderCV's hiring infrastructure and features a unique system for identifying and filtering talent with AI-agent fluency.

glama
Updated
Mar 12, 2026

ClawHire MCP

Employer-facing MCP for China's first agent-native hiring marketplace.

ClawHire lets hiring managers post jobs, search candidates, and receive applications — all through natural language conversation with Claude or any MCP-compatible AI assistant. Backed by WonderCV's resume database and existing HR infrastructure.

What This Is

ClawHire is one half of a two-sided marketplace:

Candidates                              Employers
    │                                       │
resume-agent-mcp                    clawhire-mcp (this repo)
    │                                       │
    └──────── WonderCV Backend ─────────────┘
                    │
              PostgreSQL (existing WonderCV DB)
  • resume-agent-mcp — Candidate-facing. Resume analysis, profile publishing, job applications.
  • clawhire-mcp (this repo) — Employer-facing. Job posting, candidate search, application management.

Both share WonderCV's existing Django backend, company database, and profession taxonomy. This is NOT a standalone product — it's an MCP layer on top of WonderCV's existing hiring infrastructure.

Why It Exists

The thesis: China is in an AI-agent boom. Companies hiring for white-collar roles increasingly want people who can work with AI agents. But no hiring platform treats AI-agent fluency as a first-class hiring signal.

ClawHire does. Candidates who use MCP tools are automatically tagged with AI fluency badges. Employers can filter for agent-fluent talent. This signal is impossible to replicate on traditional job boards.

Three Categories of Candidates

Not all candidates are equal. The system handles three distinct pools:

CategoryHow They EnterAI FluencyEmployer Can...
1. MCP NativeInstall resume-agent-mcp, publish profileAuto-badged verified_mcp_userSearch, view profile, receive applications
2. GUI Opt-InClick button on wondercv.com or WeChatNo badge (not demonstrated)Same as above
3. DatabaseThey don't — existing WonderCV usersNoneView anonymized/coarsened data, send outreach invite only

Category conversions:

  • 3 → 2: Candidate responds to outreach email or opts in via GUI
  • 2 → 1: Candidate links MCP session to their WonderCV account (automatic upgrade)
  • Conversions are one-way (upward only)

Company blocklist: Candidates can block specific companies (e.g. current employer) from seeing their profile. Enforced at query time.

Architecture

Existing WonderCV Models We Reuse (DO NOT DUPLICATE)

ModelTableWhat It Has
Companiesapi/companies/Company names (cn/en), scale, industry, Tianyancha verification
HrAccountsapi/account/HR manager accounts, WeChat auth, phone login, quotas
Jobsapi/jobs/Job postings with profession taxonomy, salary, experience (in days)
JobApplicationsapi/data_operations/Application tracking with state machine
JobOrdersapi/job_orders/Payment/promotion with Alipay + WeChat Pay

New Models We Add (only 2)

ModelPurpose
CandidateProfileOpt-in marketplace profile (Cat 1 + 2). Links to WonderCV user. Contains visibility, AI fluency data, company blocklist, preferences.
McpEmployerSessionBridges MCP session → HrAccount. Tracks daily usage quotas.

Data Unit Conventions

These MUST match existing WonderCV conventions:

FieldUnitNotes
salary_min/maxCNY/month (integer)NOT thousands
experience_min/maxDays (in DB)MCP accepts years, converts with × 365
status (Jobs)Integer 0-40=draft, 1=publish, 2=expired, 3=offline, 4=remove
IDstoken (CharField)NOT UUIDs — WonderCV uses string tokens

Available Tools (7)

ToolPurposeQuota
register_companyCreate employer account, get session_id
post_jobPublish job to marketplacejobs_posted
list_jobsView own posted jobs with stats
search_candidatesSearch marketplace + database poolssearches
view_candidateView candidate profile (visibility-enforced)candidate_views
list_applicationsView inbound applications
request_outreachSend invite to Category 3 database candidateoutreach_sent

Quota Tiers (daily limits)

TierViewsSearchesOutreachJobs
Alpha (current)5030105
Free201052
Paid2001002020

All alpha users get the Alpha tier for free.

Quick Start

Install & Build

git clone https://github.com/WonderCV/clawhire-mcp.git
cd clawhire-mcp
npm install
npm run build

Configure

cp .env.example .env

Edit .env:

CLAWHIRE_API_BASE_URL=https://api.wondercv.cn/cv/v1/mcp/hiring
CLAWHIRE_API_KEY=your_api_key_here    # Leave as-is for mock mode
LOG_LEVEL=info

Mock mode: If CLAWHIRE_API_KEY is missing or your_api_key_here, the server returns realistic mock data for all endpoints. Useful for development without the backend.

Add to Claude

In your MCP config (e.g. ~/.claude.json or Claude Desktop settings):

{
  "mcpServers": {
    "clawhire": {
      "command": "node",
      "args": ["/absolute/path/to/clawhire-mcp/dist/server.js"],
      "env": {
        "CLAWHIRE_API_KEY": "your_api_key_here"
      }
    }
  }
}

Try It

After connecting, tell Claude:

  • "Register my company — we're TechCorp in Shanghai, email hr@techcorp.com"
  • "Post a job for Senior Product Manager, remote OK, 30-50k/month"
  • "Search for AI-fluent product managers in Shanghai with 3+ years experience"
  • "Show me candidate details for [candidate_id]"
  • "Send an outreach invite to [candidate_ref] for the PM role"

Development

npm run dev          # Watch mode (auto-recompile on changes)
npm run build        # Single build
npm run typecheck    # Type check without emitting
npm start            # Run compiled server

Project Structure

src/
├── server.ts           # MCP server entry, tool registration, JSON schema conversion
├── types.ts            # All TypeScript types (aligned with WonderCV models)
├── session.ts          # In-memory session management + quota tracking
├── backend-api.ts      # WonderCV backend API client (with mock fallback)
└── tools/
    ├── index.ts                # Tool registry
    ├── register_company.ts     # Creates HrAccount + Company
    ├── post_job.ts             # Wraps Jobs model (years→days conversion)
    ├── list_jobs.ts            # Paginated job list with stats
    ├── search_candidates.ts    # Marketplace + database pools, AI fluency filter
    ├── view_candidate.ts       # Visibility-enforced profile view + anonymization
    ├── list_applications.ts    # Application list with match scores
    └── request_outreach.ts     # Database candidate invitation (rate-limited)

Adding a New Tool

  1. Create src/tools/your_tool.ts implementing the Tool<Input> interface
  2. Define input schema with Zod
  3. Implement execute(input) returning ToolResult
  4. Export from src/tools/index.ts and add to allTools array
  5. The server auto-registers it via the tool registry

Backend API Pattern

All tools follow the same pattern:

// 1. Validate session
const session = getSession(input.session_id);
if (!session) return errorResult('INVALID_SESSION', '...');

// 2. Check quota (for metered tools)
const remaining = getRemainingQuota(session, 'searches');
if (remaining <= 0) return errorResult('QUOTA_EXCEEDED', '...');

// 3. Call backend
const result = await backendApi.searchCandidates(input);

// 4. Consume quota AFTER success (not before)
checkAndIncrementUsage(session, 'searches');

// 5. Format and return
return { content: [{ type: 'text', text: JSON.stringify(formatted) }], isError: false };

Known Issues (v0.1.0)

See KnownIssues.md for full details.

IssueSeverityImpact
In-memory session storageHigh (for prod)Server restart = re-register
Quota race conditionMediumConcurrent requests can exceed limits
Brittle JSON schema conversionMediumWorks for flat inputs, fragile for complex
No test coverageLowNeeds tests before v0.2

Alpha verdict: Ship to alpha (<50 employers), not to GA.

Roadmap

v0.1 (current) — Alpha Foundation

  • 7 employer tools (register, post, search, view, applications, outreach, list)
  • Three-category candidate model
  • AI fluency badges
  • Anonymization for privacy
  • Daily quota system

v0.2 — Marketplace Core

  • Persistent session storage (Redis or backend rehydration)
  • Backend authoritative quota metering
  • Replace zodToJsonSchema with zod-to-json-schema library
  • Candidate-side tools in resume-agent-mcp (publish, apply, browse jobs)
  • LLM-based match scoring
  • Test suite

v0.3 — Growth

  • Company verification automation (Tianyancha API)
  • Application status management (shortlist, reject)
  • Paid tier billing (via existing JobOrders + Alipay/WeChat Pay)
  • Global aggregate stats

Related

License

MIT

Reviews

No reviews yet

Sign in to write a review