MCP Center provides a high-performance proxy service between MCP clients and multiple MCP servers.
1.4K
# 1. Pull the latest image
docker pull nautilusops/mcp-center:latest
# 2. Start the container
docker run -d \
--name mcp-center \
-p 5432:5432 \
-e MCP_ADMIN_TOKEN=your-custom-token \
-e POSTGRES_HOST=your-postgres-host \
-e POSTGRES_PORT=your-postgres-port
-e POSTGRES_USERNAME=your-postgres-username
-e POSTGRES_PASSWORD=your-postgres-password
-e POSTGRES_DATABASE=your-postgres-database
nautilusops/mcp-center:latest
# Deploy with default configuration (includes PostgreSQL)
helm install mcp-center . --create-namespace --namespace mcp-center
cp values-custom.yaml my-values.yaml
postgresql:
enabled: false
externalPostgresql:
host: "your-postgres-host.example.com"
port: 5432
username: "mcpcenter"
password: "your-secure-password"
database: "mcpcenter"
helm install mcp-center . -f my-values.yaml --create-namespace --namespace mcp-center
postgresql.enabled: Whether to enable built-in PostgreSQL
true: Use built-in PostgreSQL (requires storage class support)false: Use external PostgreSQLWhen postgresql.enabled: false, configure the following parameters:
externalPostgresql.host: PostgreSQL server addressexternalPostgresql.port: PostgreSQL port (default 5432)externalPostgresql.username: Database usernameexternalPostgresql.password: Database password (stored securely in Kubernetes Secret)externalPostgresql.database: Database namemcpAdminToken: 32-character random string for MCP admin authentication
The application will automatically receive the following environment variables:
POSTGRES_HOST: PostgreSQL host addressPOSTGRES_PORT: PostgreSQL portPOSTGRES_USERNAME: Database usernamePOSTGRES_PASSWORD: Database passwordPOSTGRES_DATABASE: Database nameMCP_ADMIN_TOKEN: 32-character random string for admin authenticationkubectl logs -n mcp-center <pod-name>curl -X POST http://localhost:5432/api/registry/mcp-server \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-admin-token" \
-d '{
"name": "my-mcp-server",
"tag": "1.0.0",
"endpoint": "http://my-server:8080/sse",
"transport_type": "sse",
"description": "My MCP server"
}'
curl -X GET http://localhost:5432/api/registry/mcp-server \
-H "Authorization: Bearer your-admin-token"
curl -X GET http://localhost:5432/proxy/connect/my-mcp-server/1.0.0 \
-H "Authorization: Bearer your-api-key"
package main
import (
"log"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
func main() {
// Using SSE transport
transport := mcp.NewSSEClientTransport(
"http://localhost:5432/proxy/connect/example-server/1.0.0",
nil,
)
// Using Streamable transport
transport := mcp.NewStreamableClientTransport(
"http://localhost:5432/proxy/connect/example-server/2.0.0",
nil,
)
// Create client
client := mcp.NewClient(&mcp.Implementation{
Name: "mcp-client",
Version: "1.0.0",
}, nil)
// Initialize connection
session, err := client.Connect(context.Background(), transport)
if err != nil {
panic(err)
}
defer session.Close()
// Use the client...
}
# Test connection
curl -v http://localhost:5432/proxy/connect/example-server/1.0.0
Content type
Image
Digest
sha256:94f7576ea…
Size
35.5 MB
Last updated
about 1 year ago
docker pull nautilusops/mcp-center