7.3 KiB
MCP Job Search Stack - Deployment Guide
This guide walks you through setting up and deploying your two new MCPs for job searching and RFP discovery.
Overview
You now have two complementary MCPs:
- rfp-scraper-mcp-server - Discovers RFPs and freelance opportunities for control room and broadcast studio projects
- linkedin-mcp-server - Searches LinkedIn jobs and manages professional networking
Quick Start
1. Build Both MCPs
# Build RFP Scraper MCP
cd /sessions/focused-busy-tesla/mnt/MCP\ Servers/rfp-scraper-mcp-server
npm install
npm run build
# Build LinkedIn MCP
cd /sessions/focused-busy-tesla/mnt/MCP\ Servers/linkedin-mcp-server
npm install
npm run build
2. Verify Build Success
Both should complete without errors and create a dist/ directory with compiled JavaScript.
# Test RFP Scraper
node rfp-scraper-mcp-server/dist/index.js --version
# Test LinkedIn
node linkedin-mcp-server/dist/index.js --version
Integration with mcp-gateway
Your MCPs are designed to integrate with your existing mcp-gateway at mcp.wilddragon.net.
Configuration
Add to your mcp-gateway configuration:
{
"mcpServers": {
"rfp-scraper": {
"command": "node",
"args": ["/path/to/rfp-scraper-mcp-server/dist/index.js"],
"env": {
"RFP_SCRAPER_API_KEY": "${RFP_SCRAPER_API_KEY}"
}
},
"linkedin": {
"command": "node",
"args": ["/path/to/linkedin-mcp-server/dist/index.js"],
"env": {
"LINKEDIN_ACCESS_TOKEN": "${LINKEDIN_ACCESS_TOKEN}"
}
}
}
}
Environment Variables
For RFP Scraper:
export RFP_SCRAPER_API_KEY=your_api_key # Optional, for enhanced features
For LinkedIn:
export LINKEDIN_ACCESS_TOKEN=your_access_token # Required for connection requests
Get your LinkedIn access token from: https://linkedin.com/developers
Features by MCP
RFP Scraper MCP (rfp-scraper-mcp-server)
Tools available:
- rfp_search_projects - Search for RFP opportunities
- rfp_get_project_details - Get detailed project information
- rfp_filter_by_budget - Filter projects by budget range
Example Usage:
Search for control room projects:
keywords: ["control room", "broadcast studio"]
limit: 20
Find high-budget opportunities:
minBudget: 10000
maxBudget: 50000
LinkedIn MCP (linkedin-mcp-server)
Tools available:
- linkedin_search_jobs - Search for jobs
- linkedin_get_job_details - Get job information
- linkedin_search_profiles - Find professionals
- linkedin_send_connection - Connect with professionals
- linkedin_get_profile - View profiles
Example Usage:
Search for broadcast jobs:
keywords: "broadcast engineer"
jobType: "FREELANCE"
Find industry professionals:
keywords: "broadcast systems"
industry: "Broadcasting"
Development Mode
For local testing and development:
# Terminal 1: RFP Scraper
cd rfp-scraper-mcp-server
npm run dev
# Terminal 2: LinkedIn
cd linkedin-mcp-server
npm run dev
This uses tsx to watch for changes and auto-reload.
Testing the MCPs
Using MCP Inspector
Test individual MCPs with the MCP Inspector:
# Test RFP Scraper
npx @modelcontextprotocol/inspector node rfp-scraper-mcp-server/dist/index.js
# Test LinkedIn
npx @modelcontextprotocol/inspector node linkedin-mcp-server/dist/index.js
The inspector provides a web interface to:
- List available tools
- Test tool calls
- View responses
- Debug issues
Manual Testing
# Build both
npm run build
# Run and test
node rfp-scraper-mcp-server/dist/index.js
# In another terminal, send test request via stdin
echo '{"jsonrpc":"2.0","id":1,"method":"resources/list"}' | node rfp-scraper-mcp-server/dist/index.js
Architecture Notes
RFP Scraper
- Service:
services/scraper.ts- Core scraping and filtering logic - Transport: stdio (local) - designed for mcp-gateway integration
- Error Handling: Graceful handling of API errors and timeouts
- Pagination: Supports offset-based pagination for large result sets
- Service:
services/linkedin-client.ts- LinkedIn API client - Transport: stdio (local) - designed for mcp-gateway integration
- Mock Data: Currently uses mock data for development. Replace with real API calls once authenticated.
- Authentication: Supports LinkedIn OAuth tokens
Production Deployment
Prerequisites
- Node.js 18+
- npm or yarn
- Valid API credentials (LinkedIn token, etc.)
Deployment Steps
-
Install dependencies on production server:
npm install --production npm run build -
Set environment variables:
export LINKEDIN_ACCESS_TOKEN=prod_token export RFP_SCRAPER_API_KEY=prod_key -
Run MCPs via process manager (PM2):
pm2 start rfp-scraper-mcp-server/dist/index.js --name rfp-scraper pm2 start linkedin-mcp-server/dist/index.js --name linkedin -
Monitor:
pm2 logs pm2 status
Troubleshooting
Build Fails
- Ensure Node.js 18+ is installed:
node --version - Clear npm cache:
npm cache clean --force - Rebuild:
rm -rf node_modules dist && npm install && npm run build
Tools Not Appearing
- Check server started successfully:
npm start - Verify no TypeScript errors:
npm run build - Check tool names match exactly in your calls
API Errors
- Verify environment variables are set:
echo $LINKEDIN_ACCESS_TOKEN - Check API credentials are valid
- Review error messages for guidance on next steps
Connection Issues
- Ensure mcp-gateway can reach the servers
- Check firewall rules if using remote deployment
- Verify stdio transport is properly configured
Next Steps
-
Authenticate with APIs:
- Get LinkedIn access token: https://linkedin.com/developers
- Set up any RFP API keys if needed
-
Test Integration:
- Run MCPs locally first
- Test with MCP Inspector
- Verify with mcp-gateway
-
Customize:
- Modify scraper keywords and sources as needed
- Adjust job search filters
- Add additional tools based on your workflow
-
Monitor Usage:
- Track API rate limits
- Monitor performance metrics
- Adjust pagination limits if needed
File Structure
MCP Servers/
├── rfp-scraper-mcp-server/
│ ├── src/
│ │ ├── index.ts
│ │ ├── types.ts
│ │ ├── constants.ts
│ │ └── services/
│ │ └── scraper.ts
│ ├── dist/
│ │ └── index.js (generated)
│ ├── package.json
│ ├── tsconfig.json
│ └── README.md
├── linkedin-mcp-server/
│ ├── src/
│ │ ├── index.ts
│ │ ├── types.ts
│ │ ├── constants.ts
│ │ └── services/
│ │ └── linkedin-client.ts
│ ├── dist/
│ │ └── index.js (generated)
│ ├── package.json
│ ├── tsconfig.json
│ └── README.md
└── DEPLOYMENT_GUIDE.md (this file)
Support
For issues or questions:
- Check individual README files in each MCP directory
- Review error messages - they include suggested next steps
- Check TypeScript compilation for type errors
- Verify environment variables are set correctly
Last Updated: 2026-03-31 Version: 1.0.0