diff --git a/DEPLOYMENT_GUIDE.md b/DEPLOYMENT_GUIDE.md deleted file mode 100644 index 24e5e4e..0000000 --- a/DEPLOYMENT_GUIDE.md +++ /dev/null @@ -1,304 +0,0 @@ -# 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: - -1. **rfp-scraper-mcp-server** - Discovers RFPs and freelance opportunities for control room and broadcast studio projects -2. **linkedin-mcp-server** - Searches LinkedIn jobs and manages professional networking - -## Quick Start - -### 1. Build Both MCPs - -```bash -# 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. - -```bash -# 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: - -```json -{ - "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:** -```bash -export RFP_SCRAPER_API_KEY=your_api_key # Optional, for enhanced features -``` - -**For LinkedIn:** -```bash -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: - -```bash -# 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: - -```bash -# 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 - -```bash -# 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 - -### LinkedIn -- **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 - -1. **Install dependencies on production server:** - ```bash - npm install --production - npm run build - ``` - -2. **Set environment variables:** - ```bash - export LINKEDIN_ACCESS_TOKEN=prod_token - export RFP_SCRAPER_API_KEY=prod_key - ``` - -3. **Run MCPs via process manager (PM2):** - ```bash - pm2 start rfp-scraper-mcp-server/dist/index.js --name rfp-scraper - pm2 start linkedin-mcp-server/dist/index.js --name linkedin - ``` - -4. **Monitor:** - ```bash - 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 - -1. **Authenticate with APIs:** - - Get LinkedIn access token: https://linkedin.com/developers - - Set up any RFP API keys if needed - -2. **Test Integration:** - - Run MCPs locally first - - Test with MCP Inspector - - Verify with mcp-gateway - -3. **Customize:** - - Modify scraper keywords and sources as needed - - Adjust job search filters - - Add additional tools based on your workflow - -4. **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: -1. Check individual README files in each MCP directory -2. Review error messages - they include suggested next steps -3. Check TypeScript compilation for type errors -4. Verify environment variables are set correctly - ---- - -**Last Updated**: 2026-03-31 -**Version**: 1.0.0