Начало работы с удаленными серверами MCP с использованием функций Azure (Node.js/TypeScript)
Это шаблон быстрого старта для простого создания и развертывания настраиваемого удаленного сервера MCP в облаке с использованием функций Azure. Вы можете клонировать/восстановить/запустить на локальной машине с отладкой и azd up
, чтобы разместить его в облаке за пару минут. Сервер MCP защищен по умолчанию с помощью ключей и HTTP и предоставляет больше возможностей для OAuth с использованием EasyAuth и/или API Management, а также сетевой изоляции с использованием VNET.
Посмотрите видеообзор
Если вы ищете этот пример на других языках, ознакомьтесь с версиями .NET/C# и Python .
Ниже представлена схема архитектуры удаленного сервера MCP с использованием функций Azure:
Предпосылки
- Node.js версии 18 или выше
- Основные инструменты Azure Functions >=
4.0.7030
- Интерфейс командной строки разработчика Azure
- Чтобы использовать Visual Studio Code для локального запуска и отладки:
- Docker для запуска Azurite, эмулятора хранилища Azure (необязательно)
Подготовьте местную среду
Для этого конкретного примера необходим эмулятор хранилища Azure, поскольку мы будем сохранять и получать фрагменты из хранилища BLOB-объектов.
- Старт Азурита
Обратите внимание, если вы используете Azurite из расширения VS Code, вам необходимо запустить
Azurite: Start
now, иначе вы увидите ошибки.
Запустите свой MCP-сервер локально из терминала
- Установить зависимости
- Построить проект
- Запустите хост функций локально:
Обратите внимание, что по умолчанию это будет использовать маршрут webhooks:
/runtime/webhooks/mcp/sse
. Позже мы будем использовать это в Azure для установки ключа для вызовов клиент/хост:/runtime/webhooks/mcp/sse?code=<system_key>
Используйте локальный сервер MCP из клиента/хоста
VS Code - Правки второго пилота
- Добавьте MCP-сервер из палитры команд и добавьте URL-адрес к конечной точке SSE вашего работающего приложения-функции:
- Выберите HTTP (Server-Sent-Events) в качестве типа добавляемого сервера MCP.
- Введите URL-адрес конечной точки SSE вашего работающего приложения-функции.
- Введите идентификатор сервера. (Это может быть любое имя по вашему желанию)
- Выберите, хотите ли вы запустить это в настройках пользователя (доступно для всех ваших приложений) или в настройках рабочей области (доступно только для этого приложения)
- Выведите список серверов MCP из палитры команд и запустите сервер. Предыдущий шаг мог уже запустить ваш локальный сервер. Если так, вы можете пропустить этот шаг.
- В режиме чат-агента Copilot введите запрос для запуска инструмента, например, выберите какой-либо код и введите этот запрос.
- При появлении запроса на запуск инструмента дайте согласие, нажав «Продолжить».
- Закончив, нажмите Ctrl+C в окне терминала, чтобы остановить хост-процесс
func.exe
, а затем выведите список серверов MCP из палитры команд и остановите локальный сервер.
Инспектор МКП
- В новом окне терминала установите и запустите MCP Inspector.
- Если вы ранее остановили приложение-функцию, запустите хост-функцию локально:
- Удерживая клавишу CTRL, щелкните, чтобы загрузить веб-приложение MCP Inspector с URL-адреса, отображаемого приложением (например, http://0.0.0.0:5173/#resources ).
- Установите тип транспорта на
SSE
- Укажите URL-адрес конечной точки SSE вашего работающего приложения-функции и подключитесь :
- Список инструментов . Щелкните по инструменту и запустите инструмент .
- Когда вы закончите, нажмите Ctrl+C в окне терминала, чтобы остановить хост-процесс
func.exe
, и нажмите Ctrl+C в окне терминала, чтобы остановить хост-процесс@modelcontextprotocol/inspector
.
Развертывание в Azure для удаленного MCP
При желании вы можете согласиться на использование VNet в образце. (Если вы выберете этот вариант, сделайте это до azd up
)
Запустите эту команду azd , чтобы предоставить приложению-функции все необходимые ресурсы Azure и развернуть свой код:
Примечание. API Management можно использовать для повышения безопасности и политик на вашем сервере MCP, австроенную аутентификацию App Service можно использовать для настройки вашего любимого поставщика OAuth, включая Entra.
Подключитесь к удаленному приложению сервера MCP с клиента
Вашему клиенту понадобится ключ для вызова новой размещенной конечной точки SSE, которая будет иметь вид https://<funcappname>.azurewebsites.net/runtime/webhooks/mcp/sse
. Размещенная функция требует системный ключ по умолчанию, который можно получить на портале или в CLI ( az functionapp keys list --resource-group <resource_group> --name <function_app_name>
). Получите системный ключ с именем mcp_extension
.
Подключитесь к удаленному серверу MCP в MCP Inspector
Для MCP Inspector вы можете включить ключ в URL:
Подключение к удаленному серверу MCP в VS Code - GitHub Copilot
Для GitHub Copilot в VS Code вам следует задать ключ как заголовок x-functions-key
в mcp.json
, и вы должны использовать https://<funcappname>.azurewebsites.net/runtime/webhooks/mcp/sse
для URL. Следующий пример взят из файла mcp.json
, включенного в этот репозиторий, и использует входные данные для запроса на ввод ключа при запуске сервера из VS Code. Ваш файл mcp.json
выглядит следующим образом:
- Нажмите кнопку Пуск на сервере
remote-mcp-function
внутри файлаmcp.json
: - Введите имя приложения-функции, созданного на портале Azure, при появлении соответствующего запроса от VS Code.
- Введите
Azure Functions MCP Extension System Key
в приглашение. Вы можете скопировать его из портала Azure для своего функционального приложения, перейдя в пункт меню Functions, затем App Keys и скопировав ключmcp_extension
из System Keys. - В режиме чат-агента Copilot введите запрос для запуска инструмента, например, выберите какой-либо код и введите этот запрос.
Повторно разверните свой код
Вы можете запускать команду azd up
столько раз, сколько необходимо для подготовки ресурсов Azure и развертывания обновлений кода в вашем функциональном приложении.
[!ПРИМЕЧАНИЕ] Развернутые файлы кода всегда перезаписываются последним пакетом развертывания.
Очистите ресурсы
Закончив работу с приложением-функцией и связанными с ним ресурсами, вы можете использовать эту команду, чтобы удалить приложение-функцию и связанные с ним ресурсы из Azure и избежать дальнейших затрат:
Исходный код
Код функции для конечных точек getSnippet
и saveSnippet
определен в файлах TypeScript в каталоге src
. Аннотации функций MCP раскрывают эти функции как инструменты сервера MCP.
Ниже показан код для нескольких примеров сервера MCP (получение строки, получение объекта, сохранение объекта):
Обратите внимание, что файл host.json
также содержит ссылку на экспериментальный пакет, который необходим для приложений, использующих эту функцию:
Следующие шаги
- Добавьте API-управление на свой сервер MCP (аутентификация, шлюз, политики и многое другое!)
- Добавьтевстроенную аутентификацию на ваш сервер MCP
- Включите VNET с помощью флага VNET_ENABLED=true
- Узнайте больше о связанных с MCP инициативах от Microsoft
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Облачный настраиваемый сервер MCP, использующий Azure Functions, который позволяет сохранять и извлекать фрагменты кода с защищенной связью через ключи, HTTPS, OAuth и параметры сетевой изоляции.
- Предпосылки
- Подготовьте местную среду
- Запустите свой MCP-сервер локально из терминала
- Используйте локальный сервер MCP из клиента/хоста
- Развертывание в Azure для удаленного MCP
- Подключитесь к удаленному приложению сервера MCP с клиента
- Повторно разверните свой код
- Очистите ресурсы
- Исходный код
- Следующие шаги
Related MCP Servers
- AsecurityAlicenseAqualityA MCP server for managing and storing code snippets in various programming languages, allowing users to create, list, and delete snippets via a standardized interface.Last updated -34JavaScriptMIT License
- -securityAlicense-qualityAn MCP server to create secure code sandbox environment for executing code within Docker containers.Last updated -69GoMIT License
- -securityFlicense-qualityA personal MCP server for securely storing and accessing API keys across projects using the macOS Keychain, letting AI assistants and applications retrieve credentials through natural language.Last updated -10TypeScript
- -securityAlicense-qualityAn MCP server for interacting with Azure. Contains some common Compute and Networking actions, and extensible to add many more.Last updated -PythonApache 2.0