1
2

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 サーバーを作成する

Posted at

MCP サーバーを作って、ローカル LLM 環境から MCP サーバーを呼び出してみる。

構成図

この長大なシステムを構築すると、以下の流れで 1+1 の結果を知ることができる。

1+1を求める流れ

MCP サーバーとは

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のあるディレクトリ上で、以下のコマンドを実行する。

$ docker exec -it ollama ollama run gemma3:27b

# 終わったら以下を入力してプロンプトを抜ける
>>> /bye

大容量のダウンロードになるので注意する。(17GB らしい)

VSCode に Cline をインストールする

VSCode の拡張機能のペインから Cline を検索し、インストールする。

VSCode

MCP サーバーを作成する

Python で MCP サーバーを作成する。

.
└── server.py

FastMCP というパッケージを使うと簡単に MCP サーバーを作成できる。

Python の仮想環境を作成し、FastMCP をインストールする。

$ python -m venv .venv
$ source .venv/bin/activate
$ pip install fastmcp

server.pyに MCP サーバーとしてのコードを書く。

server.py
from typing import Annotated

from fastmcp import FastMCP
from pydantic import Field

mcp = FastMCP("Example MCP Server")


@mcp.tool
def sum(
    a: Annotated[int, Field(description="整数")],
    b: Annotated[int, Field(description="整数")],
) -> int:
    return a + b


if __name__ == "__main__":
    mcp.run(transport="http", host="0.0.0.0", port=8000, path="/mcp")

コードを書き終えたら以下のコマンドを実行して、サーバーを起動する。

$ python server.py

MCP サーバーを登録する

Cline の拡張機能から MCP サーバーを登録する。

以下のように VSCode の Cline のペインを選択し、Settingsを選択する。

MCP サーバーを登録する

以下のように API Configurationで設定を行う。

API ProviderOllamaModelに Gemma 3 を指定し、Doneのボタンを押下する。

MCP サーバーを登録する

もし日本語が好きなら、以下のようにGeneral SettingsにあるPreferred LanguageからJapanese - 日本語を設定することができる。

MCP サーバーを登録する

ただし設定しても無視されることがある。

以下のように MCP Serversを選択し、Installedタブを選択する。

MCP サーバーを登録する

以下のようにConfigure MCP Serversを選択し、JSON を記述する。

MCP サーバーを登録する 5

cline_mcp_settings.json
{
  "mcpServers": {
    "example_mcp_server": {
      "url": "http://127.0.0.1:8000/mcp",
      "type": "streamableHttp"
    }
  }
}

LLM に 1+1 を計算させる

準備が整ったので、Cline の対話画面から以下のように指示を出す。

LLM に 1+1 を計算させる

以下のように LLM の返答を確認し、問題なさそうであればApproveを選択する。

LLM に 1+1 を計算させる

結果を確認する。

LLM に 1+1 を計算させる

なんと 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

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?