Laddro Career MCP Server

Tailor resumes to job postings, generate cover letters, and export PDFs through AI agents

Documentation

@laddro/career-mcp

smithery badge

MCP server for the Laddro Career API. Gives AI agents access to resume tailoring, cover letter generation, PDF export, and template browsing.

Setup

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "laddro-career": {
      "command": "npx",
      "args": ["@laddro/career-mcp"],
      "env": {
        "LADDRO_API_KEY": "laddro_live_..."
      }
    }
  }
}

Claude Code

claude mcp add laddro-career -- npx @laddro/career-mcp

Set the environment variable LADDRO_API_KEY before running.

Remote HTTP

Use the hosted Streamable HTTP endpoint:

https://mcp.laddro.com/mcp

Send your Laddro API key on the MCP initialize request:

Authorization: Bearer laddro_live_...

or:

x-api-key: laddro_live_...

Available tools

ToolDescription
laddro.templates.listBrowse all 22 resume templates
laddro.templates.getGet template colors and fonts
laddro.fonts.listAll available font families
laddro.languages.listAll 14 supported locales
laddro.models.listAI providers for BYOK
laddro.resumes.listUser's resumes
laddro.resumes.getResume metadata
laddro.resumes.renderRe-render with new template settings
laddro.resumes.tailorAI-tailor resume for a job
laddro.resumes.exportExport as PDF
laddro.coverLetters.listUser's cover letters
laddro.coverLetters.getCover letter metadata
laddro.coverLetters.createCreate manually
laddro.coverLetters.generateAI-generate from resume + job
laddro.coverLetters.renderRender with template settings
laddro.settings.getCurrent AI provider config
laddro.settings.updateModelSet BYOK provider
laddro.settings.deleteModelRemove BYOK config

Connector (OAuth) mode

Behind the MCP_CONNECTOR_ENABLED flag (default off). When enabled and a request carries Authorization: Bearer lad_at_* (a Laddro OAuth access token), the server runs an OAuth connector session that forwards the token to laddro-backend (service.laddro.com) instead of career-api. It also serves GET /.well-known/oauth-protected-resource (RFC 9728) and answers unauthenticated /mcp calls with 401 + WWW-Authenticate: Bearer resource_metadata=... so OAuth clients can discover the authorization server. With the flag off, behaviour is unchanged (no discovery route, no 401 enforcement, all 18 tools via career-api).

Connector tools (OAuth sessions only): "You write the content. Laddro stores it and renders the PDF."

ToolScopeDescription
laddro.resume.schemaJSON Schema for resume content
laddro.resume.createresumes:writeCreate a resume, returns { resumeId }
laddro.resume.updateresumes:writeFull-replace a resume, returns { resumeId, updatedAt }
laddro.coverLetter.schemaJSON Schema for cover-letter content

Environment variables

VariableRequiredDescription
LADDRO_API_KEYYes for stdio; optional fallback for HTTPYour Laddro API key
LADDRO_BASE_URLNoOverride API URL (default: https://api.laddro.com)
MCP_CONNECTOR_ENABLEDNotrue enables OAuth connector mode (default off)
LADDRO_BACKEND_URLNoBackend base URL for connector tools (default: https://service.laddro.com)
MCP_PUBLIC_URLNoThis server's public URL for OAuth metadata (else derived from forwarded headers)

Development

npm ci
npm test

npm test builds the TypeScript package and runs MCP contract tests for auth handling, tool metadata, and handler routing.

Releases

This package uses Changesets and SemVer.

  • Patch: bug fixes, docs, tests, internal hardening.
  • Minor: new backwards-compatible MCP tools or capabilities.
  • Major: breaking tool names, schemas, auth, or transport behavior.

Every PR that changes the published package should include a changeset:

npm run changeset

After the PR merges to main, GitHub Actions opens a release PR with the version bump and changelog. Merging that release PR publishes the package to npm and creates the GitHub release. The Cloud Run deploy workflow also runs on main, so hosted MCP updates automatically after release merges.

Links

License

MIT