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
{
"mcpServers": {
"resumes-md": {
"url": "https://resumes.md/api/mcp/mcp"
}
}
}Cursor
Go to Cursor Settings > MCP and add a new server:
https://resumes.md/api/mcp/mcpAny 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
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
Browse public user profiles with pagination and sorting.
Parameters
| Name | Type | Description |
|---|---|---|
| limit | integer | Max profiles to return (1-50) |
| offset | integer | Pagination offset (0-1000) |
| sort | string | "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
}Retrieve the full Markdown resume, metadata, and recent social activity for a user.
Parameters
| Name | Type | Description |
|---|---|---|
| username | string | The 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 by keywords, skills, or recent activity.
Parameters
| Name | Type | Description |
|---|---|---|
| query | string | Free-text search across profile fields |
| skills | string[] | Skill tags to match, e.g. ["react", "python"] |
| min_activity_days | integer | Only users active in last N days |
| limit | integer | Max results (1-50) |
| offset | integer | Pagination 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 lightweight metadata about a profile without full resume content. Useful for quick filtering.
Parameters
| Name | Type | Description |
|---|---|---|
| username | string | The 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
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}'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}'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.