Enhanced MCP Registry Proxy with PostgreSQL backend, rating system, and admin synchronization with the official MCP Registry at registry.modelcontextprotocol.io.
- PostgreSQL Migration: Complete migration from MongoDB to PostgreSQL for better performance and ACID compliance
- Rating & Review System: 5-star ratings and written reviews for MCP servers
- Admin Sync: Synchronize with official registry.modelcontextprotocol.io
- Security Hardening: SQL injection prevention, input validation, authentication middleware
- Enhanced Admin UI: Server management, status control, search & filter, pagination
- Performance Optimizations: Database indexes, connection pooling, efficient caching
See CHANGELOG for complete release notes.
.
├── proxy/ # Main proxy service (Go)
├── admin/ # Admin web interface (Go + JavaScript)
├── main/ # Deployment infrastructure
│ ├── docker-compose.yml # PostgreSQL, Traefik, services
│ └── enhancement_schema.sql # Database schema
├── registry/ # Upstream MCP Registry (submodule)
└── docs/ # Documentation
The central deployment directory containing:
-
docker-compose.yml: Core infrastructure services
- Traefik (reverse proxy with SSL)
- PostgreSQL (primary database)
- Proxy Service (Enhanced MCP Registry API)
- Admin Service (Management interface)
-
Scripts:
start-all.sh- Starts all servicesstop-all.sh- Stops all services
-
Configuration:
traefik/acme.json- Let's Encrypt SSL certificates
Clean fork of the official MCP registry from modelcontextprotocol/registry.
- Purpose: Provides the official registry API
- Modifications: Minimal, to stay compatible with upstream
- API: Available at https://registry.plugged.in
┌─────────────────┐
│ Internet │
└────────┬────────┘
│
┌────▼────┐
│ Traefik │ (SSL, Routing, Load Balancing)
└────┬────┘
│
┌────▼─────────────────────────────────┐
│ Proxy Service (Port 8090) │
│ • Server listings & search │
│ • Rating & review system │
│ • Stats & analytics │
│ • Sync with official registry │
└────┬──────────────────────────────────┘
│
┌────▼─────────────────────────────────┐
│ Admin Service (Port 8091) │
│ • Server management UI │
│ • Sync preview & execution │
│ • Status management │
│ • Import/Export tools │
└────┬──────────────────────────────────┘
│
┌────▼──────────┐
│ PostgreSQL │ (Primary Database)
│ • servers │ (Server metadata with versioning)
│ • server_stats │ (Ratings, installs, reviews)
│ • server_ratings │ (Individual user ratings)
│ • server_reviews │ (User reviews)
└───────────────┘
- Registry API: https://registry.plugged.in
- Traefik Dashboard: http://localhost:8080 (local only)
cd /home/pluggedin/main
./start-all.shcd /home/pluggedin/main
./stop-all.shdocker psPostgreSQL is the primary database (migrated from MongoDB in v1.0.0):
- Container: postgres
- Port: 5432
- Database: pluggedin
- User: postgres
Core Tables:
servers- Server metadata with versioning supportserver_stats- Installation counts, ratings, and analyticsserver_ratings- Individual user ratings (1-5 stars)server_reviews- Written reviews with timestamps
# Connect to database
docker exec -it postgres psql -U postgres -d pluggedin
# View servers
SELECT server_name, version, status FROM servers WHERE is_latest = true LIMIT 10;
# View ratings
SELECT server_id, AVG(rating) as avg_rating, COUNT(*) as total_ratings
FROM server_ratings GROUP BY server_id;See POSTGRES_MIGRATION_PLAN.md for complete migration guide.
SSL certificates are managed by Traefik using Let's Encrypt:
- Location:
/home/pluggedin/main/traefik/acme.json - Domains: Automatically provisioned for configured hosts
- Renewal: Automatic
-
Pull upstream changes:
cd /home/pluggedin/registry git fetch upstream git merge upstream/main -
Rebuild if needed:
docker compose -f docker-compose.local.yml build
-
Restart services:
cd /home/pluggedin/main ./stop-all.sh ./start-all.sh
-
Check Docker logs:
docker logs <container-name>
-
Verify networks exist:
docker network ls
-
Check port conflicts:
netstat -tulpn | grep -E '(80|443|8080|27017)'
-
Check Traefik logs:
docker logs traefik
-
Verify DNS points to server
-
Check acme.json permissions (should be 600)
The plan is to evolve toward:
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ plugged.in │────▶│ Community API │────▶│ Community DB │
│ Frontend │ │ (Your Backend) │ │ (Your Data) │
└──────┬───────┘ └─────────────────┘ └──────────────┘
│
▼
┌──────────────┐
│ MCP Registry │ (Official registry.modelcontextprotocol.io)
└──────────────┘
This separation allows:
- Independent development of community features
- Easy migration when official registry launches
- Clean upstream compatibility
Previously provided search and analytics features. Deprecated due to:
- High maintenance overhead
- Complex infrastructure (Elasticsearch, Kibana, Redis)
- Upstream registry evolving rapidly
Data and code archived for reference.
- All services run in Docker containers
- MongoDB is not exposed externally (only via Docker network)
- SSL/TLS enforced for all public endpoints
- Traefik dashboard only accessible locally
- Monitor service health
- Check disk space for MongoDB
- Review Docker logs for errors
- Update Docker images if needed
- Review and update dependencies
- Check SSL certificate renewal
- Backup MongoDB data
Major Features:
- Complete PostgreSQL migration with optimized schema
- Rating & review system for MCP servers
- Admin sync with official registry
- Comprehensive security hardening
- Enhanced admin interface
Breaking Changes:
- MongoDB no longer supported (PostgreSQL required)
- New environment variables required (see .env.example)
- Admin authentication now mandatory
See full release notes for details.
For issues or questions:
- GitHub Issues: https://github.com/VeriTeknik/registry-proxy/issues
- Documentation: See DEPLOYMENT_COMPLETE.md and POSTGRES_MIGRATION_PLAN.md
- Official Registry: https://registry.modelcontextprotocol.io
Version: 1.0.0 Last Updated: October 28, 2025 License: MIT