0
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サーバ環境構築メモ(Client: Claude for Desktop)

Last updated at Posted at 2025-08-18

インストール

オプション

  • uv
    (windowsの場合)Powershellで以下コマンド
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

MCP環境構築

python用mcpライブラリインストール

を使う。

pipでもよいが ``` # pipを使う場合 pip install "mcp[cli]" ```
公式がuvを推奨しているのでuvの手順で進む

demoの部分は任意のフォルダ名

uv init demo
cd demo
uv add "mcp[cli]"

以下のファイルが作成されているはず

demo
├main.py
├pyproject.toml
├README.md
└(省略)その他のファイル

MCPサーバ作成

main.pyを以下のように書き換える。とりあえず以下を張り付ければOK

"""
FastMCP クイックスタートの例

`examples/snippets/clients` ディレクトリに移動して、以下を実行:
    uv run server fastmcp_quickstart stdio
"""

from mcp.server.fastmcp import FastMCP

# MCPサーバーの作成
mcp = FastMCP("デモ")

# 足し算ツールの追加
@mcp.tool()
def add(a: int, b: int) -> int:
    """2つの数値の足し算"""
    return a + b


# 動的な挨拶リソースの追加
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """パーソナライズされた挨拶の取得"""
    return f"おはきーた、{name}さん!"


# プロンプトの追加
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """挨拶プロンプトの生成"""
    styles = {
        "friendly": "暖かく、フレンドリーな挨拶を書いてください。語尾を「だにゃん」にしてください。",
        "formal": "フォーマルで、プロフェッショナルな挨拶を書いてください。語尾を「であります」にしてください。",
        "casual": "カジュアルで、リラックスした挨拶を書いてください。語尾を「でやんす」にしてください。",
    }

    # スタイルに応じた指示と名前を組み合わせたプロンプトの返却
    return f"{name}という名前の人に向けて、{styles.get(style, styles['friendly'])}"

mcp.toolで簡単な足し算を
mcp.resourceで独自の挨拶ルールを
mcp.promptoで独自のプロンプトを
それぞれ定義した。
(変化がわかりやすいようにふざけた文を作るように設定してある。)
これでClaudeからそれ関係の指示をすればこのルールに乗っかった回答をする・・・ハズ

Claude Desktopにインストール

uv run mcp install main.py

MCP Inspectorというツールを使って以下でデバッグモードで起動させることもできる。

uv run mcp dev main.py

とりあえずmcp installコマンドでインストール後は
Claude Desktopを再起動すると上記で作成したサーバーが追加される
(普通に×押しても閉じないので ファイル→終了 から再起動必要。)
image.png

「2たす3は」などの指示を行うと、初回はMCPのツールを使うかの確認画面が出るはず。

また、この状態でmcp.promptで作成したgreet_user()をテストしようと「田中さんへの挨拶文を作って」と指示したがうまく動かなかった。(MCPで定義した関数を通らなかった。)
恐らく、挨拶に特異性がないのでMCPに頼るまでもないとAIが判断した可能性がある。
「greet_userを使って田中さんへの挨拶を作って」と指示したらばMCPで定義したプロンプトを使ってあいさつ文を作った。(語尾が「だにゃん」になった。)

また、mcp.resourceに至っては認識すらしていなかった。(MCP Inspctorで確認してlistされなかった)
以下のようなIssueがあるようなので一旦放置しておく。
https://github.com/modelcontextprotocol/python-sdk/issues/268

とりあえず2025/8現在だとmcp.tool以外はそこまで動作が安定していない ようだ。
Claude自身に解決策を聞いてもmcp.toolだと安定するよ、という返答が来るのみであった。

mcp installじゃなくて設定ファイルから手動でインストールする方法

基本的にmcp installを使えば不要なのだが、
claude_desktop_config.jsに関しては設定を追加するときに直接いじることがあるので記載

%HOMEPATH%\AppData\Roaming\Claude\claude_desktop_config.jsonにあるファイルをオープン

VS Codeで開く場合のコマンドコピペ用

code %HOMEPATH%\AppData\Roaming\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "\u30c7\u30e2": {
      "command": "C:\\Users\\<ユーザ名>\\.local\\bin\\uv.EXE",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "mcp",
        "run",
        "C:\\<main.pyまでのパス>\\main.py"
      ]
    }
  }
}

色んなサービスと接続する

サービス側に設定しつつ、claude_desktop_config.jsonの設定ファイルに反映させる
基本的にclaude_desktop_config.jsonの設定は簡単なのだが、サービス側の設定がめんどくさい

ローカルファイル

npm install -g @modelcontextprotocol/server-filesystem
実行後
claude_desktop_config.jsonに"filesystem"{~}を追加
(filesystem{~}の前の行の閉じ } を }, とカンマを追加してください。以降は追加部分のみ記載します)

{
  "mcpServers": {
    "~"{
    ~
    },

    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "C:\\Users\\Hoge\\Documents",
        "C:\\Users\\Hoge\\Desktop" ★アクセスさせたいフォルダ列挙
      ]
    }

  }
}

ブラウザ

npm install -g @modelcontextprotocol/server-playwright
実行後

    "playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-playwright"
      ]
    }

Gmail

refs https://github.com/GongRzhe/Gmail-MCP-Server?tab=readme-ov-file#installing-manually

GCP側の設定

  • (なければ)プロジェクトの作成
  • Gmail APIを有効
  • APIとサービス>認証情報>認証情報を作成>OAuthクライアントID>ウェブアプリケーション (デスクトップアプリケーションのほうが簡単かも。未確認)
  • 承認済みのリダイレクトURIにhttp://localhost:3000/oauth2callbackを設定
  • 作成を押してしばらく待つとクライアント一覧に⇩ボタンが出るはずなのでjsonダウンロード
  • GCPの仕様変更でクライアントシークレットを作ったタイミングでしかダウンロードボタンが表示されなくなった。見逃した場合はAdd Secretから再度クライアントシークレット作成し、ダウンロードボタン⇩押下

claude_desktop_config.jsonの設定

Home Directory(Windowsの場合C:\Users<ユーザー名>)に
.gmail-mcpフォルダを作成し、先ほどダウンロードしたjsonをgcp-oauth.keys.jsonにリネームして格納

claude_desktop_config.jsonに以下slack{~}部分を追加

    "gmail": {
      "command": "npx",
      "args": [
        "@gongrzhe/server-gmail-autoauth-mcp"
      ]
    }

Slack

Slack側の設定

  • https://api.slack.com/apps
    にアクセス
  • Create New App > From Scratch > 好きなアプリ名と対象のワークスペース
  • OAuth & Permissions > Add an OAuth Scope
    以下を追加
    channels:history (会話取得)
    groupes:history (グループの会話取得)
    channels:read (チャンネル情報)
    chat:write (メッセージ送信)
    users:read (ユーザー情報)
    その他必要に応じてreactions:write(リアクション) users:read.email(メール)あたり
  • OAuth Tokens > Install to <ワークスペース名>を押下
    Oauth Tokeが表示されるのでコピーしておく
  • Slackでブラウザでアクセスして、該当ワークスペースを開く
    URL中の以下のT~の部分が「チームID」なのでメモっておく。
    https://app.slack.com/client/TXXXXXXXXXXX
    (ところでChromeでSlackはじかれるようになった???)
  • Botに動いてもらいたい部屋で/invite @Bot名で招待しておく

claude_desktop_config.jsonの設定

以下slack{~}部分を追加

    "slack": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-slack"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "<OauthToken>",
        "SLACK_TEAM_ID": "<TeamID>"
      }
    }
0
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
0
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?