ابزار ابزار: یک اپراتور MCP Kubernetes

مقدمه
با تکیه بر بحث قبلی ما در مورد بنگاه هایی که نیاز به میزبانی اختصاصی برای سرورهای MCP و راه حل مبتنی بر Kubernetes Toolhive دارند ، ما هیجان زده هستیم که اپراتور جدید Kubernetes خود را برای ابزار ابزار اعلام کنیم. این ابزار تخصصی استقرار ایمن سرورهای MCP را به محیط های Kubernetes برای شرکت ها و مهندسان ساده می کند.
در این مقاله ، ما روشهای عملی برای استفاده از قابلیت های این اپراتور جدید را بررسی خواهیم کرد.
بیایید درست پرش کنیم! 🚀
استقرار اپراتور
برای نصب اپراتور ابزار ابزار ، فرض کرده ایم که در حال حاضر یک خوشه Kubernetes با یک کنترلر Ingress در دسترس است. ما برای این پست از نوع استفاده کرده ایم زیرا تنظیم ساده ، رایگان و آسان برای استفاده است.
برای راه اندازی برنامه ریزی محلی ساده با نوع ، ما از یک IP اساسی با تعادل بار نوع استفاده می کنیم – برای مراحل آسان در مورد نحوه انجام این کار ، راهنمای ما را دنبال کنید. برای ساده نگه داشتن کارها ، ما در این مجموعه از نام میزبان محلی استفاده نخواهیم کرد.
اکنون ، با یک خوشه در حال اجرا ، دستورات زیر را اجرا کنید (به یاد داشته باشید که تنظیم کنید --kubeconfig
وت --kube-context
پرچم ها در صورت لزوم).
-
تعاریف منابع سفارشی اپراتور ToolHive (CRD) را اعمال کنید:
$ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/crds/toolhive.stacklok.dev_mcpservers.yaml
-
فضای نام اپراتور را ایجاد کنید:
$ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/namespace.yaml
-
منابع کنترل دسترسی مبتنی بر نقش (RBAC) منابع:
$ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/rbac.yaml $ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/toolhive_rbac.yaml
-
استقرار اپراتور:
$ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/operator.yaml
در این مرحله ، اپراتور Toolhive Kubernetes اکنون باید نصب و اجرا شود.
برای تأیید این موضوع ، موارد زیر را اجرا کنید:
$ kubectl get pods -n toolhive-system
NAME READY STATUS RESTARTS AGE
toolhive-operator-7f946d9c5-9s8dk 1/1 Running 0 59s
سرور MCP را مستقر کنید
اکنون برای نصب یک نمونه fetch
سرور MCP ، موارد زیر را اجرا کنید:
$ kubectl apply -f https://raw.githubusercontent.com/StacklokLabs/toolhive/main/deploy/operator/samples/mcpserver_fetch.yaml
برای تأیید این نصب ، موارد زیر را اجرا کنید:
$ kubectl get pods -n toolhive-system -l toolhive=true
NAME READY STATUS RESTARTS AGE
fetch-0 1/1 Running 0 115s
fetch-649c5b958c-nhjbq 1/1 Running 0 2m1s
همانطور که در بالا نشان داده شده است ، 2 غلاف در حال اجرا هستند. سرور Fetch MCP (fetch-0
) یک غلاف مرتبط با سرور MCP است StatefulSet
بشر دیگری – fetch-xxxxxxxxxx-xxxxx
– آیا سرور پروکسی است که با تمام ارتباطات بین fetch
سرور MCP و تماس گیرندگان خارجی.
با نگاهی به عقب ، بیایید نحوه ایجاد سرور MCP را مرور کنیم. در اینجا منبع سرور Fetch MCP است که ما برای خوشه استفاده کرده ایم.
apiVersion: toolhive.stacklok.dev/v1alpha1
kind: MCPServer
metadata:
name: fetch
namespace: toolhive-system
spec:
image: docker.io/mcp/fetch
transport: stdio
port: 8080
permissionProfile:
type: builtin
name: network
resources:
limits:
cpu: "100m"
memory: "128Mi"
requests:
cpu: "50m"
memory: "64Mi"
اپراتور Toolhive یک منبع سفارشی جدید به نام: مک پیروربشر در اینجا تجزیه و تحلیل پیکربندی MCPSERVER آورده شده است:
-
transport: stdio
– این باعث ایجاد سرور MCP می شود که فقط ترافیک stdin و stdout را فراهم می کند. در Kubernetes این منجر به اتصال سرور پروکسی از طریق API Kubernetes می شود. دسترسی دیگری به تماس گیرنده داده نمی شود. -
permissionProfile.type: builtin
– این به پروفایل های داخلی با ابزار ابزار اشاره می کند -
permissionProfile.name: network
– اتصالات شبکه برون مرزی را به هر میزبان در هر درگاه (برای استفاده از تولید توصیه نمی شود) اجازه می دهد.
اکنون برای اتصال یک مشتری مثال مانند مکان نما به سرور MCP ما ، می توانیم این کار را به سادگی با یک رکورد ورود که توسط متعادل کننده بار که قبلاً ذکر شد فعال کنیم.
ما می توانیم ورودی ورود زیر را اعمال کنیم ، اطمینان حاصل کنیم که ingressClassName
مطابق آنچه در خوشه ما داریم مطابقت دارد.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mcp-fetch-ingress
namespace: toolhive-system
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mcp-fetch-proxy
port:
number: 8080
در این مرحله ما باید بتوانیم با استفاده از آدرس IP خارجی متعادل بار خود ، به سرور MCP در حال اجرا متصل شویم.
توجه: اگر شما نوع دیگری را برای خوشه انتخاب نکرده اید و یک تنظیم متعادل بار متفاوت از آنچه در این پست دنبال می شود ، باید تغییرات مربوط به پیکربندی خود را ایجاد کنید تا ترافیک Ingress را به سرویس پروکسی Fetch Server ارسال کنید.
با توجه به این واقعیت که ما از CLI برای ایجاد سرور MCP استفاده نکردیم ، پیکربندی سرور به طور خودکار در تنظیمات مشتری محلی ما اعمال نمی شود. به همین دلیل ، ما باید پیکربندی را به صورت دستی اضافه کنیم.
برای مکان نما ، ما به آنجا می رویم Users/$USERNAME/.cursor/mcp.json
، اطمینان از جایگزینی $USERNAME
با نام کاربری دایرکتوری خانه ما و موارد زیر را اضافه می کنیم:
{
"mcpServers": {
"fetch": {"url": "http://localhost:8080/sse#fetch"}
}
}
حال ، اگر وارد چت مکان نما شویم ، و از آن می خواهیم که محتوای یک صفحه وب را واگذار کند ، باید از ما بخواهد که برای استفاده از آنها تأیید کند fetch
سرور MCP و سپس محتوا را برگردانید.
اکنون اگر سیاهههای مربوط را برای fetch
سرور MCP.
$ {"jsonrpc": "2.0" ، "id": 2 ، "نتیجه": {"محتوا":[{"type":"text","text":"Contents of https://chrisjburns.com/:\n\n\nchrisjburns\n\n# Chris Burns\n\n## Software engineer\n\n"}]، "iserror": false}} $ "jsonrpc": "2.0" ، "id": 2 ، "نتیجه": {"محتوا":[{"type":"text","text":"Content type text/html; charset=utf-8 cannot be simplified to markdown, but here is the raw content:\nContents of https://chrisjburns.com/:\nchrisjburns 
Software engineer

"}]، "iserror": false}}
در آنجا ما آن را داریم ، یک سرور MCP ، با استفاده از اپراتور جدید Toolhive که در Kubernetes ایجاد شده است.
خلاصه
در این مرحله ، ما امیدواریم که بتوانیم قدرتی را که این امر به مهندسان و بنگاه هایی که می خواهند سرورهای MCP را در Kubernetes ایجاد کنند ، مشاهده کند. برای کسانی که قبلاً با اپراتورها بازی کرده اند و از آنها استفاده کرده اند ، آنها می دانند که در هنگام ایجاد و مدیریت بارهای کاری در داخل Kubernetes ، قابلیت های بالقوه بی نظیر است. ما در Stacklok می دانیم که در پشت اپراتور می توانیم پیچیدگی های زیادی را پنهان کنیم که به طور معمول بر روی مهندس سنگین می شود. ما واقعاً از انتشار این موضوع هیجان زده هستیم و حتی بیشتر هیجان زده می شویم که می بینیم کجا می رود.
آن را امتحان کنید و به ما بگویید که چه فکر می کنید!
پیوندهای اساسی: