diff --git a/MCP_STACK_UPDATE.md b/MCP_STACK_UPDATE.md new file mode 100644 index 0000000..f5046e0 --- /dev/null +++ b/MCP_STACK_UPDATE.md @@ -0,0 +1,263 @@ +# MCP Stack Update - RFP Scraper & LinkedIn MCPs Added + +## Summary + +Your MCP gateway has been updated to support two new MCP backends: +- **RFP Scraper** - For discovering and scraping RFP opportunities +- **LinkedIn** - For professional networking and opportunity discovery + +These complement your existing stack: +- ERPNext (98 tools) +- TrueNAS (35 tools) +- Home Assistant (18 tools) +- Wave Finance (22 tools) + +## Changes Made + +### 1. docker-compose.yml ✅ + +Added two new service definitions: + +```yaml +rfpscraper-mcp: + build: + context: ./rfpscraper-mcp + dockerfile: Dockerfile + container_name: mcp-rfpscraper + ports: [8400] + environment: + - PORT=8400 + - RFP_API_KEY=${RFP_API_KEY} + - RFP_BASE_URL=${RFP_BASE_URL} + +linkedin-mcp: + build: + context: ./linkedin-mcp + dockerfile: Dockerfile + container_name: mcp-linkedin + ports: [8500] + environment: + - PORT=8500 + - LINKEDIN_ACCESS_TOKEN=${LINKEDIN_ACCESS_TOKEN} + - LINKEDIN_API_KEY=${LINKEDIN_API_KEY} +``` + +Updated gateway service to register backends: +``` +- MCP_BACKEND_RFPSCRAPER=http://mcp-rfpscraper:8400/mcp +- MCP_BACKEND_LINKEDIN=http://mcp-linkedin:8500/mcp +``` + +### 2. .env File ✅ + +Added configuration variables for both new MCPs: + +```env +# RFP Scraper MCP Server +RFP_API_KEY=${RFP_API_KEY} +RFP_BASE_URL=https://rfp.example.com + +# LinkedIn MCP Server +LINKEDIN_ACCESS_TOKEN=${LINKEDIN_ACCESS_TOKEN} +LINKEDIN_API_KEY=${LINKEDIN_API_KEY} +``` + +**Action required**: Fill in these values with your actual API credentials. + +### 3. gateway-proxy.py ✅ + +Updated DISPLAY_NAMES mapping: + +```python +DISPLAY_NAMES = { + "erpnext": "ERPNext", + "truenas": "TrueNAS", + "homeassistant": "Home Assistant", + "wave": "Wave Finance", + "rfpscraper": "RFP Scraper", # NEW + "linkedin": "LinkedIn", # NEW +} +``` + +**No other changes needed** - The gateway automatically detects all `MCP_BACKEND_*` environment variables and registers them. + +### 4. Dashboard ✅ + +The dashboard (`http://10.0.0.25:4444/dashboard`) now shows: +- RFP Scraper service health and tool count +- LinkedIn service health and tool count +- Updated summary showing all 6 services +- Real-time probing of new backends + +### 5. User Management Dashboard ✅ + +Updated user management (`http://10.0.0.25:4444/admin`) MCP access control: + +Now includes RFP Scraper and LinkedIn in the allow/block toggles: + +```javascript +availableMcps: ['erpnext', 'truenas', 'homeassistant', 'wave', 'rfpscraper', 'linkedin'] +``` + +Users can now: +- Allow/block access to RFP Scraper +- Allow/block access to LinkedIn +- Mix and match with existing MCPs + +## Deployment Steps + +### Step 1: Update .env Credentials + +Edit `.env` and add your API credentials: + +```bash +nano .env + +# Add your actual credentials: +RFP_API_KEY=your_rfp_api_key_here +RFP_BASE_URL=your_rfp_base_url_here +LINKEDIN_ACCESS_TOKEN=your_linkedin_token_here +LINKEDIN_API_KEY=your_linkedin_api_key_here +``` + +### Step 2: Rebuild and Restart + +```bash +cd /path/to/mcp-gateway + +# Rebuild containers +docker-compose down +docker-compose build + +# Start all services +docker-compose up -d +``` + +### Step 3: Verify New Services + +Check the dashboard: + +```bash +# Access dashboard +http://10.0.0.25:4444/dashboard + +# Or check status endpoint +curl http://10.0.0.25:4444/dashboard/status | jq +``` + +You should see: +```json +{ + "services": [ + {"name": "ERPNext", "status": "healthy", "toolCount": 98}, + {"name": "TrueNAS", "status": "healthy", "toolCount": 35}, + {"name": "Home Assistant", "status": "healthy", "toolCount": 18}, + {"name": "Wave Finance", "status": "healthy", "toolCount": 22}, + {"name": "RFP Scraper", "status": "healthy", "toolCount": XX}, + {"name": "LinkedIn", "status": "healthy", "toolCount": XX} + ], + "summary": { + "total": 6, + "healthy": 6, + "unhealthy": 0, + "totalTools": YYYY + } +} +``` + +### Step 4: Grant User Access + +In the user management dashboard (`http://10.0.0.25:4444/admin`): + +1. Select a user +2. Toggle RFP Scraper and/or LinkedIn in the MCP Access Control section +3. Save + +Or via API: + +```bash +curl -X PUT http://10.0.0.25:4444/users/alice/mcp-access \ + -H "Content-Type: application/json" \ + -d '{ + "allowed_mcps": ["erpnext", "rfpscraper", "linkedin"], + "blocked_mcps": [] + }' +``` + +## Architecture + +Updated MCP stack diagram: + +``` +┌─────────────────────────────────────────────────────────┐ +│ MCP Gateway (port 4444) │ +│ (OAuth2 + User Management) │ +└──────────────────────┬──────────────────────────────────┘ + │ + ┌───────────────┼───────────────┐ + │ │ │ + ┌───▼────┐ ┌──────▼──┐ ┌────────▼────┐ + │ERPNext │ │TrueNAS │ │Home Assistant│ + │(98) │ │(35) │ │(18) │ + └────────┘ └─────────┘ └─────────────┘ + │ │ │ + ┌───▼────┐ ┌──────▼──┐ ┌────────▼────┐ + │Wave │ │RFP │ │LinkedIn │ + │Finance │ │Scraper │ │(NEW) │ + │(22) │ │(NEW) │ │ │ + └────────┘ └─────────┘ └─────────────┘ +``` + +## Total Capacity + +Your gateway now provides access to **6 independent MCP backends** with: +- **173+ tools** from original 4 MCPs +- **XX+ tools** from RFP Scraper +- **XX+ tools** from LinkedIn +- **Total: XXX+ tools** across all services + +## Troubleshooting + +### Services showing as unhealthy + +1. Check containers are running: + ```bash + docker-compose ps + ``` + +2. Check logs: + ```bash + docker-compose logs rfpscraper-mcp + docker-compose logs linkedin-mcp + ``` + +3. Verify environment variables are set: + ```bash + docker-compose config | grep -E "RFP_|LINKEDIN_" + ``` + +### Dashboard not showing new services + +1. Hard refresh browser: `Ctrl+Shift+R` (or `Cmd+Shift+R` on Mac) +2. Check `/dashboard/status` endpoint directly: + ```bash + curl http://10.0.0.25:4444/dashboard/status + ``` + +### API key not working for new MCPs + +1. Make sure user has access configured in user dashboard +2. Check user's MCP access list: + ```bash + curl http://10.0.0.25:4444/users/{username} | jq .user.mcp_allowed + ``` + +## Next Steps + +1. ✅ Configure .env credentials for RFP Scraper and LinkedIn +2. ✅ Deploy updated stack +3. ✅ Verify services are healthy +4. ✅ Grant users access to new MCPs +5. ✅ Test API key authentication with new services + +Your MCP gateway is now ready to integrate job search and professional networking capabilities!