Iнтеграція служби Azure AI Agent із сервером MCP

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

На момент написання цієї статті служба агентів штучного інтелекту Azure не пропонує готової інтеграції із серверами Model Context Protocol (MCP). Тут обговорюється рішення, яке допомагає використовувати потужні можливості MCP під час роботи в екосистемі Azure.

Інтеграційний підхід поєднує можливості інтеграції функцій у службі агентів Azure AI. Використовуючи клієнт MCP для виявлення та реєстрації інструментів із сервера MCP як функцій за допомогою служби агентів, ми створюємо безшовний рівень інтеграції між двома системами.

Створений за допомогою Microsoft Bot Framework, цей застосунок помічник штучного інтелекту. Для цілей розробки та тестування використовувався емулятор Bot Framework для запуску та перевірки застосунку локально.

Огляд архітектури

Архітектура рішення складається з кількох ключових компонентів:

  1. Сервер MCP : Розміщений у контейнерних програмах Azure, сервер MCP підключається до сховища BLOB-об’єктів Azure за допомогою керованої ідентифікації, забезпечуючи безпечну автентифікацію на основі токенів без необхідності збережених облікових даних.
  2. Служба агентів штучного інтелекту Azure : Основна аналітична платформа, на якій працює наш помічник зі штучним інтелектом. Вона використовує різні інструменти, зокрема:
    • Вбудований інструмент пошуку Bing для отримання новинного контенту
    • Динамічно зареєстровані інструменти MCP для операцій зберігання даних
    • Модель GPT-4o для розуміння та генерації природної мови
  3. Спеціальна програма-помічник штучного інтелекту : створена за допомогою Microsoft Bot Framework, ця програма працює локально під час розробки, але може бути розміщена в Azure Container Apps для виробничого використання. Вона служить мостом між взаємодією користувачів та службою Azure AI Agent.
  4. Рівень інтеграції : клієнт MCP у нашій програмі виявляє доступні інструменти на сервері MCP та реєструє їх у службі агентів штучного інтелекту Azure, що забезпечує безперебійний виклик функцій між цими системами.

Технічна реалізація

Виявлення та реєстрація інструменту MCP

Суть інтеграції полягає в тому, як ми знаходимо інструменти MCP та реєструємо їх у службі агентів штучного інтелекту Azure. Давайте розглянемо ключові компоненти цього процесу.

Процес пошуку інструментів

Файл agent.py містить логіку для підключення до сервера MCP, пошуку доступних інструментів та їх реєстрації в службі агентів Azure AI:

# Fetch tool schemas from MCP Server
async def fetch_tools():
conn = ServerConnection(mcp_server_url)
await conn.connect()
tools = await conn.list_tools()
await conn.cleanup()
return tools
tools = asyncio.run(fetch_tools())
# Build a function for each tool
def make_tool_func(tool_name):
def tool_func(**kwargs):
async def call_tool():
conn = ServerConnection(mcp_server_url)
await conn.connect()
result = await conn.execute_tool(tool_name, kwargs)
await conn.cleanup()
return result
return asyncio.run(call_tool())
tool_func.__name__ = tool_name
return tool_func
functions_dict = {tool["name"]: make_tool_func(tool["name"]) for tool in tools}
mcp_function_tool = FunctionTool(functions=list(functions_dict.values()))

Цей підхід динамічно створює заглушки функцій Python для кожного інструменту MCP, які потім можна зареєструвати в службі агентів штучного інтелекту Azure.

Створення та реєстрація агента

Після отримання заглушок функцій ми реєструємо їх у службі агентів штучного інтелекту Azure:

# Initialize agent with tools
toolset = ToolSet()
toolset.add(mcp_function_tool)
toolset.add(bing) # Adding the Bing Search tool
# Create or update agent with the toolset
agent = project_client.agents.create_agent(
model=config.aoai_model_name,
name=agent_name,
instructions=agent_instructions,
tools=toolset.definitions
)

Перевагою цього підходу є те, що він дозволяє динамічне виявлення та реєстрацію. Коли MCP-сервер додає або оновлює інструменти, ви можете просто повторно запустити процес створення агента, щоб оновити зареєстровані функції.

На зображенні нижче показано, що дії інструментів, виявлені на сервері MCP, реєструються як функції в службі агента штучного інтелекту після створення/оновлення агента.

Виконання запитів за допомогою клієнта MCP

Коли користувач взаємодіє з ботом, state_management_bot.py обробляє виклики функцій та направляє їх до відповідного обробника:

# Process each tool call
tool_outputs = []
for tool_call in tool_calls:
if isinstance(tool_call, RequiredFunctionToolCall):
# Get function name and arguments
function_name = tool_call.function.name
args_json = tool_call.function.arguments
arguments = json.loads(args_json) if args_json else {}
# Check if this is an MCP function
if is_mcp_function(function_name):
# Direct MCP execution using our specialized handler
output = await execute_mcp_tool_async(function_name, arguments)
else:
# Use FunctionTool as fallback
output = functions.execute(tool_call)

Система розроблена для слабозв’язаного використання — агент знає лише про сигнатури інструментів та як їх викликати, тоді як сервер MCP обробляє деталі реалізації взаємодії зі сховищем Azure.

Запуск програми

Робочий процес складається з двох основних кроків:

1. Створення/оновлення агента

На цьому кроці виявляється доступний інструмент із сервера MCP та реєструється він у службі агентів штучного інтелекту Azure:

python agent.py

Цей процес:

  1. Підключається до сервера MCP
  2. Отримує схему всіх доступних інструментів
  3. Створює функціональні заглушки для кожного інструменту
  4. Реєструє ці заглушки в службі агентів штучного інтелекту Azure

2. Запуск помічника штучного інтелекту

Після налаштування агента за допомогою відповідних інструментів можна запустити програму:

python app.py

Користувачі взаємодіють зі штучним інтелектом-помічником через емулятор Bot Framework, використовуючи природну мову. Помічник може виконувати:

  • Пошук новин за допомогою пошуку Bing
  • Підсумки висновків
  • Зберігання та впорядковання зведення в сховищі BLOB-об’єктів Azure через сервер MCP

Посилання

Репозиторій GitHub для цього застосунку. Він містить посилання на відповідну документацію з цього питання.

Репозиторій GitHub для сервера MCP

Висновок

Ця реалізація демонструє практичний підхід до інтеграції служби Azure AI Agent Service із серверами MCP. Використовуючи можливості інтеграції функцій, ми створили міст, який дозволяє цим технологіям безперешкодно працювати разом.

Архітектура має переваги:

  • Гнучкості : Нові інструменти можна додавати до сервера MCP та автоматично виявляти їх.
  • Підтримуваності : Зміни в операціях зберігання можна вносити без модифікації агента.
  • Масштабованості : додаткові можливості можна легко додати за допомогою нових інструментів MCP.

У міру розвитку служби Azure AI Agent Service, у майбутньому ми можемо побачити нативну інтеграцію із серверами MCP. До того часу цей підхід забезпечує надійне рішення для розробників, які прагнуть поєднати ці потужні технології.

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі