lamplighter-mcp
Version:
An intelligent context engine for AI-assisted software development
172 lines (133 loc) • 5.39 kB
Markdown
# Lamplighter-MCP Deployment Plan
## 1. Build Process
1. **Prepare Codebase**
- Ensure all code is committed to version control
- Merge feature branches if working collaboratively
- Verify all environment variables are documented in `.env.example`
2. **Build Production Version**
- Run `npm run build` to compile TypeScript to JavaScript
- Verify build artifacts in `dist/` directory
- Create production-optimized build configurations if needed
3. **Test Build Locally**
- Set up `.env` with production-like settings
- Run `node dist/server.js` to verify server starts correctly
- Test all MCP tools via Cursor or MCP Inspector to verify functionality
## 2. Deployment Options
### Option A: Manual Deployment to Development Server
1. **Server Requirements**
- Node.js 18.x or higher
- Network access to Confluence API
- Network access to AI service APIs (OpenAI/Google)
- Firewall rules allowing inbound connections on port 3001 (or configured port)
2. **Deployment Steps**
- SSH into development server
- Clone repository or copy build artifacts
- Install dependencies with `npm ci` (or copy `node_modules` if same architecture)
- Set up `.env` file with proper credentials and configuration
- Run `node dist/server.js` to start the server
- Optionally use a process manager like PM2: `pm2 start dist/server.js --name lamplighter-mcp`
3. **Verification**
- Verify server is running with `curl http://server-address:3001/health` (would need to add health endpoint)
- Configure Cursor to connect to the deployed instance
- Test a basic workflow like codebase analysis
### Option B: Containerized Deployment (Docker)
1. **Create Dockerfile**
```dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist/ ./dist/
# Copy default context directory structure
RUN mkdir -p lamplighter_context/feature_tasks
EXPOSE 3001
CMD ["node", "dist/server.js"]
```
2. **Build and Run Container**
```bash
docker build -t lamplighter-mcp:latest .
docker run -d -p 3001:3001 --env-file .env --name lamplighter-mcp lamplighter-mcp:latest
```
3. **Verification**
- Same verification steps as manual deployment
### Option C: Cloud Deployment (AWS/Azure/GCP)
1. **AWS EC2**
- Launch EC2 instance with Node.js
- Follow manual deployment steps
- Set up security group to allow port 3001
- Configure domain/DNS if needed
2. **AWS Elastic Beanstalk**
- Create `Procfile` with `web: node dist/server.js`
- Deploy using Elastic Beanstalk CLI
- Configure environment variables in Elastic Beanstalk console
## 3. Continuous Integration/Deployment (Optional)
1. **GitHub Actions Workflow**
```yaml
name: Deploy Lamplighter-MCP
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy to development server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_PRIVATE_KEY }}
script: |
cd /path/to/deployment
git pull
npm ci
npm run build
pm2 restart lamplighter-mcp || pm2 start dist/server.js --name lamplighter-mcp
```
## 4. Monitoring and Maintenance
1. **Process Management**
- Use PM2 for process management
- Configure automatic restarts: `pm2 startup`
- Save process list: `pm2 save`
2. **Monitoring**
- Add logging to file: `pm2 start dist/server.js --name lamplighter-mcp -o logs/out.log -e logs/error.log`
- Consider PM2 monitoring: `pm2 monitor`
- Implement /health endpoint for uptime monitoring
3. **Backup Strategy**
- Set up periodic backups of `lamplighter_context/` directory
- Consider Git-backing the context files for version control
## 5. Environment-Specific Configurations
1. **Development**
- Use local environment with DEBUG logs
- Use development LLM models (e.g., smaller/cheaper ones)
2. **Staging/Production**
- Use production-grade LLM models
- Implement rate limiting if needed
- Consider authentication for MCP server access
## 6. Rollback Plan
In case of deployment issues:
1. Stop the server: `pm2 stop lamplighter-mcp`
2. Revert to previous version (Git checkout or restore from backup)
3. Restart: `pm2 start dist/server.js --name lamplighter-mcp`
4. Verify functionality
## 7. Security Considerations
1. **API Keys and Secrets**
- Ensure all API keys are stored as environment variables
- Do not commit `.env` files to version control
- Consider using a secrets manager for production
2. **Network Security**
- Limit access to the MCP server by IP if possible
- Consider using a reverse proxy (Nginx/Apache) with SSL
- Implement rate limiting to prevent abuse
3. **Data Security**
- Be mindful of sensitive data in context files
- Implement secure handling of Confluence credentials