はじめに
mcp(Model Context Protocol)は、ローカルや外部のアプリケーションをツールとしてLLMに組み込む仕組みです。この記事では「最小限のmcpサーバを作って動かす」ことをゴールとしています。
事前準備
- LMStudioのインストール
- Kubernetesクラスタへの接続(kubeconfig設定)
LMStudioのインストール
https://lmstudio.ai/ からインストールします。特に難しい手順は必要なく、簡単にインストールできます。
インストール後、Developerとしてセットアップを進め、お好きなモデルをダウンロードします(今回はgpt-oss-20bを使用しました)。
context確認
Kubernetesクラスタのコンテキストを確認します。以下のコマンドで確認できます。
kubectl config get-contexts
下記のような出力になるはずです。
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* context-ccjsb3bcxqq cluster-ccjsb3bcxqq user-ccjsb3bcxqq
context-cmkvk5xiqna cluster-cmkvk5xiqna user-cmkvk5xiqna
rancher-desktop rancher-desktop rancher-desktop
今回対象にするKubernetesクラスタのコンテキスト名をメモっておきます。今回はcontext-ccjsb3bcxqqを対象とします。
環境セットアップ
uvのインストール
curl -LsSf https://astral.sh/uv/install.sh | sh
インストールすると、PATHの設定に関する案内が出るのでそれに従ってPATHの設定を行います。
環境構築
uv init my-k8s-mcp
cd my-k8s-mcp
uv venv
uv add "mcp[cli]" "kubernetes"
LMStudioにmcpサーバーを登録する
画像のボタンをクリックし、「Edit mcp.json」を選択します。
![[Pasted image 20250902171408.png]]
エディタが表示されるので、下記のように編集します。
{
"mcpServers": {
"k8s-server": {
"command": "uv",
"args": [
"--directory",
"<mcpサーバのコードがあるディレクトリのパス>",
"run",
"main.py"
]
}
}
}
コード
作成したプロジェクト内にmain.pyがあるのでそれを編集します。
from mcp.server.fastmcp import FastMCP
from kubernetes import client, config
# Create an MCP server with debug enabled
mcp = FastMCP("Demo", debug=True)
config.load_kube_config(context="context-ccjsb3bcxqq")
v1 = client.CoreV1Api()
@mcp.tool()
def get_pod_status() -> list:
"""Get the status of a pod"""
pods = []
for pod in v1.list_namespaced_pod("default").items:
pods.append({
"name": pod.metadata.name,
"namespace": pod.metadata.namespace,
"status": pod.status.phase,
})
return pods
# Add this part to run the server
if __name__ == "__main__":
# stdioトランスポートを使用
print("Starting MCP server in stdio mode")
mcp.run(transport="stdio")
実行例
下記のように、正しくPodの状態が取得できていることがわかります(mcpサーバーをリスタートしていなかったのでもう一度確認してくださいとプロンプトを投げた)。

まとめ
このような感じで、非常に簡単にmcpサーバーを実装することができます。また、ローカルLLMを使うのでなんでも試しやすいというのも魅力的ですね。