[MCP]ノンプログラマーのためのMCP入門 MCPサーバーを自作しよう!前編

mcp5MCP

どうも、ケニー(tsujikenzo)です。このシリーズでは、「ノンプログラマーのためのMCP入門」をお届けします。今日は第5回目です。

おさらい

前回は、「MCPサーバーを接続してみよう!」をお届けしました。パターンA:uvx方式を使って、かんたんにMCPサーバーに接続できましたね。

今日は、「自作MCPサーバーの準備をしよう!【前編】」をお届けします。自分のPCにあるMCPサーバーをAIにつなぐ方法、パターンB:uv方式をマスターしましょう。

1. なぜuv方式なのか?

前回使ったuvx方式は、インターネット上に公開されている完成品を、サクッと使うばあいに便利でした。

これから、MCPサーバーを自作するにあたって、

  • まず、自分のPC上に、MCPサーバー(ファイル)を作成する
  • 追加したい機能などを上書き、保存する
  • AIホスト(Claude desktop)を再起動して、AIの能力をアップデートしていく
  • (必要であれば)インターネット上に公開する

というサイクルで、開発していきます。

2. ローカルMCPサーバーの開発

今回は、インターネットには絶対に存在しない、あなたのPCの中にしかないテキストファイルを、AIに読み取らせる体験をしてみましょう。

まず、下準備として、階層構造の【3】と【4】をセットアップします。

ステップ⓪:uvのインストール(Windowsのばあい)

この作業は1度だけでOKです。

ターミナル(PowerShell)を開き、以下のコマンドを実行します。

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

インストールが完了したら、ターミナルを再起動しましょう。

uvのバージョンを確認してみます。

uv --version

バージョンが返ってくれば、インストールは成功しています。もしうまくいかないばあいは、PCを再起動してみましょう。

ステップ①:空のプロジェクト(フォルダ)を作成

この作業は、MCPサーバーを作成するごとに行います。

  1. デスクトップに mcp-test-memo というフォルダを作成します。
  2. ターミナル(PowerShell)を立ち上げます。
  3. カレントディレクトリを、先ほど作成したmcp-test-memoフォルダに移動します。
PS C:\Users\Kenzo> cd C:\Users\Kenzo\Desktop\mcp-test-memo
PS C:\Users\Kenzo\Desktop\mcp-test-memo>
  1. プロジェクトの初期化として、このフォルダを定義します。※実行すると、フォルダの中に pyproject.toml という設計図ファイルや、main.pyというサンプルプログラム(雛形)が作成されます。
uv init
    1. 開発キット(FastMCP)をインストールします。※実行すると、ネット上から FastMCP というライブラリがダウンロードされ、フォルダの中には uv.lock というファイルや .venv という隠しフォルダが作成されます。
    uv add fastmcp

    以上です。

    これで、第3回で学んだ「実行・インフラ層(階層構造の第3層)」のセットアップが完了しました!

    ステップ②:ダミーデータの作成

    mcp-test-memoフォルダの中に、my_secretという名前でテキストファイルを作成します。※拡張子は自動で.txtになります。

    本文に「私がいま一番食べたいのは、〇〇ラーメンです」 と書いて保存します。

    このダミーデータに、AI(Claude desktop)がアクセスできるのか、試してみましょう。

    ステップ③:AIに「MCPサーバー」を書かせる

    それでは、MCPサーバーの中身を実装します。

    中身のプログラムは、生成AIに書かせます。GeminiでもChatGPTでも、なんでも構わないです。

    AIへの発注プロンプト例:「PythonのFastMCPを使って、MCPサーバーを作りたいです。同じフォルダにある my_secret.txt というファイルを読み込んで、その中身をテキストで返すだけのシンプルな『ツール(Tool)』を1つ作ってください。ファイル名は app.py とします。コードだけ出力してください。」

    テキストファイルを作成しましょう。生成AIが書いてくれたコードをコピーして、フォルダの中に app.py として保存します。

    from fastmcp import FastMCP
    from pathlib import Path
    
    mcp = FastMCP("secret-reader")
    
    @mcp.tool()
    def read_secret() -> str:
        """my_secret.txt の中身を返す"""
        path = Path(__file__).parent / "my_secret.txt"
        return path.read_text(encoding="utf-8")
    
    if __name__ == "__main__":
        mcp.run()

    保存するときに、必ずPythonファイルになっていることを確認してください!

    ステップ③:構成ファイル(JSON)を「uv方式」で書く

    最後に構成ファイルです。claude_desktop_config.json を開き、commandプロパティに、パターンB:uv(ディレクトリ指定)として追加します。

    args(引数)には、プロジェクトフォルダの場所や、app.pyをrunするように、指示します。※フォルダの場所は、ご自身の環境に合わせた絶対パスで指定してください。

    {
      "mcpServers": {
       "my-secret-tool":{
        "command": "uv",
        "args": [
          "--directory",
          "C:/Users/Kenzo/Desktop/mcp-test-memo",
          "run",
          "app.py"
       ]
      },
      "mcp-server-fetch": {} //前回作成した分
    }

    3. 接続確認

    前回と同様に、MCPサーバーが接続できているか、確認しましょう。

    接続できているようですね。ちなみに、追加したMCPサーバーは、リスト表示になっていて、表示が切り替えできます。

    それでは、チャット欄でこう話しかけてみてください。

    プロンプト: 「my_secret.txtには、何が書いてありますか?」

    AIが接続の許可を求めてきたら「許可」を押します。


    AIが、あなたの秘密を答えたら成功です。

    おめでとうございます! ついにAIは、世界中であなたしか持っていない情報にアクセスし、それを元に考える「自分専用のエージェント」へと進化したのです。

    まとめ

    今回は、MCPサーバーの自作に欠かせない「uv(ディレクトリ指定)方式」についてお届けしました。

    • uvx: ネットから知恵を借りるための道
    • uv: 自分の手元にある知恵をAIに繋ぐための道

    自分のPCにあるファイルを読み取ることができたなら、次はエクセル(CSV)を読み取らせたり、自分の業務マニュアルを学習させたり……可能性は無限に広がります。

    さて、いよいよ次回はこのシリーズの最終回です。

    最後は、「価値と未来 ―― エージェント時代を生き抜く『あなたの価値』」
    MCPというお作法を知り、AIに「手足」を与えられるようになったあなたの市場価値はどう変わるのか。AI疲れを卒業し、AIを指揮する側へと回るための、最後のメッセージをお届けします。

    お楽しみに!

    参考資料

    このシリーズの目次

    1. [MCP]はじめに(MCPとは)
    2. [MCP]骨格と用語(クライアント/サーバー、ツール等)
    3. [MCP]環境と構成ファイル(どうやってつながるのか)
    4. [MCP]MCPサーバーを接続してみよう!(ハンズオン)
    5. [MCP]MCPサーバーを自作しよう!前編
    6. [MCP]MCPサーバーを自作しよう!後編
    タイトルとURLをコピーしました