注意事項
この記事は下記記事を参考に作成しました。
結論から先にいうと
(zshを使う場合 / bashに置き換えても動くと思います)
claude_desktop_config.json
に以下のような内容を書く
{
"mcpServers": {
"you_mcp_name": {
"command": "wsl.exe",
"args": [
"zsh",
"-c",
"zsh (mcpサーバをwsl内で起動するスクリプトのパス)"
]
}
}
}
前提
MCPサーバを自前で立てたことがある前提で話すため、ライブラリのインストールや環境構築の話はしません。
経緯
下記の記事を参考に、ClaudeDesktopの、MCPサーバを触ってみました。
ざっくり開発者から見たMCPサーバってどんな感じ?
Claude Desktopを前提に話します。
下記のように @mcp.tool()
をつけた関数を定義しておくと、関数のコメントで定義されている内容がClaudeに渡ります。
Claude Desktopが、会話に応じて、この渡した関数を呼んでくれます。
from typing import Any
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("hidamari_character")
@mcp.tool()
async def get_users_favorite_hidamari_schetch_caractor(user_name:str) -> str:
"""get users favorite hidamari schetch caractor
(ユーザー名ごとに、ひだまりスケッチの好きなキャラクターを返す)
Args:
user_name: ユーザー名
"""
# Claudeが上記メソッド定義と、関数についたコメントを読み込んで、いい感じに呼び出してくれる。
if user_name == "masachaco":
return "宮ちゃんです"
return "該当のユーザーの情報は見つかりませんでした"
def main():
# 標準入力で受け付ける
mcp.run(transport='stdio')
if __name__ == "__main__":
# MCPサーバを起動
main()
Claude Desktopの設定ファイル claude_desktop_config.json
に上記を呼び出すための、コマンドを記載する必要があります。
コマンドの内容は、上記の場合だとPythonコードを実行する内容を記載すればよいです。
Windows上のPythonで書かれたMCPサーバなら下記のようになるはずです。
{
"mcpServers": {
"weather": {
"command": "python",
"args": [
"C:\\mcp_example_dir\\main.py"
]
}
}
}
そのまんまですね。pythonで main.pyを実行しなさい。という定義になります。
これを指定しておくと、Claude Desktopは自動的に、上記の main.py
を実行し、MCPサーバを立ち上げ、定義した関数をいい感じに呼び出せるようになります。
WSL上のMCPサーバを立ち上げるにはどうすればいいの?
それでは、WSL上のMCPサーバを立ち上げるにはどうすればいいんでしょうか。
Dockerを使う手もありますが、今回は、Dockerは使わずWSL上のコードを実行したいです。
答えは、下記のように wsl.exe
を指定して、コマンドを実行させればOKでした。
私はzshを使用しているので、zshを指定して実行しています。
{
"mcpServers": {
"you_mcp_name": {
"command": "wsl.exe",
"args": [
"zsh",
"-c",
"zsh (mcpサーバをwsl内で起動するスクリプトのパス)"
]
}
}
}
mcpサーバをwsl内で起動するスクリプトのパスはWSL上のパスを指定します。
mcpサーバをwsl内で起動するスクリプトは下記のような形にしました。
#!/bin/zsh
cd /(mcp サーバのあるディレクトリへ移動)
# 環境変数など読み込み
source ~/.zshrc
# MCPサーバを実行する
python3 simple_mcp.py
実行結果
※ MCPの定義を読み直させるためには、Claude Desktopを再起動する必要があります。
うまく設定できると、下記のように、右下nツールマークが表示され
ツールマークをクリックすると、作成したMCPの説明がでます。
実行してみるとうまく、ツールを使って、私の好みが取得できたようです。
結論
思ったよりもサーバを実装する手順が簡単すぎてびっくりした