the-sid-dani/lever-mcp-server
If you are the rightful owner of lever-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This document provides a comprehensive overview of setting up a remote Model Context Protocol (MCP) server on Cloudflare Workers without authentication.
Lever MCP Server
A MCP server that integrates Lever ATS with Claude Desktop and other MCP clients, enabling recruiters to manage their recruiting workflows through natural language commands. Built on Cloudflare Workers for global edge deployment.
š Features
16 Recruiting Tools
Search & Discovery
lever_advanced_search
- Advanced candidate search with multiple filterslever_find_by_company
- Find candidates from specific companieslever_search_candidates
- Basic candidate search by namelever_quick_find_candidate
- Quick candidate lookup (auto-limited to 100 results)lever_find_candidates_for_role
- Find candidates for specific job postingslever_find_candidate_in_posting
- Search within a specific job postinglever_find_internal_referrals_for_role
- Find internal referrals
Candidate Management
lever_get_candidate
- Get detailed candidate informationlever_add_note
- Add notes to candidate profileslever_archive_candidate
- Archive candidates with reasons
Application & File Management
lever_list_applications
- List all applications for a candidatelever_get_application
- Get specific application detailslever_list_files
- List candidate files and resumes
Utility Tools
lever_list_open_roles
- List all open job postingslever_get_stages
- Get hiring pipeline stageslever_get_archive_reasons
- Get available archive reasons
šļø Architecture
- Cloudflare Workers: Serverless edge deployment
- TypeScript: Full type safety with Lever API types
- MCP Protocol: Standard Model Context Protocol implementation
- SSE Endpoint: Server-sent events for real-time communication
- Rate Limiting: Built-in protection (respects Lever's 10 req/sec limit)
š Prerequisites
- Cloudflare account
- Lever API key
- Node.js 18+ and npm
- Wrangler CLI
š ļø Installation
-
Clone the repository
git clone https://github.com/the-sid-dani/lever-mcp-server.git cd lever-mcp-server
-
Install dependencies
npm install
-
Configure Cloudflare
# Login to Cloudflare npx wrangler login # Set your Lever API key as a secret npx wrangler secret put LEVER_API_KEY # When prompted, paste your Lever API key
-
Deploy to Cloudflare Workers
npm run deploy # or use the deployment script ./deploy.sh
Your server will be deployed to:
https://lever-mcp-remote.<your-subdomain>.workers.dev
š Connecting to MCP Clients
Claude Desktop
-
Install the MCP remote proxy:
npm install -g mcp-remote
-
Open Claude Desktop and go to Settings > Developer > Edit Config
-
Add your server configuration:
{ "mcpServers": { "lever-recruiting": { "command": "npx", "args": [ "mcp-remote", "https://lever-mcp-remote.<your-subdomain>.workers.dev/sse" ] } } }
-
Restart Claude Desktop - you should see the Lever tools available!
Cloudflare AI Playground
- Go to playground.ai.cloudflare.com
- Enter your deployed MCP server URL:
https://lever-mcp-remote.<your-subdomain>.workers.dev/sse
- Start using your Lever tools directly from the playground!
š¬ Usage Examples
Once connected to Claude Desktop, you can use natural language commands:
"Find all candidates from Google who applied for engineering roles"
"Show me candidates in the phone screen stage for the Senior Backend Engineer position"
"Add a note to John Doe's profile about our conversation today"
"List all open engineering positions"
"Archive this candidate with reason 'Position filled'"
š§āš» Development
Local Development
# Run local development server
npm run dev
# Type checking
npm run type-check
# Linting
npm run lint:fix
# Code formatting
npm run format
Testing with MCP Inspector
# Install MCP Inspector
npm install -g @modelcontextprotocol/inspector
# Connect to your local or deployed server
npx @modelcontextprotocol/inspector
# Enter: http://localhost:8787/sse (local)
# Or: https://lever-mcp-remote.<your-subdomain>.workers.dev/sse (deployed)
š Project Structure
āāā src/
ā āāā index.ts # Main server entry point
ā āāā lever/
ā ā āāā client.ts # Lever API client
ā āāā additional-tools.ts # Extended tool implementations
ā āāā types/
ā āāā lever.ts # TypeScript type definitions
āāā wrangler.jsonc # Cloudflare Workers configuration
āāā deploy.sh # Deployment helper script
āāā CLAUDE.md # Claude Code guidelines
š Security
- API keys are stored as Cloudflare secrets (never in code)
- No authentication required for the MCP endpoint (add auth if needed for production)
- Rate limiting prevents API abuse
- All requests are logged for monitoring
ā ļø Known Limitations
- No Text Search on Opportunities: Lever API limitation - name searches fetch candidates then filter client-side
- File Downloads: Cannot download files through MCP - access through Lever web interface
- Limited Write Operations: Can only add notes and archive candidates
- No Application Creation: Cannot create new applications via API
- No Stage Changes: Cannot move candidates between stages via API
š¤ Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Acknowledgments
- Built with Cloudflare Workers
- Uses the Model Context Protocol
- Integrates with Lever ATS API