[OSS紹介#43] mcp-use:MCPサーバーとの最適な連携を実現するツールのご紹介

この記事について

この記事では、注目のオープンソースソフトウェア「mcp-use」を紹介します。このツールは、MCP(Model Context Protocol)サーバーとインタラクションするための最も簡単な手段を提供し、カスタムエージェントを構築することを可能にします。近年では、さまざまな分野で AI 技術が広がっており、その中で柔軟性と使いやすさを求める開発者たちにとって、有用なツールとなるでしょう。

本ブログシリーズでは、特に開発者の生産性を高めるためのソフトウェアを取り上げており、今回で 43 回目となります。最近 MCP サーバーを調査する中で、実際にそれを動かすための優れたツールが必要だということを実感しました。この mcp-use は、そのニーズに応える理想的なソリューションです。

mcp-use は、あらゆる言語モデル(LLM)を MCP サーバーに接続し、さまざまなツールにアクセスできるように設計されています。このツールにより、開発者は複数のサーバーを同時に利用することができ、さらに動的サーバー選択やツール制限といった機能も備えています。これにより、高度なカスタマイズが可能になり、さまざまなプロジェクトや要件に応じて柔軟に対応できる点が大きな魅力です。

リンク:https://github.com/pietrozullo/mcp-use


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. mcp-useの機能

mcp-use は、任意の大規模言語モデル(LLM)を任意の MCP サーバーに接続し、ツールアクセスを持つカスタムエージェントを構築するためのオープンソースツールです。このライブラリを使用することで、開発者は簡単に LLM をウェブブラウジングやファイル操作などのツールに接続できるようになります。主な機能は以下の通りです。

  • 簡単な操作でエージェントを作成
  • 複数の LLM に対応(OpenAI、Anthropic、Groq、LLama など)
  • MCP サーバーへの HTTP 接続サポート
  • 動的なサーバー選択機能
  • 複数の MCP サーバーを同時に使用可能
  • ツールアクセス制限機能
  • カスタムエージェントの構築が可能

2. セットアップ手順

2.1 ライセンスと動作環境

mcp-useはMITライセンスの下で配布されており、Python 3.11以上が必要です。また、MCP実装(例:Playwright MCP)やLangChainおよび適切なモデルライブラリ(OpenAI、Anthropicなど)が必要です。

2.2 インストール手順

pipを使用してmcp-useをインストールするには、次のコマンドを実行します。

pip install mcp-use

ソースからインストールする場合は、以下の手順に従います。

git clone https://github.com/pietrozullo/mcp-use.git
cd mcp-use
pip install -e .

2.3 LangChainプロバイダーのインストール

mcp-useは、LangChainを通じてさまざまなLLMプロバイダーと連携します。選択したLLMに適したLangChainプロバイダーのパッケージをインストールしてください。例として、OpenAI用のインストールコマンドは以下の通りです。

pip install langchain-openai

Anthropic用であれば、次のようになります。

pip install langchain-anthropic

.envファイルにAPIキーを追加することも忘れないでください。

OPENAI_API_KEY=
ANTHROPIC_API_KEY=

3. 簡単な使い方

3.1 エージェントの起動

エージェントを起動するための基本的なコードは以下の通りです。

import asyncio
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from mcp_use import MCPAgent, MCPClient

async def main():
    load_dotenv()

    config = {
      "mcpServers": {
        "playwright": {
          "command": "npx",
          "args": ["@playwright/mcp@latest"],
          "env": {
            "DISPLAY": ":1"
          }
        }
      }
    }

    client = MCPClient.from_dict(config)
    llm = ChatOpenAI(model="gpt-4o")
    agent = MCPAgent(llm=llm, client=client, max_steps=30)
    result = await agent.run("Find the best restaurant in San Francisco.")
    print(f"\nResult: {result}")

if __name__ == "__main__":
    asyncio.run(main())

このコードを実行すると、San Franciscoでの最適なレストランを探すエージェントが実行されます。

3.2 ストリーミングエージェント出力

mcp-useは、エージェントの出力を非同期でストリーミングする機能をサポートしています。agent.astream(query)を呼び出すことで、生成された結果をリアルタイムで受け取ることができます。

async for chunk in agent.astream("Find the best restaurant in San Francisco"):
    print(chunk["messages"], end="", flush=True)

この機能を活用することで、チャットボットやダッシュボードなど、リアルタイムの更新が必要なアプリケーションに最適です。

4. 結論

mcp-useは、MCPサーバーとのインタラクションを容易にし、開発者が任意のLLMを使ってカスタムエージェントを構築するための強力なツールです。使いやすさ、多様なサポート、柔軟な機能を備えており、さまざまな用途に活用できます。特に、リアルタイムでのフィードバックや複数サーバーの連携が求められるプロジェクトにおいて、その真価を発揮するでしょう。ぜひ、このツールを使ってMCPサーバーでの開発を進めてみてください。