お疲れ様です。
前回langchain-mcp-adaptersを使ってチャットボットでMCPサーバを利用した返答を出力させる実装をしました。
その際にMCPサーバを使った返答生成の部分だけを単体で実行できるコードを作っていたので、今回はそれを使ってみようと思います。
ソースコード
使用したソースコードの全体はこちらのGitHubを参照ください。 github.com
メインで実行するコードは以下になります。 コマンドライン引数でMCPサーバのconfigファイルを指定して実行、実行時に質問文を標準入力する形です。
# 定数 TEMPLATE = """ あなたは質問応答タスクのアシスタントです。 登録されているツールを使って質問に答えてください。 質問: {question} 答え: {agent_scratchpad} """ # AIの返答を作成 async def gemini_mcp_generator(user_input, mcp_config_path): # モデルを準備 llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash-preview-05-20") # プロンプトを設定 prompt = PromptTemplate.from_template(TEMPLATE) with open(mcp_config_path, mode="r") as f: mcp_config = json.load(f) mcp_client = MultiServerMCPClient(mcp_config["mcpServers"]) tools = await mcp_client.get_tools() # エージェントを用意 agent = create_tool_calling_agent(llm, tools, prompt) executor = AgentExecutor(agent=agent, tools=tools) # 返答を取得 response = await executor.ainvoke({"question": user_input}) print("\n返答:\n") print(response["output"]) if __name__ == "__main__": # コマンドライン引数の設定 parser = ArgumentParser() parser.add_argument("--config", type=str) args = parser.parse_args() # 単体テスト mcp_config_path = Path(args.config) # コマンドラインから入力 user_input = input("質問を入力 >>> ") asyncio.run(gemini_mcp_generator(user_input, mcp_config_path))
ちなみに前回使用した「fetch」を使用するとこんな感じ。

「Git」のMCPサーバも簡単に試せそうだったのでやってみます。 jsonファイルで下記のようにconfigを作成します。
{ "mcpServers": { "git": { "command": "uvx", "args": ["mcp-server-git"], "transport": "stdio" } } }
ステージされている変更をコミットしてみます。

入力はこんな感じ。コミットメッセージとリポジトリも入力文の中に書き込んでおきます。

正常にコミットできました!
ローカルリポジトリ内でできる操作は大体できそうな感じです。ただ、リモートへのpushは対応していないらしいです。

公式GitHubのリファレンスには他にも使用可能なMCPサーバが掲載されているのでいろいろ試してみたいですね。 Dockerコンテナを作る必要があったり、各サービスのAPIキーを取得する必要があったりと準備に時間がかかりそうなので使いたいものだけ試していきたいですね~。 github.com