書籍「Laravelの教科書」Laravel13対応サポートガイド公開中 → ダウンロードはこちら

ローカルでMCPサーバーを自作してClaudeで使う方法【Claude Desktop / Claude Code】

AI系ツール

PythonでMCPサーバーを自作し、Claude DesktopやClaude Codeで使う方法を解説します。

WindowsとMac両対応で、シンプルなサンプルコードを使って説明します。

【前提条件】PythonとUVのインストールが必要となります。Macでのインストール方法については、下記記事にまとめているので、併せて参考にしてください。

ローカルでMCPサーバーを自作

まずはプロジェクトディレクトリを作成します。下記コマンドでuvを初期化します。

uv init

仮想環境を作成します。

uv venv

仮想環境を有効化します。

【Mac】

source .venv/bin/activate

【Windows】

.venv\Scripts\activate

次に、fastmcpをいれておきます。

fastmcpとはPythonでMCPサーバーを簡単に作成できるライブラリです。

uv add fastmcp

これによって、プロジェクト内のpyproject.tomlファイル内には次のようになります。

【pyproject.toml】

[project]
name = "mymcp"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
    "fastmcp>=2.12.4",
]
– `dependencies`に`“fastmcp”`が入っているか確認してください。 もし空欄だったり、入っていない場合は手動で追加します
– `name`と`description`は自由に変更できますが、`name`に「mcp」など既存のパッケージ名を使うとインポートエラーが発生するので避けてください

main.pyに次のようにいれておきます。

from fastmcp import FastMCP

mcp = FastMCP()

@mcp.tool()
def add_numbers(number1: int, number2: int) -> int:
    sum = number1 + number2
    return sum

if __name__ == "__main__":
    mcp.run()
– デコレーター`@mcp.tool()`(sなし)と関数定義`def`の間に空行を入れないでください。
– 空行を入れると、デコレーターが関数に正しく適用されず、MCPサーバーがツールとして認識できなくなります

これで準備OKです。下記コマンドを実行してみます。

uv run main.py

下記のような画面が表示されればOKです。この後、Ctrl+Cで止めておいても大丈夫です。

作成したMCPサーバーをClaude Desktopで使う

まずはClaude Desktopをインストールしておきます。

Claude Desktopを起動します。

サイドバー左下/設定/開発者を選択。【設定を編集】ボタンをクリックすると、設定用ファイルclaude_desktop_config.jsonが選択されます。このファイルを開きます。

*上記では既にいくつか登録されたものがありますが、最初は何も表示されない画面となります。

claude_desktop_config.json に次のように指定します。–directoryの下には、実際にMCPサーバーを作成したディレクトリを設定します。

【Mac】

まず、uvのフルパスを確認します。

which uv

実行結果をcommandに指定します。たとえば、実行結果が「/Users/user/.local/bin/uv」であった場合は、下記のようにいれます。

{
    "mcpServers": {
        "my-mcp": {
            "command": "/Users/user/.local/bin/uv",
            "args": [
            "--directory",
            "/Users/user/Documents/mcp",
            "run",
            "main.py"
            ]
        }
    }
}
–directory: MCPサーバーのプロジェクトを作成したディレクトリのフルパスを指定します。たとえば、/Users/user/Documents/mcpの配下にMCPサーバーを作成した場合は、上記のように、/Users/user/Documents/mcpと記述します。

【Windows】

Windowsの場合は、commandは”uv”のみでOKです。

{
  "mcpServers": {
    "my-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\python\\mcp\\myMCP",
        "run",
        "main.py"
      ]
    }
  }
}
–directory: MCPサーバーのプロジェクトを作成したディレクトリのフルパスを指定します。パスの区切りは\\(バックスラッシュ2つ)で記述します。たとえば、C:\python\mcp\myMCPの配下にMCPサーバーを作成した場合は、上記のように、C:\\python\\mcp\\myMCPと記述します

Claude Desktopを再起動します。Macの場合は、許可を求める画面になります。「許可」をクリックします。(Windowの場合は、特にこの画面はありませんでした)

【検索とツール】ボタン(+ボタンの右)をクリックすると、登録したMCPサーバーの名前が確認できます。

下記のように質問をしてみます。すると、作成したMCPサーバー内の関数を使って質問に答えようとしてくれます。なお、MCPサーバーについて使用許可がでてくるので、「一度だけ許可」を選択して進めてみましょう。

「my-mcpを使って答えてください。3と5です」といった形で質問をします。

計算結果が表示されます。

エラーになる場合

Claude Desktopを起動した際に、もしMCPサーバー接続エラーになる場合は、下記のようにエラーメッセージが表示されます。開発者設定画面よりログを確認します。

原因は色々だと思いますが、下記に該当するものがないか確認してみてください。

  • claude_desktop_config.jsonのパスが間違えていないか
  • Macの場合:which uvで確認したパスと一致しているか
  • Windowsの場合:パスの区切りが\\(バックスラッシュ2つ)になっているか
  • プロジェクトディレクトリのパスが正しいか
  • Windowsの場合:Claude Desktopが完全に終了した後に再起動したか(終了したかどうかタスクマネージャーでチェック)

作成したMCPサーバーをClaude Codeで使う

プロジェクトで使用するMCPサーバーは、プロジェクト内に.mcp.jsonファイルを作成します。下記のようにいれておきます。

commandの書き方は、Claude Desktopと同様です(上記説明ご覧ください)。

【Mac】

{
  "mcpServers": {
    "my-mcp": {
      "type": "stdio",
      "command": "/Users/user/.local/bin/uv",
      "args": [
        "--directory",
        "/Users/user/Documents/mcp",
        "run",
        "main.py"
      ]
    }
  }
}

【Windows】

{
    "mcpServers": {
        "my-mcp": {
            "type": "stdio",
            "command": "uv",
            "args": [
                "--directory",
                "C:/python/mcp/myMCP",
                "run",
                "main.py"
            ]
        }
    }
}
typeは、MCPサーバーとの通信方式を示します(stdioは標準入出力による通信)。省略しても動作する可能性がありますが、念のため指定しています。

Claude Codeを立ち上げると、新たなMCPサーバーがあるが使ってよいかどうか聞かれます。2番目の「Use this MCP server」を選択します。

Claude Code内で「my mcpを使ってください。3と6です。」といった形で質問をしてみます。

MCPサーバーが使われていることが分かる画面が表示されます。

MCPを使って結果が返ってきます。

なお、ClaudeCode内で/mcpを実行すると、現在利用できるmcpサーバーを確認できます。

さいごに

今回はローカルで作成したMCPサーバーを利用する方法をご紹介しました。

MCPサーバー自体はテスト用にかなりシンプルなものを使いましたが、こちらは、ご希望によって変更してください。

記事コンテンツ更新の際には、Xにてご紹介しています。よろしければフォローしてください。

またYoutubeも更新中です。過去にMCPについて分かりやすく紹介した動画などもあります。

ご興味あれば、併せてご覧ください。

AI系ツールClaude生成AI関連

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる
 

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した本を書きました。 書店やAmazon等のオンラインショップにて販売中
最新版Laravel13対応用サポートガイド(PDF)あり

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。
最新版Laravel13対応用
サポートガイド(PDF)あり

書籍の詳細を見てみる
シェアする
Twitter始めました。

コメント

タイトルとURLをコピーしました