Розуміння MCP та його значення

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

Оскільки AI Агенти та помічники стають дедалі важливішими для сучасних застосунків та досвіду, потреба у безперебійній та безпечній інтеграції із зовнішніми інструментами та джерелами даних є критичнішою, ніж будь-коли. Протокол Контексту Моделі (MCP) постає як ключовий відкритий стандарт, що уможливлює ці інтеграції, дозволяючи AI моделям взаємодіяти з API, базами даних та іншими сервісами у послідовний та масштабований спосіб.

Розуміння MCP

MCP використовує клієнт-хост-серверну архітектуру, побудовану на JSON-RPC 2.0 для обміну повідомленнями. Комунікація між клієнтами та серверами відбувається через визначені транспортні рівні, переважно:

  • stdio: Стандартний ввід/вивід, що підходить для ефективної комунікації, коли клієнт і сервер працюють на одній машині.
  • HTTP з Server-Sent Events (SSE): Використовує HTTP POST для повідомлень від клієнта до сервера та SSE для повідомлень від сервера до клієнта, забезпечуючи комунікацію через мережі, включаючи віддалені сервери.

Чому MCP має значення

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

Використання Azure API Management для віддалених MCP серверів

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

  • Застосування засобів контролю безпеки для захисту внутрішніх ресурсів.
  • Забезпечення надійності.
  • Ефективного моніторингу та усунення несправностей за допомогою відстеження запитів та потоку контексту.

Практичний приклад: Автоматизація Тріажу Проблем

Щоб слідкувати за цим сценарієм, будь ласка, ознайомтеся з лабораторією MCP, доступною за посиланням AI-Gateway/labs/model-context-protocol.

Перейдемо від теорії до практики, дослідивши, як MCP, Azure API Management (APIM) та GitHub Copilot можуть трансформувати типовий інженерний робочий процес. Уявіть, що ви інженерний менеджер, який прагне оптимізувати процес тріажу проблем вашої команди, зменшивши кількість ручних кроків та підвищивши ефективність.

Приклад робочого процесу:

  1. Інженери реєструють помилки/запити на нові функції як GitHub issues.
  2. Після ручного перегляду у ServiceNow створюється відповідний інцидентний тікет.

Ця ручна передача є неефективною та схильною до помилок. Давайте подивимося, як ми можемо автоматизувати цей процес, безпечно підключивши GitHub та ServiceNow, дозволивши AI Агенту (GitHub Copilot у VS Code) обробляти завдання тріажу від вашого імені.

Значною проблемою цієї інтеграції є безпечне керування делегованим доступом до внутрішніх API, таких як GitHub та ServiceNow, з вашого MCP сервера. Менеджер облікових даних Azure API Management вирішує цю проблему, централізуючи безпечне зберігання облікових даних та сприяючи безпечному створенню підключень до ваших сторонніх API.

Створення та розгортання ваших MCP серверів

Ми почнемо зі створення двох MCP серверів:

1. GitHub Issues MCP Server

Надає інструменти для аутентифікації в GitHub (authorize_github), отримання інформації про користувача (get_user) та переліку issues для вказаного репозиторію (list_issues).

2. ServiceNow Incidents MCP Server

Надає інструменти для аутентифікації в ServiceNow (authorize_servicenow), переліку існуючих інцидентів (list_incidents) та створення нових інцидентів (create_incident).

Ми використовуємо Azure API Management для захисту обох MCP серверів, які побудовані за допомогою Azure Container Apps. Менеджер облікових даних Azure API Management централізує безпечне зберігання облікових даних та сприяє безпечному створенню підключень до ваших сторонніх API.

Авторизація Клієнта:

Ви можете використовувати API Management підписку для генерації ключів, що надають клієнтам доступ до цих API.

Додатково, для підвищення безпеки кінцевих точок /sse та /messages, ми застосовуємо політику validate-jwt, щоб гарантувати, що лише клієнти, які надають дійсний JWT, можуть отримати доступ до цих кінцевих точок, запобігаючи несанкціонованому доступу. (див.: AI-Gateway/labs/model-context-protocol/src/github/apim-api/auth-client-policy.xml)

Після реєстрації OAuth-застосунків у GitHub та ServiceNow, ми оновлюємо менеджер облікових даних APIM відповідними Client IDs та Client Secrets. Це дозволяє APIM виконувати OAuth-потоки від імені користувачів, безпечно зберігаючи та керуючи токенами для внутрішніх викликів до GitHub та ServiceNow.

Підключення вашого MCP Сервера у VS Code

Після розгортання та захисту ваших MCP серверів за допомогою Azure API Management, наступним кроком є їх підключення до вашого робочого процесу розробки. Visual Studio Code тепер підтримує MCP, дозволяючи режиму агента GitHub Copilot підключатися до будь-якого сумісного з MCP сервера та розширювати його можливості.

1. Відкрийте палітру команд і введіть MCP: Add Server ...

2. Виберіть тип сервера HTTP (HTTP або Server-Sent Events).

3. Вставте URL сервера.

4. Вкажіть ID сервера.

Цей процес автоматично оновлює ваш settings.json конфігурацією MCP сервера.

Після додавання GitHub Copilot може підключатися до ваших MCP серверів та отримувати доступ до визначених інструментів, уможливлюючи агентні робочі процеси, такі як тріаж та автоматизація проблем. Ви можете повторити ці кроки, щоб додати ServiceNow MCP Server.

Розуміння Аутентифікації та Авторизації за допомогою Менеджера Облікових Даних

Коли користувач ініціює робочий процес аутентифікації (наприклад, через інструмент authorize_github), GitHub Copilot запускає MCP сервер для генерації запиту на авторизацію та унікальної URL-адреси для входу. Користувача перенаправляють на сторінку згоди, де їхній зареєстрований OAuth-застосунок запитує дозволи на доступ до їхнього облікового запису GitHub. Azure API Management виступає як безпечний посередник, керуючи потоком OAuth та зберіганням токенів.

Потік authorize_github:

  1. Крок 1 — Ініціація підключення: Агент GitHub Copilot викликає sse-підключення до API Management через MCP Client (VS Code).
  2. Крок 2 — Виявлення інструментів: APIM пересилає запит на GitHub MCP Server, який відповідає доступними інструментами.
  3. Крок 3 — Запит на авторизацію: GitHub Copilot вибирає та виконує інструмент authorize_github. MCP сервер генерує authorization_id для сеансу чату.
  4. Крок 4 — Згода користувача: Якщо це перший вхід, APIM запитує URL-адресу перенаправлення для входу з MCP сервера.
  • MCP сервер надсилає URL-адресу входу клієнту, пропонуючи користувачеві пройти аутентифікацію в GitHub.
  • Після успішного входу GitHub перенаправляє клієнта з кодом авторизації.
  • Крок 5 — Обмін та зберігання токенів: MCP Client надсилає код авторизації до API Management.
    • APIM обмінює код на токени доступу та оновлення від GitHub.
    • APIM безпечно зберігає токен та створює список контролю доступу (ACL) для суб’єкта-служби.
  • Крок 6 — Підтвердження: APIM підтверджує успішну аутентифікацію MCP Client, і користувач тепер може виконувати автентифіковані дії, такі як доступ до приватних репозиторіїв.
  • Ознайомтеся з логікою Python для реалізації: AI-Gateway/labs/model-context-protocol/src/github/mcp-server/mcp-server.py.

    Розуміння Виклику Інструментів за допомогою Базових API в API Management

    Використовуючи інструмент list_issues:

    • Підтвердження підключення: APIM підтверджує підключення до MCP Client.
    • Отримання issues:
      • MCP Client запитує issues у MCP сервера.
      • MCP Server додає authorization_id як заголовок та пересилає запит до APIM.
      • Список issues повертається агенту.

    Ви можете використовувати той самий процес, щоб додати ServiceNow MCP Server. Після підключення обох серверів GitHub Copilot Agent може витягувати issues з приватного репозиторію в GitHub та створювати нові інциденти в ServiceNow, автоматизуючи ваш робочий процес тріажу. Ви можете визначити додаткові інструменти, такі як suggest_assignee, assign_engineer, update_incident_status, notify_engineer, request_feedback та інші, щоб продемонструвати справді замкнутий, автоматизований інженерний робочий процес — від створення issue до вирішення та отримання відгуку.

    Перегляньте цю коротку демонстрацію, що показує весь процес.

    Підсумок

    Azure API Management (APIM) є важливим інструментом для корпоративних клієнтів, які прагнуть інтегрувати AI моделі із зовнішніми інструментами за допомогою Протоколу Контексту Моделі (MCP). Я продемонстрував, як менеджер облікових даних Azure API Management вирішує проблему безпечного створення підключень до ваших внутрішніх API. Інтегруючи MCP сервери з VS Code та використовуючи APIM для OAuth-потоків та керування токенами, ви можете забезпечити безпечну, агентну автоматизацію у всіх ваших інженерних інструментах. Цей підхід не лише оптимізує такі робочі процеси, як тріаж проблем та створення інцидентів, але й забезпечує безпеку та керування корпоративного рівня для всіх API.

    👍ПодобаєтьсяСподобалось4
    До обраногоВ обраному2
    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

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

    Я це не в критику MCP. Технологія є безперечним лідером, якщо ви створюєте extensibility пойнт AI-комунікативного додатку або є вендором, чий фокус продажів у API інтеграціях.
    MCP не вирішує ту проблему, що ви означали.
    Пряма інтеграція завжди потребує менше зусиль, якщо мова йде про високі стандарти якості. Для швидкого Proof of Concept — так, безперечно. Для типового корпоративного клієнта — вже будете переписувати, якщо з пісочниці вийшли і якщо мова не про демо і не про extensibility point.

    Про сервіси Azure ви дарма. Вони вам не заплатили.

    Приклад з тріажем смішний, він не потребує використання мовних моделей взагалі.

    Я ставлю цій статті незадовільно і мене дещо обурює той факт, що вона не заслуговує такого довгого коментаря.

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