MCPサーバーを作成する
MCPサーバーを作って、ローカルLLM環境からMCPサーバーを呼び出してみる。
この長大なシステムを構築すると、以下の流れで1+1の結果を知ることができる。
MCPサーバーとは
Introduction - Model Context Protocol
MCP(Model Context Protocol) はLLMとツールをつなぐプロトコルである。
MCPサーバーはLLMの手足になる。
今回は整数と整数の足し算を行って返事するMCPサーバーを作成する。
Clineとは
ClineとはAIエージェントである。VSCode向けの拡張機能として提供されており、Ollamaと簡単に連携できる。
ローカルLLM環境を構築する
LLM環境がない場合、以下の記事でローカルLLM環境を構築することができる。
OllamaにGemma 3をインストールする
今回はLLMにgemma3:27bを使うことにする。
docker-compose.ymlのあるディレクトリ上で、以下のコマンドを実行する。
1 2 3 4 | |
大容量のダウンロードになるので注意する。(17GBらしい)
VSCodeにClineをインストールする
VSCodeの拡張機能のペインからClineを検索し、インストールする。
MCPサーバーを作成する
PythonでMCPサーバーを作成する。
1 2 | |
FastMCPというパッケージを使うと簡単にMCPサーバーを作成できる。
GitHub - jlowin/fastmcp: 🚀 The fast, Pythonic way to build MCP servers and clients
Pythonの仮想環境を作成し、FastMCPをインストールする。
1 2 3 | |
server.pyにMCPサーバーとしてのコードを書く。
| server.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
コードを書き終えたら以下のコマンドを実行して、サーバーを起動する。
1 | |
MCPサーバーを登録する
Clineの拡張機能からMCPサーバーを登録する。
以下のようにVSCodeのClineのペインを選択し、Settingsを選択する。
以下のように API Configurationで設定を行う。
API ProviderにOllama、ModelにGemma 3を指定し、Doneのボタンを押下する。
もし日本語が好きなら、以下のようにGeneral SettingsにあるPreferred LanguageからJapanese - 日本語を設定することができる。
Note
ただし設定しても無視されることがある。
以下のように MCP Serversを選択し、Installedタブを選択する。
以下のようにConfigure MCP Serversを選択し、JSONを記述する。
| cline_mcp_settings.json | |
|---|---|
1 2 3 4 5 6 7 8 | |
LLMに1+1を計算させる
準備が整ったので、Clineの対話画面から以下のように指示を出す。
以下のようにLLMの返答を確認し、問題なさそうであればApproveを選択する。
結果を確認する。
なんと1+1は2という結果を得ることができた。
学び
大切なのは1+1の結果ではなく、MCPサーバーを用意してLLMに好きなものを生やせるということである。
1+1を計算する処理を書き換えれば対話でデータベースを更新するとか、バグを報告するとか、モーターを動かすとか、何でもできるのだ。
既にすごい人たちによって色んなMCPサーバーが開発されているから、それらを利用することもできる。
メモ
cline_mcp_settings.jsonの書き方は情報が少ないように感じた。
Cline公式のドキュメントから 今回使ったMCPサーバーへの転送プロトコルであるStreamable HTTPに関して説明を見つけることができなかった。
MCPサーバーの設定については以下のページで説明されているが、載っているのは標準入出力を使ってローカルで転送するSTDIOとHTTPでネットワーク越しに転送できるが古い方式のSSEだけである。
Configuring MCP Servers - Cline
しかし以下のIssueによると、ClineはStreamable HTTPに対応しているようである。
Cline does not work with StreamableHttpTransport based MCP servers · Issue #3315 · cline/cline
メモ2
前回の記事でインストールしたgpt-oss:20bを使おうとしてもUnexpected API Response: The language model did not provide any assistant messages. This may indicate an issue with the API or the model's output.というエラーが出るので、今回はgemma3:27bをインストールすることにした。









