5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCP入門: 簡単なMCPサーバーを作ってMCPのノリを確認してみた

Last updated at Posted at 2025-09-02

はじめに

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サーバーをリスタートしていなかったのでもう一度確認してくださいとプロンプトを投げた)。
スクリーンショット 2025-09-02 16.56.51.png

まとめ

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

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?