Package Exports
- jira-rollback-mcp-server
- jira-rollback-mcp-server/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (jira-rollback-mcp-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
🛡️ Rollback MCP Server
A coordinated rollback system for MCP servers that provides team safety controls and cross-platform rollback capabilities.
🚀 Features
- ✅ Cross-Platform Rollback - Coordinate rollbacks across Jira, GitHub, Slack, Confluence, Figma
- ✅ Team Safety Controls - Approval workflows and permission-based access
- ✅ Real-time Monitoring - Track all changes and rollback operations
- ✅ State Snapshots - Before/after state capture for precise rollback
- ✅ MCP Integration - Connect with other MCP servers seamlessly
- ✅ Free Tier Deployment - Deploy on Supabase + Vercel for free
📋 Prerequisites
- Node.js 18+
- Supabase account (free tier)
- Vercel account (free tier)
- MCP server connections (Jira, GitHub, etc.)
🛠️ Setup
1. Clone and Install
git clone <your-repo>
cd rollback-server
npm install
2. Supabase Setup
Create Supabase Project
- Go to supabase.com
- Create new project
- Get your project URL and anon key
Run Database Schema
- Go to SQL Editor in Supabase
- Copy and run
supabase-schema.sql
Environment Variables
cp .env.example .env
Add your Supabase credentials:
SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key
3. Local Development
# Start development server
npm run dev
# Build for production
npm run build
npm start
4. Deploy to Vercel
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel --prod
🔧 Configuration
MCP Server Connections
Connect to your existing MCP servers:
{
"mcpServers": {
"rollback-server": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"SUPABASE_URL": "your_supabase_url",
"SUPABASE_ANON_KEY": "your_supabase_anon_key"
}
}
}
}
Platform API Keys
Add your platform API keys to environment variables:
# Jira
JIRA_URL=https://your-domain.atlassian.net
JIRA_USERNAME=your_email
JIRA_API_TOKEN=your_api_token
# GitHub
GITHUB_TOKEN=your_github_token
# Slack
SLACK_BOT_TOKEN=your_slack_bot_token
# Confluence
CONFLUENCE_URL=https://your-domain.atlassian.net
CONFLUENCE_USERNAME=your_email
CONFLUENCE_API_TOKEN=your_api_token
# Figma
FIGMA_TOKEN=your_figma_token
🎯 Usage
Register a Rollback Task
// When a change is made, register it for potential rollback
await rollbackServer.register_rollback({
taskId: "task_123",
platform: "jira",
operation: "update",
agentId: "agent_456",
beforeState: {
id: "state_789",
timestamp: "2024-01-01T00:00:00Z",
data: {
issueKey: "PROJ-123",
fields: { summary: "Old Summary" }
}
}
});
Execute Rollback
// Execute rollback with approval
await rollbackServer.execute_rollback({
rollbackId: "rollback_123",
approverId: "user_456",
force: false
});
Approve Rollback
// Approve or reject a rollback
await rollbackServer.approve_rollback({
rollbackId: "rollback_123",
approverId: "user_456",
approved: true,
comment: "Looks good to rollback"
});
🔗 Integration Examples
With Your Enhanced Orchestrator
// In your orchestrator, add rollback registration
import { RollbackMCPServer } from './rollback-server';
const rollbackServer = new RollbackMCPServer();
// After each task execution
await rollbackServer.register_rollback({
taskId: task.id,
platform: task.platform,
operation: task.operation,
agentId: task.agentId,
beforeState: task.beforeState
});
With Jira MCP Server
{
"mcpServers": {
"jira": {
"command": "mcp-jira-server",
"args": ["--config", "jira-config.json"]
},
"rollback": {
"command": "node",
"args": ["dist/index.js"]
}
}
}
📊 Monitoring
Real-time Dashboard
Access your rollback dashboard at:
https://your-vercel-app.vercel.app
API Endpoints
GET /api/rollbacks
- List rollback tasksPOST /api/rollbacks
- Register new rollbackPUT /api/rollbacks/:id/approve
- Approve rollbackPOST /api/rollbacks/:id/execute
- Execute rollback
🛡️ Safety Features
Approval Workflows
- Automatic Registration - All changes are registered
- Manual Approval - Requires team member approval
- Force Rollback - Emergency rollback option
- Audit Trail - Complete history of all actions
Team Roles
- Admin - Full access to all features
- Approver - Can approve/reject rollbacks
- Viewer - Read-only access
🚨 Emergency Procedures
Immediate Rollback
// Force rollback without approval
await rollbackServer.execute_rollback({
rollbackId: "rollback_123",
approverId: "emergency_user",
force: true
});
Bulk Rollback
// Rollback all recent changes by an agent
const tasks = await rollbackServer.list_rollbacks({
agentId: "problematic_agent",
status: "completed"
});
for (const task of tasks) {
await rollbackServer.execute_rollback({
rollbackId: task.id,
approverId: "admin",
force: true
});
}
📈 Free Tier Limits
Supabase (Free)
- ✅ 500MB database storage
- ✅ 50,000 API calls/month
- ✅ Unlimited real-time subscriptions
- ✅ 50,000 users
Vercel (Free)
- ✅ 100GB bandwidth/month
- ✅ 100GB-hours serverless functions
- ✅ Unlimited deployments
Perfect for small teams (2-5 people)!
🔧 Troubleshooting
Common Issues
Connection Failed
- Check your Supabase credentials
- Verify environment variables
Rollback Failed
- Check platform API keys
- Verify before state data
Approval Required
- Ensure user has approver role
- Check team member permissions
Debug Mode
# Enable debug logging
DEBUG=rollback:* npm run dev
🤝 Contributing
- Fork the repository
- Create feature branch
- Make changes
- Test thoroughly
- Submit pull request
📄 License
MIT License - see LICENSE file for details
🆘 Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki
Built with ❤️ for team safety and coordinated rollback operations