見出し画像

LangChainとModel Context Protocol(MCP)の連携方法

本記事については生成AIを活用して生成された記事となります。
解説内容の正確性については読者ご自身でご確認いただきますようお願いいたします。

本記事はUsing LangChain With Model Context Protocol (MCP)の解説記事となります。

AIの進化に伴い、大規模言語モデル(LLM)の活用が進んでいます。しかし、多くのLLMベースのアプリケーションは外部データソースとの統合が難しいという課題を抱えています。そこで登場したのが、Anthropicが開発したModel Context Protocol(MCP)です。MCPは、LLMと外部ツールやデータソースをシームレスに接続するためのオープンソースプロトコルであり、LangChainとの統合によりその可能性が広がっています。本記事では、MCPの概要とLangChainとの連携方法について解説します。

Model Context Protocol(MCP)とは?

MCPの概要

MCPは、LLMが外部データやツールと効率的にやり取りできるようにするためのオープンプロトコルです。USB-Cのような共通規格をAIのデータ交換に適用したものと考えることができます。

MCPの特徴

  • 標準化されたデータ統合:LLMが外部データやツールとスムーズに連携可能

  • クライアント・サーバーアーキテクチャ:AIアプリケーション(MCPホスト)とデータ提供者(MCPサーバー)が分離

  • オープンソース:誰でも自由に拡張可能で、セキュリティ対策も強化

MCPは、AIエージェントが単なるチャットボットにとどまらず、外部環境と深く統合されたインテリジェントシステムとして機能することを目指しています。

LangChainとの統合

LangChainとは?

LangChainは、LLMを活用したアプリケーションを構築するためのフレームワークで、データ取得やツールとの連携を容易にする機能を提供します。

MCPとLangChainの統合メリット

  • MCPを介して多様なデータソースと接続可能

  • LangChainのエージェントをMCP経由で外部ツールと連携

  • データのセキュリティを確保しながら拡張性を高める

MCPを使用したLangChainのセットアップ方法

MCP環境の構築

1. 仮想環境の作成

まず、仮想環境を作成し、必要なパッケージをインストールします。

python3 -m venv MCP_Demo
source MCP_Demo/bin/activate
pip install langchain-mcp-adapters

2. MCPサーバーの設定

サーバーを作成し、MCPツールを登録します。

vim server.py

以下のコードを`server.py`に記述します。

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Math")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

@mcp.tool()
def multiply(a: int, b: int) -> int:
    """Multiply two numbers"""
    return a * b

if __name__ == "__main__":
    mcp.run(transport="stdio")

サーバーを起動します。

python3 server.py

3. LangChainエージェントの実装

次に、MCPサーバーと連携するLangChainクライアントを作成します。

vim client.py

以下のコードを`client.py`に記述します。

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import asyncio

model = ChatOpenAI(model="gpt-4o")

server_params = StdioServerParameters(
    command="python",
    args=["server.py"],
)

async def run_agent():
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await load_mcp_tools(session)
            agent = create_react_agent(model, tools)
            agent_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})
            return agent_response

if __name__ == "__main__":
    result = asyncio.run(run_agent())
    print(result)

クライアントを実行し、計算結果を確認します。

python3 client.py

MCPの将来性と応用

MCPの活用例

  • データ統合プラットフォーム:企業が複数のデータソースを統合する際に活用

  • AIエージェントの強化:GPT-4などのモデルを拡張し、情報検索や処理能力を向上

  • セキュアなAIアプリケーション:アクセス権限管理を活用した安全なデータ提供

今後の展望

MCPは、AIエージェントを単なる会話ツールから、実際の業務に活用できる統合プラットフォームへと進化させる可能性を持っています。特に、オープンソースのエコシステムの中で多くの開発者が参加することで、新たなツールとの統合が進むでしょう。

まとめ

Model Context Protocol(MCP)は、LLMを外部ツールやデータソースとシームレスに統合するための強力なプロトコルです。LangChainと組み合わせることで、より柔軟なAIアプリケーションの構築が可能になります。今後、MCPを活用した新たな技術の発展が期待されます。

#生成AI