🔧 FastMCP × mcptoolsで作る!最短ルートのMCP環境構築術
はじめに
今回は、MCP Server(Model Context Protocol Server)を構築し、クライアント側で即座に動作確認する方法を解説します。所要時間はわずか十分程度です。
具体的には、MCP Serverにツールを1つ実装し、それをクライアントから呼び出して動作を検証する、という流れになります。
内容的にはクライアント側での高速動作検証がメインとなります。
サーバー実装
まずはサーバー側の実装です。
MCP ServerはTypeScriptやPythonなどで構築可能ですが、今回はPython製のライブラリのFastMCPを使用してサーバーを立ち上げます。これが現状最も手軽な実装方法だと思います。
ちなみにFastMCPは現在の公式のチュートリアルでも使われています。
サーバーは以下の手順で実装します、この例ではパッケージマネージャーのuvを利用しているので導入していない場合は事前にインストールしておく必要があります。
uv init mcp-test-server
cd mcp-test-server
uv venv
source .venv/bin/activate
uv add fastmcp
次に、main.py を以下のように実装します。
このコードではgreet関数というツールの実装を行っています。
greet 関数は、名前を引数として受け取り、その名前に対する挨拶メッセージを文字列として返すシンプルなツールです。
そして、作成したツールは SSE モードで動作するように構成されています。
from fastmcp import FastMCP
mcp = FastMCP("MCP Test Server")
@mcp.tool()
def greet(name: str) -> str:
"""
Returns a greeting message for the given name.
Args:
name (str): The name of the person to greet.
Returns:
str: A greeting message in the format "Hello, {name}!"
"""
return f"Hello, {name}!"
if __name__ == "__main__":
mcp.run(transport="sse")
サーバーは以下のコマンドで起動できます:
uv run main.py
これで、http://127.0.0.1:8000/sse にてサーバーが立ち上がります。サーバー側の準備はこれで完了です。
クライアントでの動作検証
作成したMCP Serverは、様々な手法で検証できますが、今回は手早く検証できるmcptools を使って試してみます。
mcptoolsとは?
mcptools は、MCP Serverと対話するための強力なCLIツールです。
以下のような機能を搭載しています:
- 複数のトランスポート形式・出力形式に対応
- モック・プロキシサーバー機能を搭載
- シェルスクリプトや他のCLIツールとの組み合わせが容易
つまり、MCP関連の開発・デバッグ・運用まで幅広く活用できるスイスアーミーナイフのような存在です。
もしmcptoolsについて興味のある方は作者のBlog記事を読むと知見が深まります。
mcptoolsのインストール
まずはmcptoolsをインストールします、インストールは以下のコマンドで実行可能です。
brew tap f/mcptools
brew install mcp
実際に使ってみる
mcpをインストールしたので、実際に使ってみましょう。
まずは、作成したサーバーに接続して、実装済みのツール一覧を取得します。
以下のコマンドは作成したサーバーに接続し、実装されているtoolsの内容を取得するコマンドです。
mcp tools http://127.0.0.1:8000/sse
実行すると、以下のような出力が得られます。
greet(name:str)
Returns a greeting message for the given name.
これはサーバーで作成したgreetというツールを表示しています。
そして次にツールを呼んでみます。
ツールはmcp call <tool名> —param ‘パラメーター’
という感じで利用することができます。
ここではgreetというツールを{"name":"john"}
というパラメーターで送信しています。
mcp call greet --params '{"name":"john"}' http://127.0.0.1:8000/sse
期待通り、以下のレスポンスが返れば成功です。
Hello, john!
シェルモードでの利用
mcp shell コマンドを使えば、対話型でツールを呼び出すことも可能です。
以下ではtools
でツールの一覧表示、call
でツールの呼び出しを行っています。
mcp shell http://127.0.0.1:8000/sse
> tools
greet(name: str)
Returns a greeting message for the given name. Args: name (str): The name of the person to greet. Returns: str: A greeting message in the format "Hello, {name}!
> call greet --params '{"name":"john"}'
Hello, john!
Webインターフェースで確認
mcptools は Web UI にも対応しており、以下のコマンドで立ち上げられます。
mcp web http://127.0.0.1:8000/sse
Webサーバーは http://localhost:41999 で起動され、ブラウザ上で Tools、Resources、Prompts の一覧を確認できます。Tools はその場で実行することも可能です。
以下はgreet関数をnameをjohnとして実行した図です。
日常的な用途では、こちらの Web UI の方がより便利かもしれません。
実装のライフサイクル
mcptoolsを利用した実装のライフサイクルは以下のようになります。
開発中は以下のようにサーバーを起動し
uv run main.py
クライアント側では、変更を即座に反映させながら動作確認を行います。
mcp web http://127.0.0.1:8000/sse
なお、サーバー再起動後は再接続が必要になるため、CLI での呼び出しの方が素早く検証できます。
まとめ
本記事では、FastMCPを使ったMCP Serverの構築と、mcptoolsを用いたクライアントからの簡易検証手法を紹介しました。
特にmcptoolsは、MCP Serverを活用する上で非常に便利なCLIツールであり、これを活用することでプロトタイプ開発やデバッグ、運用の効率化にもつながります。
公式ドキュメント通りに進めると冗長になりがちな構築、検証ステップも、この方法なら最短ルートでMCP Serverの体験が可能です。ぜひ活用してみてください!
Discussion