Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширение Azure Developer CLI (azd) может предоставлять агентам ИИ доступ к инструментам через сервер Model Context Protocol (MCP). Когда вы добавляете возможность mcp-server, такие агенты, как GitHub Copilot, могут находить и вызывать инструменты вашего расширения. В этой статье показано, как добавить сервер MCP в пример расширения Contoso Resource Tagger из краткого руководства по созданию примера расширения. К любому расширению можно применить тот же шаблон.
Замечание
azd расширения в настоящее время находятся в бета-версии.
Как работают серверы MCP
Протокол контекста модели — это открытый стандарт, позволяющий агентам ИИ обнаруживать и вызывать средства, предоставляемые внешними серверами. Когда ваше расширение объявляет о поддержке возможности mcp-server, azd может запускать ваше расширение как MCP-сервер и направлять запросы к инструментам от агента вашему расширению. Ваше расширение содержит инструменты, которые агент использует для выполнения задач, например для предложения стандартизированных тегов для проекта.
Объявите функциональность
Добавьте возможность mcp-server в манифест extension.yaml:
capabilities:
- custom-commands
- mcp-server
Вы также можете добавить в манифест раздел mcp, чтобы настроить, как azd запускает сервер MCP. Свойство serve поддерживает args и env; azd уже знает исполняемый файл расширения, поэтому команду указывать не нужно:
mcp:
serve:
args:
- mcp
- start
Добавление команды MCP
Добавьте команду, которая запускает сервер MCP.
azd Вызывает эту команду для запуска расширения в качестве сервера MCP. Используйте библиотеку сервера MCP для Go, например mcp-go, для обработки протокола.
Создайте файл с именем
mcp.goв каталогеinternal/cmd:package cmd import ( "context" "fmt" "github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" "github.com/spf13/cobra" ) func newMcpCommand() *cobra.Command { mcpCmd := &cobra.Command{ Use: "mcp", Short: "Model Context Protocol server commands.", Hidden: true, } mcpCmd.AddCommand(newMcpStartCommand()) return mcpCmd } func newMcpStartCommand() *cobra.Command { return &cobra.Command{ Use: "start", Short: "Starts the MCP server.", RunE: func(cmd *cobra.Command, args []string) error { s := server.NewMCPServer( "Contoso Resource Tagger", "0.1.0", ) // Register the suggest_tags tool. s.AddTool(newSuggestTagsTool()) // Serve over stdio so azd and agents can connect. return server.ServeStdio(s) }, } }Зарегистрируйте команду
mcpв вашей корневой команде:rootCmd.AddCommand(newMcpCommand())
Реализовать инструмент
Определите средство, которое вызывает агент ИИ. Добавьте следующее suggest_tags средство в тот же internal/cmd/mcp.go файл, который вы создали ранее. Идентификаторы mcp и server берутся из пакетов, уже импортированных в этом файле (github.com/mark3labs/mcp-go/mcp и github.com/mark3labs/mcp-go/server), а обработчик также использует импорты context и fmt. Добавление функции в mcp.go позволяет повторно использовать эти инструкции import, поэтому код компилируется:
func newSuggestTagsTool() (mcp.Tool, server.ToolHandlerFunc) {
tool := mcp.NewTool(
"suggest_tags",
mcp.WithDescription("Suggests standardized Azure resource tags for a project."),
mcp.WithString("environment",
mcp.Description("The target environment, such as dev or prod."),
mcp.Required(),
),
)
handler := func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
environment, err := request.RequireString("environment")
if err != nil {
return mcp.NewToolResultError(err.Error()), nil
}
suggestion := fmt.Sprintf(
"Suggested tags: environment=%s, managed-by=azd, cost-center=<required>",
environment,
)
return mcp.NewToolResultText(suggestion), nil
}
return tool, handler
}
Тестирование сервера MCP
После добавления сервера MCP пересоберите расширение и проверьте, запускается ли сервер:
Перестройте расширение:
azd x buildЗапустите сервер MCP непосредственно, чтобы проверить его выполнение без ошибок:
azd tagger mcp startСервер запускает и прослушивает стандартные входные и выходные данные. Клиент MCP, например ИИ-агент, настроенный на использование вашего расширения, подключается к этому серверу, чтобы вызывать ваши инструменты.