MCP
そもそも「MCP」とはなにか
MCP(Model Context Protocol)なので プロトコル
ふんわり「MCP」と言って何を指していたかも定かでないが、からあげさんの図がめちゃ分かりやすい
https://scrapbox.io/files/680c80d443e797f57c9c36a5.png
MCPホスト(クライアントをホスティングする)
VSCode+ClineあたりをMCPホストとするなら 設定ファイルを書けばよいだけ
たとえば「MarkItDown-MCP」というMCPサーバを利用するなら
uvをインストールして、JSONで、{"mcpServers": {"markitdown": {"command": "uvx", "args":["markitdown-mcp"]}} と書くだけ
MarkItDownはスライドやPDFをmarkdownに変換してくれるツール
uvxは uv tool run コマンドのエイリアス
CSエージェントシステムを構築するなら、モデルが使用する MCPホストを自前で用意する 必要があるだろう
python+uv
First, create a new Python project with uv
Setting Up Your API Key
Creating the Client
basic client class
Server Connection Management
Query Processing Logic
Interactive Chat Interface
Main Entry Point
MCPサーバ
自社サービスやアプリをLLMに使わせたいならMCPサーバがあると良さそう
とはいえ、MCPサーバが使うAPIなどが整備されていないと何もできないが
MCPサーバの 主要機能カテゴリ
Resources: モデルを外部のデータを提供する
Prompts: 標準化された対話パターンを定義(ワークフロー構築も)
Tools: モデルが外部に作用するツールを定義(コマンドやブラウザ、APIなど)
その他の機能カテゴリ
Smapling: MCPサーバからモデルに必要なものをリクエストする
サーバーが機能を提供するうえで、モデルに補完を要求できるようになる
ステップを分けるとか、人間による承認を要求するとか
エージェンティックな動作 ができるようなるとか
実装されていないClientも多い模様
Roots: サーバーの捜査範囲を定義する
fileパスやURIにおいてrootを指定する感じ
pythonでMCPサーバを構築するSDKと、からあげさんのサンプル
MCPアーキテクチャ概要(Resources/Prompts/Tools/Sampling/Roots)など