Remove DEPLOYMENT_GUIDE.md
This commit is contained in:
parent
bbf2266590
commit
e8a8fc8a24
1 changed files with 0 additions and 304 deletions
|
|
@ -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
|
||||
Loading…
Reference in a new issue