🌊

🔧 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