Model Context Protocol

MCP Server Documentation

Connect AI agents to resumes.md to discover and query public profiles. Works with Claude Desktop, Cursor, and any MCP-compatible client.

Quick Start

Claude Desktop

Add this to your Claude Desktop config at ~/Library/Application Support/Claude/claude_desktop_config.json

claude_desktop_config.json
{
  "mcpServers": {
    "resumes-md": {
      "url": "https://resumes.md/api/mcp/mcp"
    }
  }
}

Cursor

Go to Cursor Settings > MCP and add a new server:

MCP Server URL
https://resumes.md/api/mcp/mcp

Any MCP Client

Point your client to the Streamable HTTP endpoint:

Endpoint:  https://resumes.md/api/mcp/mcp
Protocol:  Streamable HTTP (JSON-RPC 2.0)
Auth:      None required (public read-only API)

Endpoint

POST
https://resumes.md/api/mcp/mcp
  • -JSON-RPC 2.0 over Streamable HTTP
  • -No authentication required (read-only, public data only)
  • -Rate limited to 60 requests per minute per IP
  • -Only returns profiles where users have opted in to AI discovery

Available Tools

list_public_profiles

Browse public user profiles with pagination and sorting.

Parameters

NameTypeDescription
limitintegerMax profiles to return (1-50)
offsetintegerPagination offset (0-1000)
sortstring"recent", "active", or "alphabetical"

Example Response

{
  "profiles": [
    {
      "username": "jamestansley",
      "headline": "AI & Security Engineer",
      "last_updated": "2026-02-01T14:30:00Z",
      "skills": ["react", "typescript", "supabase"]
    }
  ],
  "total": 42,
  "limit": 10,
  "offset": 0
}
get_profile

Retrieve the full Markdown resume, metadata, and recent social activity for a user.

Parameters

NameTypeDescription
usernamestringThe username/slug (required)

Example Response

{
  "content": "# James Tansley\n## Experience\n...",
  "metadata": {
    "username": "jamestansley",
    "display_name": "James Tansley",
    "headline": "AI & Security Engineer",
    "last_updated": "2026-02-01T14:30:00Z",
    "public": true
  },
  "recent_activity": [
    {
      "source": "twitter",
      "type": "post",
      "title": null,
      "content": "Building agent-native tools...",
      "url": "https://x.com/...",
      "engagement_count": 12
    }
  ]
}
search_profiles

Search profiles by keywords, skills, or recent activity.

Parameters

NameTypeDescription
querystringFree-text search across profile fields
skillsstring[]Skill tags to match, e.g. ["react", "python"]
min_activity_daysintegerOnly users active in last N days
limitintegerMax results (1-50)
offsetintegerPagination offset (0-1000)

Example Response

{
  "profiles": [
    {
      "username": "jamestansley",
      "display_name": "James Tansley",
      "headline": "AI & Security Engineer",
      "last_updated": "2026-02-01T14:30:00Z",
      "skills": ["react", "typescript", "python"]
    }
  ],
  "total": 5,
  "limit": 10,
  "offset": 0
}
get_profile_metadata

Get lightweight metadata about a profile without full resume content. Useful for quick filtering.

Parameters

NameTypeDescription
usernamestringThe username/slug (required)

Example Response

{
  "username": "jamestansley",
  "display_name": "James Tansley",
  "headline": "AI & Security Engineer",
  "bio": "Building agent-native tools",
  "skills": ["react", "typescript", "supabase"],
  "last_updated": "2026-02-01T14:30:00Z",
  "recent_posts_count": 11,
  "public": true
}

Testing with curl

Initialize
curl -X POST https://resumes.md/api/mcp/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}},"id":1}'
List tools
curl -X POST https://resumes.md/api/mcp/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":2}'
Search for Python developers
curl -X POST https://resumes.md/api/mcp/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"search_profiles","arguments":{"skills":["Python"],"limit":5}},"id":3}'

Privacy & Limits

Opt-in only

Only profiles where users have enabled "Allow AI agents to discover my profile" appear in results.

Public data only

No private data is ever exposed. Email addresses, payment info, and private profiles are never returned.

Rate limiting

60 requests per minute per IP address. Exceeding the limit returns a 429 with a Retry-After header.

Read-only

The MCP server is read-only. No write operations are available. Profiles are managed through the dashboard.