MCP Server
Connect WorkSignal to your AI coding tool and manage hiring in plain English. The WorkSignal MCP server translates natural language into API calls - no code required.
Setup
Choose your AI tool and follow the one-command setup:
Terminal
claude mcp add worksignal --transport stdio \
-e WORKSIGNAL_API_KEY=ws_your_key_here \
-- npx -y @worksignal/mcp-server
This adds WorkSignal to your global Claude Code MCP config. Restart Claude Code after setup.
To verify the connection, ask Claude:
"What WorkSignal tools do you have access to?"
"What's our current plan on WorkSignal?"
Option 1 - Terminal command
cursor mcp add worksignal "npx -y @worksignal/mcp-server" \
-e WORKSIGNAL_API_KEY=ws_your_key_here
Option 2 - ~/.cursor/mcp.json
{
"mcpServers": {
"worksignal": {
"command": "npx",
"args": ["-y", "@worksignal/mcp-server"],
"env": {
"WORKSIGNAL_API_KEY": "ws_your_key_here"
}
}
}
}
.vscode/settings.json (workspace) or User settings.json
{
"mcp": {
"servers": {
"worksignal": {
"command": "npx",
"args": ["-y", "@worksignal/mcp-server"],
"env": {
"WORKSIGNAL_API_KEY": "ws_your_key_here"
}
}
}
}
}
Requires VS Code Insiders or a Copilot extension that supports MCP. Reload the window after saving.
Generic MCP config (Codex, Goose, opencode, etc.)
{
"worksignal": {
"command": "npx",
"args": ["-y", "@worksignal/mcp-server"],
"env": {
"WORKSIGNAL_API_KEY": "ws_your_key_here"
}
}
}
The MCP server supports stdio transport. Add it to whatever config file your tool uses for MCP servers.
OAuth authentication
When you connect the MCP server using the commands above, it runs a standard OAuth 2.0 Authorization Code flow with PKCE automatically. Your tool will open a browser window to authorize access to your WorkSignal account.
Alternatively, you can authenticate using a direct API key (set WORKSIGNAL_API_KEY in the env block as shown above).
For full OAuth endpoint details, see Authentication.
Available tools
These tools are available to your AI coding tool after connecting the MCP server:
| Tool | What it does |
|---|---|
| quick_post | Create and publish a job posting in one step |
| list_roles | List all roles - filter by status |
| get_role | Detailed role info with description and salary |
| create_role | Create a draft role |
| publish_role | Publish a draft role to your career page |
| pause_role | Pause a role to stop accepting applications |
| list_job_postings | See all postings on your career page |
| update_job_posting | Update a posting's title, description, or requirements |
| list_voice_screens | View screening results with scores |
| get_voice_screen | Full transcript, AI highlights, and red flags |
| list_candidates | List candidates, optionally filtered by role and stage |
| get_candidate | Candidate detail with applications and screen history |
| add_candidate | Add a candidate manually (referrals, inbound email, etc.) |
| advance_candidate | Move a candidate to the next pipeline stage |
| reject_candidate | Reject a candidate with a reason |
| hire_candidate | Mark a candidate as hired with optional start date |
| post_job_to_x | Post a job to X with chosen tone (professional, casual, bold) |
| get_channels | X and WhatsApp connection status and usage |
| list_x_posts | List X posts with engagement metrics |
| get_organization | Plan info, limits, and usage stats |
Example prompts
Say these to your AI tool after connecting WorkSignal:
"Post a senior Rails engineer role on WorkSignal. Remote, $150-200K."
"Show me all completed voice screens for the frontend engineer role."
"What's our current plan and usage on WorkSignal?"
"Show me all candidates for the backend role who passed screening."
"Reject candidates #12 and #15 - not enough experience."
"Post the senior engineer job to X with a casual tone."
"Add my friend Sarah (sarah@example.com) as a referral for the frontend role."
"Pause the designer role - we have enough applicants."