263 lines
6.9 KiB
Markdown
263 lines
6.9 KiB
Markdown
# 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!
|