Add mcp-gateway/MCP_STACK_UPDATE.md

This commit is contained in:
Zac Gaetano 2026-03-31 15:29:25 -04:00
parent f102ee1ed5
commit acedb96943

View file

@ -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!