tamoko's blog

技術ブログ風日記

  • Tags
  • About
  • Archives
  1. ホーム
  2. Articles
  3. MCPのドキュメントを読んでみた感想とチュートリアルで躓いた部分

MCPのドキュメントを読んでみた感想とチュートリアルで躓いた部分

2025年12月6日 tamako

https://modelcontextprotocol.io/docs/getting-started/intro

↑ こちらのドキュメントとチュートリアルを読んだ際の理解したことと躓いた部分をまとめる。

MCPの全体像

MCPホスト、MCPクライアント、MCPサーバーの概念を理解する。

  • MCPホスト

    • VS Code、Cursor、Claude for Desktopなどの実際にユーザーが使用するツールのことを指している。
    • LLM自体ではないことに注意!
  • MCPクライアント

    • MCPホスト内に存在するMCPサーバーとやり取りするコンポーネントを指す。
    • MCPのルールに則って通信を行う。
    • MCPサーバー1つに対し、MCPクライアントは1つ
      • ネットで1つのMCPクライアントから複数のMCPサーバーと通信を行っているような図があるが、実装上MCPクライアントは複数ある。
      • https://modelcontextprotocol.io/docs/learn/client-concepts
  • MCPサーバー

    • MCPホストの外にあるサービス等(Googleカレンダー, GitHub, ローカルPCのファイルシステム)をいろいろ操作できる機能が備わったサーバー
    • MCPのルールに則って通信を行う。
    • ローカルMCPサーバーとリモートMCPサーバーがある。

全体像

MCPサーバーとクライアントのやりとり

MCPサーバーとクライアントのやりとり

MCPサーバー側の提供機能

  • Tools
    • LLMが実行できるアクションをクライアントに返す。
  • Resources
    • LLMが参照するデータをクライアントに返す。
    • Direct ResourcesとResource Templatesがある。
  • Prompts
    • 再利用可能なプロンプトテンプレートをクライアントに返す。
    • サーバー側があらかじめ使えそうなプロンプトを用意しておく。

MCPクライアント側の提供機能

  • Elicitation
    • サーバーがユーザーから特定の情報を要求できるようにするための機能
  • Roots
    • サーバーがアクセスできる範囲の境界を定義し、サーバーがどのディレクトリに重点を置くべきかを示す。
    • セキュリティ制限を強制するものではない点に注意!実際のセキュリティはオペレーティングシステムレベルで強制している
  • Sampling
    • MCPサーバーがクライアントのLLMを使って推論させる機能
    • 具体例を見たほうが分かりやすそう

チュートリアルで実際に躓いた部分(※ miseでuvを管理している人向け)

https://modelcontextprotocol.io/docs/develop/build-server

↑天気を調べるMCPサーバーを実装するチュートリアルで躓いたので記録しておく。

Claude Desktopに以下の記述を追加したが動かなかった。

"weather": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
        "run",
        "weather.py"
      ]
    }

調べてみると、どうやらuvのフルパスを指定しないといけないとのことで以下のように修正した。

参考:【Could not connect to MCP server】ClaudeのMCPサーバ接続エラーを解決する

"weather": {
      "command": "/Users/username/.local/share/mise/shims/uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
        "run",
        "weather.py"
      ]
    }

ただこれでも動かなかった。どうやらmiseを使ってuvを管理していると普通のwhichコマンドではuvのフルパスが得られないとのことだった。

以下のようにmise whichを使う必要がある。

❯ mise which uv
/Users/username/.local/share/mise/installs/uv/バージョン/uv-aarch64-apple-darwin/uv

得られたフルパスを記述するとClaude Desktopから天気を調べるMCPサーバーを使うことができた。

"weather": {
      "command": "/Users/username/.local/share/mise/installs/uv/バージョン/uv-aarch64-apple-darwin/uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
        "run",
        "weather.py"
      ]
    }

感想

いつかちゃんと調べようと思いつつ数ヶ月経過してしまった、、、。

まずはこの技術を利用して自分の作業効率を上げたいな。 もっと理解するためにも手が空いてるときにMCPサーバー実装したい。

参考

  • Introducing the Model Context Protocol
  • What is the Model Context Protocol (MCP)?
  • Build an MCP server
  • ちゃんと理解したい初心者のための「MCP」まとめ
  • 【Could not connect to MCP server】ClaudeのMCPサーバ接続エラーを解決する

目次

  • MCPの全体像
  • MCPサーバーとクライアントのやりとり
    • MCPサーバー側の提供機能
    • MCPクライアント側の提供機能
  • チュートリアルで実際に躓いた部分(※ miseでuvを管理している人向け)
  • 感想
  • 参考

最近の記事

  • ぐるぐる考えすぎない 2026年8月20日
  • Agent Skillsに触れてみる 2026年7月27日
  • マケイン風のデザイン 2026年7月25日
  • React入門ガイド — TypeScriptは分かる人向け 2026年7月25日
  • MCPのドキュメントを読んでみた感想とチュートリアルで躓いた部分 2025年12月6日

タグ

  • ポエム
  • 猫
← オフィスチェアを買った話 React入門ガイド — TypeScriptは分かる人向け →
GitHub X
© 2026 tamoko's blog · Powered by Hugo & Explore Theme.