Создание AI-агента на базе MCP с использованием Gemini и фреймворка mcp-agent: пошаговое руководство по реализации

В этом руководстве мы рассмотрим создание продвинутого AI-агента с использованием mcp-agent и Gemini. Мы начнём с настройки надёжной среды со всеми необходимыми зависимостями, а затем реализуем сервер инструментов MCP, который предоставляет структурированные сервисы, такие как веб-поиск, анализ данных, выполнение кода и получение информации о погоде.

Установка пакетов

Мы определяем функцию `install_packages`, которая задаёт все зависимости, необходимые для нашего руководства, включая mcp-agent, Gemini и вспомогательные библиотеки. Затем мы запускаем эту функцию для автоматической установки каждого пакета, обеспечивая полную подготовку нашей среды перед дальнейшими действиями.

“`python
import subprocess
import sys
import os
from typing import Dict, List, Any, Optional, Union
import json
import asyncio
from datetime import datetime
import logging

def install_packages():
“””Install required packages for the tutorial”””
packages = [
‘mcp’,
‘google-generativeai’,
‘requests’,
‘beautifulsoup4’,
‘matplotlib’,
‘numpy’,
‘websockets’,
‘pydantic’
]

for package in packages:
try:
subprocess.check_call([sys.executable, “-m”, “pip”, “install”, package])
print(f” Successfully installed {package}”)
except subprocess.CalledProcessError as e:
print(f” Failed to install {package}: {e}”)

install_packages()
“`

Импорт библиотек

Мы импортируем все основные библиотеки, которые нам понадобятся, от утилит для веб-скрапинга до инструментов визуализации и численных расчётов. Мы также подключаем модули mcp-agent для коммуникации по протоколу и настраиваем логирование, чтобы отслеживать выполнение нашего агента в режиме реального времени.

“`python
import google.generativeai as genai
import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import numpy as np

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from mcp.types import TextContent, ImageContent, EmbeddedResource
import mcp.types as types

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(name)
“`

Класс MCPToolServer

Мы проектируем класс `MCPToolServer`, который определяет и управляет всеми инструментами, которые может использовать наш агент, включая веб-поиск, анализ данных, выполнение кода и получение информации о погоде. Мы реализуем асинхронные методы для каждого инструмента, позволяя агенту выполнять запрошенную операцию и возвращать результаты в структурированном формате.

“`python
class MCPToolServer:
“””MCP Server that provides tools for the AI agent”””

def init(self):
self.tools = {
“web_search”: {
“name”: “web_search”,
“description”: “Search the web for information”,
“inputSchema”: {
“type”: “object”,
“properties”: {
“query”: {“type”: “string”, “description”: “Search query”}
},
“required”: [“query”]
}
},
# … (другие инструменты)
“`

Класс MCPAgent

Мы определяем `MCPAgent`, который соединяет Gemini с нашим сервером инструментов MCP и поддерживает историю разговоров, позволяя нам рассуждать, принимать решения о выборе инструмента, выполнять его и синтезировать результат.

“`python
class MCPAgent:
“””AI Agent using MCP (Model Context Protocol)”””

def init(self, geminiapikey: Optional[str] = None):
self.geminiapikey = geminiapikey or self.getapi_key()
self.mcp_server = MCPToolServer()
self.conversation_history = []

if self.geminiapikey:
genai.configure(apikey=self.geminiapi_key)
self.model = genai.GenerativeModel(‘gemini-1.5-flash’)
print(” MCP Agent initialized with Gemini!”)
else:
self.model = None
print(” MCP Agent initialized without Gemini (limited functionality)”)

# … (другие методы)
“`

Запуск демонстрации MCP

Мы запускаем скрипт с демонстрацией, который инициализирует `MCPAgent`, выполняет набор репрезентативных запросов и выводит ответы, управляемые Gemini, с короткими паузами между запусками.

“`python
async def runmcpdemo():
“””Run comprehensive MCP Agent demo”””
print(” MCP Agent Demo Starting!”)
print(“=” * 50)

agent = MCPAgent()

demo_queries = [
“Search for information about machine learning”,
“Create a data visualization with sine wave analysis”,
“What’s the weather like in New York?”,
“Explain how artificial intelligence works”
]

print(“n Running MCP Tool Demonstrations:”)
print(“-” * 40)

for i, query in enumerate(demo_queries, 1):
print(f”n Query {i}: {query}”)
print(“-” * 30)

response = await agent.process_request(query)
print(response)

if i < len(demo_queries):
print(“n Next demo in 3 seconds…”)
await asyncio.sleep(3)

print(“n MCP Demo completed!”)
return agent
“`

Мы создали продвинутого AI-агента с использованием MCP, который динамически решает, когда использовать внешние инструменты и как объединять их выходные данные в осмысленные ответы. Мы проверили агента на нескольких запросах, продемонстрировав его способность искать, анализировать, генерировать и моделировать взаимодействие с реальным миром.

1. Какие инструменты включены в класс MCPToolServer и как они используются в AI-агенте?

В класс MCPToolServer включены инструменты для веб-поиска, анализа данных, выполнения кода и получения информации о погоде. Эти инструменты позволяют AI-агенту выполнять различные задачи, такие как поиск информации в интернете, анализ данных, выполнение программных кодов и получение актуальных данных о погоде.

2. Какие библиотеки и зависимости необходимо установить для реализации AI-агента на базе MCP с использованием Gemini и фреймворка mcp-agent?

Для реализации AI-агента на базе MCP с использованием Gemini и фреймворка mcp-agent необходимо установить следующие пакеты: mcp, google-generativeai, requests, beautifulsoup4, matplotlib, numpy, websockets, pydantic.

3. Как работает класс MCPAgent и какие функции он выполняет?

Класс MCPAgent соединяет Gemini с сервером инструментов MCP и поддерживает историю разговоров. Он позволяет агенту рассуждать, принимать решения о выборе инструмента, выполнять его и синтезировать результат.

4. Какие методы используются для инициализации и запуска демонстрации MCP?

Для инициализации MCPAgent используется метод init, который принимает параметр geminiapikey. Для запуска демонстрации MCP используется асинхронный метод runmcpdemo, который инициализирует MCPAgent, выполняет набор репрезентативных запросов и выводит ответы, управляемые Gemini.

5. Какие типы данных используются в классе MCPToolServer для определения инструментов?

В классе MCPToolServer для определения инструментов используются следующие типы данных: TextContent, ImageContent, EmbeddedResource. Эти типы данных позволяют структурировать входные и выходные данные инструментов.

Источник