Refactor database implementation to use PostgreSQL instead of MongoDB (#289)
Fixes #228 ## Motivation and Context See #19 ## How Has This Been Tested? - Run locally - Run in docker compose - Run infra in minikube - Unit and integration tests all passing :) ## Breaking Changes Yes: users will not be able to access any data they used to have in custom mongodb. We are accepting this breaking change, given the registry is in experimental development status. ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [x] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> - [x] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [x] My code follows the repository's style guidelines - [x] New and existing tests pass locally - [x] I have added appropriate error handling - [x] I have added or updated documentation as needed ## Additional context I have not implemented connection pooling support for simplicity, and because cloudnative-pg already provides built-in connection pooling with pgBouncer so if we want it later we can switch to this endpoint easily.
This commit is contained in:
parent
ee910ca286
commit
ebaf4c9c99
1 changed files with 846 additions and 564 deletions
|
|
@ -11,7 +11,7 @@ Pre-requisites:
|
|||
- Access to a Kubernetes cluster via kubeconfig. You can run a cluster locally with [minikube](https://minikube.sigs.k8s.io/docs/start/).
|
||||
|
||||
1. Ensure your kubeconfig is configured at the cluster you want to use. For minikube, run `minikube start && minikube tunnel`.
|
||||
2. Run `make local-up` to deploy the stack. Run this again if the first attempt fails.
|
||||
2. Run `make local-up` to deploy the stack.
|
||||
3. Access the repository via the ingress load balancer. You can find its external IP with `kubectl get svc ingress-nginx-controller -n ingress-nginx`. Then run `curl -H "Host: local.registry.modelcontextprotocol.io" -k https://<EXTERNAL-IP>/v0/ping` to check that the service is up.
|
||||
|
||||
#### To change config
|
||||
|
|
@ -103,7 +103,7 @@ Pre-requisites:
|
|||
│ ├── cert_manager.go # SSL certificate management
|
||||
│ ├── deploy.go # Deployment orchestration
|
||||
│ ├── ingress.go # Ingress controller setup
|
||||
│ ├── mongodb.go # MongoDB deployment
|
||||
│ ├── postgres.go # PostgreSQL database deployment
|
||||
│ └── registry.go # MCP Registry deployment
|
||||
└── providers/ # Kubernetes cluster providers
|
||||
├── types.go # Provider interface definitions
|
||||
|
|
@ -122,7 +122,7 @@ Pre-requisites:
|
|||
5. `k8s.DeployAll()` orchestrates complete deployment:
|
||||
- Certificate manager for SSL/TLS
|
||||
- Ingress controller for external access
|
||||
- MongoDB for data persistence
|
||||
- Database for data persistence
|
||||
- MCP Registry application
|
||||
|
||||
## Configuration
|
||||
|
|
@ -152,5 +152,5 @@ kubectl get svc -n ingress-nginx
|
|||
|
||||
```bash
|
||||
kubectl logs -l app=mcp-registry
|
||||
kubectl logs -l app=mongodb
|
||||
kubectl logs -l app=postgres
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in a new issue