Deployment guide1-minute readEN · DE · IT

Google Kubernetes Engine (GKE) に AnythingMCP をデプロイする

Kubernetes マニフェスト、HTTPS 用の Ingress、および PostgreSQL 用の Cloud SQL を使用して GKE に AnythingMCP をデプロイします。エンタープライズグレードのスケーラブルなデプロイメント。

HCBy HelpCode teamUpdated 1 min read Open source on GitHub

No credit card · 7-day trial · Self-host alternative available

  • 7-day free trial
    No credit card required
  • GDPR & SOC 2 ready
    EU data residency, audit logs
  • Open-source on GitHub
    Open source AGPL-3.0
  • Works with ChatGPT, Claude, Gemini
    Any MCP-compatible client

Summary

Kubernetes マニフェスト、HTTPS 用の Ingress、および PostgreSQL 用の Cloud SQL を使用して GKE に AnythingMCP をデプロイします。エンタープライズグレードのスケーラブルなデプロイメント。

概要

これは最も高度なデプロイメントオプションで、エンタープライズグレードのスケーラビリティと管理されたインフラストラクチャを必要とするチーム向けに設計されています。Kubernetes マニフェストを作成し、Cloud SQL またはクラスター内の PostgreSQL を使用します。

前提条件

  • 請求が有効な GCP アカウント
  • gcloudkubectl がインストールされていること
  • ローカルに Docker がインストールされていること
  • ドメイン名
gcloud services enable container.googleapis.com \
  artifactregistry.googleapis.com \
  sqladmin.googleapis.com

GKE クラスターの作成

gcloud container clusters create anythingmcp-cluster \
  --region us-central1 \
  --num-nodes 2 \
  --machine-type e2-standard-2 \
  --enable-autoscaling --min-nodes 1 --max-nodes 5

gcloud container clusters get-credentials anythingmcp-cluster \
  --region us-central1

イメージのビルドとプッシュ

gcloud artifacts repositories create anythingmcp \
  --repository-format docker \
  --location us-central1

gcloud auth configure-docker us-central1-docker.pkg.dev

git clone https://github.com/HelpCode-ai/anythingmcp.git
cd anythingmcp

docker build -t us-central1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest .
docker push us-central1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest

Kubernetes シークレットの作成

kubectl create secret generic anythingmcp-secrets \
  --from-literal=JWT_SECRET=$(openssl rand -hex 32) \
  --from-literal=ENCRYPTION_KEY=$(openssl rand -hex 16) \
  --from-literal=NEXTAUTH_SECRET=$(openssl rand -hex 32) \
  --from-literal=POSTGRES_PASSWORD=$(openssl rand -hex 16)

PostgreSQL のデプロイ

クラスター内のシンプルな StatefulSet(本番環境では Cloud SQL を検討してください):

# postgres.yaml
apiVersion: v1
kind: Service
metadata:
  name: postgres
spec:
  clusterIP: None
  selector:
    app: postgres
  ports:
    - port: 5432
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres
spec:
  serviceName: postgres
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:17-alpine
          ports:
            - containerPort: 5432
          env:
            - name: POSTGRES_DB
              value: anythingmcp
            - name: POSTGRES_USER
              value: amcp
            - name: POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: anythingmcp-secrets
                  key: POSTGRES_PASSWORD
          volumeMounts:
            - name: data
              mountPath: /var/lib/postgresql/data
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 10Gi
kubectl apply -f postgres.yaml

AnythingMCP のデプロイ

# anythingmcp.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: anythingmcp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: anythingmcp
  template:
    metadata:
      labels:
        app: anythingmcp
    spec:
      containers:
        - name: anythingmcp
          image: us-central1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest
          ports:
            - containerPort: 3000
            - containerPort: 4000
          env:
            - name: NODE_ENV
              value: production
            - name: PORT
              value: "4000"
            - name: MCP_AUTH_MODE
              value: oauth2
            - name: POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: anythingmcp-secrets
                  key: POSTGRES_PASSWORD
            - name: DATABASE_URL
              value: postgresql://amcp:$(POSTGRES_PASSWORD)@postgres:5432/anythingmcp
            - name: JWT_SECRET
              valueFrom:
                secretKeyRef:
                  name: anythingmcp-secrets
                  key: JWT_SECRET
            - name: ENCRYPTION_KEY
              valueFrom:
                secretKeyRef:
                  name: anythingmcp-secrets
                  key: ENCRYPTION_KEY
            - name: NEXTAUTH_SECRET
              valueFrom:
                secretKeyRef:
                  name: anythingmcp-secrets
                  key: NEXTAUTH_SECRET
          readinessProbe:
            httpGet:
              path: /health
              port: 4000
            initialDelaySeconds: 10
            periodSeconds: 5
          livenessProbe:
            httpGet:
              path: /health
              port: 4000
            initialDelaySeconds: 30
            periodSeconds: 10
          resources:
            requests:
              cpu: 250m
              memory: 256Mi
            limits:
              cpu: "1"
              memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
  name: anythingmcp
spec:
  selector:
    app: anythingmcp
  ports:
    - name: frontend
      port: 3000
      targetPort: 3000
    - name: backend
      port: 4000
      targetPort: 4000
  type: ClusterIP
kubectl apply -f anythingmcp.yaml

Ingress で公開 (HTTPS)

# ingress.yaml
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: anythingmcp-cert
spec:
  domains:
    - mcp.example.com
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: anythingmcp-ingress
  annotations:
    networking.gke.io/managed-certificates: anythingmcp-cert
    kubernetes.io/ingress.class: gce
spec:
  rules:
    - host: mcp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: anythingmcp
                port:
                  number: 3000
kubectl apply -f ingress.yaml

# 外部 IP を取得 (数分かかる場合があります)
kubectl get ingress anythingmcp-ingress

ドメインの A レコードを外部 IP にポイントします。DNS が伝播すると、管理された証明書が自動的にプロビジョニングされます。

確認と次のステップ

kubectl get pods
curl https://mcp.example.com/health

最初に登録したユーザーが管理者になります。

本番環境の推奨事項:

  • バックアップと HA のためにクラスター内の StatefulSet の代わりに Cloud SQL を使用する
  • Horizontal Pod Autoscaler を有効にする: kubectl autoscale deployment anythingmcp --min=2 --max=10 --cpu-percent=70
  • Cloud SQL アクセスのために Workload Identity を使用する

このガイドは役に立ちましたか?

Ready to ship

Ship MCP to your stack in 60 seconds.

Spin up AnythingMCP on managed Cloud or self-host it on your infrastructure. Free for 7 days, no credit card.

関連ガイド