Job Outreach MCP Server
Searches for companies on Indeed job board to find potential job opportunities.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Job Outreach MCP Serversearch for companies matching 'Stripe'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Job Outreach MCP Server
An MCP server for automated job outreach that helps you find companies, discover contacts, generate personalized emails with AI, and track your outreach campaigns.
Features
Tool | Description |
| Find companies from job boards (Indeed) or add manually |
| Add contacts with automatic email pattern generation and SMTP verification |
| Scrape company websites for personalization data using AI |
| Track specific job postings you're applying to |
| AI-powered personalized email generation using Claude |
| Smart scheduling for optimal delivery times (Tue-Thu, 9-11am) |
| Monitor opens, clicks, and replies |
| Automatic follow-up email generation |
| Overview of all your outreach campaigns |
Related MCP server: Cold Email Assistant
Setup
Install dependencies:
npm installConfigure settings:
cp data/config.example.json data/config.jsonEdit
data/config.jsonwith your credentials.Build:
npm run build
Configuration
Edit data/config.json:
{
"smtp": {
"host": "smtp.your-server.com",
"port": 587,
"user": "your-username",
"password": "your-password",
"from_email": "you@example.com"
},
"anthropic_api_key": "sk-ant-...",
"user_profile": {
"name": "Your Name",
"title": "Software Engineer",
"resume_summary": "Your background...",
"linkedin_url": "https://linkedin.com/in/you",
"highlights": ["5+ years experience", "TypeScript expert"]
},
"smart_schedule": {
"timezone": "America/Los_Angeles",
"preferred_days": [2, 3, 4],
"preferred_hours": [9, 10, 11]
},
"followup": {
"enabled": true,
"days_between": 5,
"max_followups": 2
},
"tracking_server": {
"port": 3847,
"base_url": "http://your-server:3847"
}
}Usage with Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):
{
"mcpServers": {
"job-outreach": {
"command": "node",
"args": ["/path/to/auto-job-application/dist/index.js"]
}
}
}Running the Email Processor
The email processor sends scheduled emails and handles tracking:
npm run processorRun this in the background to automatically send emails at their scheduled times.
Workflow Example
Add a company:
search_companies({ query: "Stripe", source: "manual" })Add a contact:
find_contacts({ company_id: 1, contacts: [{ name: "Jane Doe", title: "Recruiter" }] })Research the company:
research_company({ company_id: 1 })Add job posting (optional):
add_job_posting({ company_id: 1, title: "Senior Engineer", url: "https://stripe.com/jobs/123" })Generate personalized email:
generate_email({ contact_id: 1, job_posting_id: 1 })Schedule delivery:
schedule_email({ email_id: 1, smart_schedule: true })Check status:
check_tracking({ company_id: 1 })Schedule follow-up (if no reply):
schedule_followup({ email_id: 1 })
Architecture
src/
├── index.ts # MCP server entry point
├── processor.ts # Background email processor
├── types.ts # TypeScript types
├── tools/ # MCP tool implementations
│ ├── search-companies.ts
│ ├── find-contacts.ts
│ ├── research-company.ts
│ ├── generate-email.ts
│ ├── schedule-email.ts
│ ├── check-tracking.ts
│ ├── schedule-followup.ts
│ ├── list-campaigns.ts
│ └── add-job-posting.ts
├── services/ # Core services
│ ├── database.ts # SQLite operations
│ ├── config.ts # Configuration loader
│ ├── scraper.ts # Web scraping with Puppeteer
│ ├── email-patterns.ts # Email generation & SMTP verification
│ ├── llm.ts # Claude API integration
│ ├── scheduler.ts # Smart scheduling logic
│ └── smtp.ts # Email sending
└── tracking/
└── server.ts # Open/click tracking webhook serverEmail Tracking
The tracking server provides:
Open tracking: 1x1 pixel embedded in emails
Click tracking: Link wrapping with redirect
Reply webhooks: Endpoint for email provider callbacks
For tracking to work, the tracking server must be accessible from the internet (use ngrok for testing or deploy the processor).
Notes
LinkedIn scraping is not implemented (requires authentication and is against ToS)
Email SMTP verification may be blocked by some mail servers
Smart scheduling picks optimal send times: Tuesday-Thursday, 9-11am recipient timezone
The background processor must be running for scheduled emails to be sent
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ajayranwa/job-outreach-MCP-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server