Remove mcp-gateway/MCP_STACK_UPDATE.md
This commit is contained in:
parent
c51e5b8ce5
commit
dadfdafe53
1 changed files with 0 additions and 263 deletions
|
|
@ -1,263 +0,0 @@
|
|||
# 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!
|
||||
Loading…
Reference in a new issue