Начало работы с удаленными серверами 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Чтобы использовать Visual Studio Code для локального запуска и отладки:
Docker для запуска Azurite, эмулятора хранилища Azure (необязательно)
Подготовьте местную среду
Для этого конкретного примера необходим эмулятор хранилища Azure, поскольку мы будем сохранять и получать фрагменты из хранилища BLOB-объектов.
Старт Азурита
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \ mcr.microsoft.com/azure-storage/azurite
Обратите внимание, если вы используете Azurite из расширения VS Code, вам необходимо запустить
Azurite: Startnow, иначе вы увидите ошибки.
Запустите свой MCP-сервер локально из терминала
Установить зависимости
npm installПостроить проект
npm run buildЗапустите хост функций локально:
func start
Обратите внимание, что по умолчанию это будет использовать маршрут webhooks:
/runtime/webhooks/mcp/sse. Позже мы будем использовать это в Azure для установки ключа для вызовов клиент/хост:/runtime/webhooks/mcp/sse?code=<system_key>
Используйте локальный сервер MCP из клиента/хоста
VS Code - Правки второго пилота
Добавьте MCP-сервер из палитры команд и добавьте URL-адрес к конечной точке SSE вашего работающего приложения-функции:
http://0.0.0.0:7071/runtime/webhooks/mcp/sseВыберите HTTP (Server-Sent-Events) в качестве типа добавляемого сервера MCP.
Введите URL-адрес конечной точки SSE вашего работающего приложения-функции.
Введите идентификатор сервера. (Это может быть любое имя по вашему желанию)
Выберите, хотите ли вы запустить это в настройках пользователя (доступно для всех ваших приложений) или в настройках рабочей области (доступно только для этого приложения)
Выведите список серверов MCP из палитры команд и запустите сервер. Предыдущий шаг мог уже запустить ваш локальный сервер. Если так, вы можете пропустить этот шаг.
В режиме чат-агента Copilot введите запрос для запуска инструмента, например, выберите какой-либо код и введите этот запрос.
Say HelloSave this snippet as snippet1Retrieve snippet1 and apply to newFile.tsПри появлении запроса на запуск инструмента дайте согласие, нажав «Продолжить».
Закончив, нажмите Ctrl+C в окне терминала, чтобы остановить хост-процесс
func.exe, а затем выведите список серверов MCP из палитры команд и остановите локальный сервер.
Инспектор МКП
В новом окне терминала установите и запустите MCP Inspector.
npx @modelcontextprotocol/inspector node build/index.jsЕсли вы ранее остановили приложение-функцию, запустите хост-функцию локально:
func startУдерживая клавишу CTRL, щелкните, чтобы загрузить веб-приложение MCP Inspector с URL-адреса, отображаемого приложением (например, http://0.0.0.0:5173/#resources ).
Установите тип транспорта на
SSEУкажите URL-адрес конечной точки SSE вашего работающего приложения-функции и подключитесь :
http://0.0.0.0:7071/runtime/webhooks/mcp/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 введите запрос для запуска инструмента, например, выберите какой-либо код и введите этот запрос.
Say HelloSave this snippet as snippet1Retrieve snippet1 and apply to newFile.ts
Повторно разверните свой код
Вы можете запускать команду 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
- Asecurity-licenseAqualityA 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 -347MIT License
- -security-license-qualityAn MCP server for interacting with Azure. Contains some common Compute and Networking actions, and extensible to add many more.Last updated -1Apache 2.0
- Asecurity-licenseAqualityAn MCP server that provides seamless interaction with Azure DevOps Git repositories, enabling users to manage repositories, branches, pull requests, and pipelines through natural language.Last updated -853
- -security-license-qualityThis project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for Azure Data Catalog (beta): https://www.cdata.com/download/download.aspx?sku=GNZK-V&type=betaLast updated -MIT License