Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Microsoft Agent Framework поддерживает интеграцию с серверами ПРОТОКОЛА MCP модели, позволяя агентам получать доступ к внешним средствам и службам. В этом руководстве показано, как подключиться к серверу MCP и использовать его средства в агенте.
Версию Agent Framework .NET можно использовать вместе с официальным пакетом SDK MCP C# , чтобы разрешить агенту вызывать инструменты MCP.
В следующем примере показано, как:
- Настройка и сервер MCP
- Получение списка доступных средств с сервера MCP
- Преобразование средств
AIFunctionMCP в "так, чтобы их можно было добавить в агент" - Вызов средств из агента с помощью вызова функции
Настройка клиента MCP
Сначала создайте клиент MCP, который подключается к нужному серверу MCP:
// Create an MCPClient for the GitHub server
await using var mcpClient = await McpClientFactory.CreateAsync(new StdioClientTransport(new()
{
Name = "MCPServer",
Command = "npx",
Arguments = ["-y", "--verbose", "@modelcontextprotocol/server-github"],
}));
В этом примере:
- Имя: понятное имя для подключения сервера MCP
- Команда: исполняемый файл для запуска сервера MCP (здесь используется npx для запуска пакета Node.js)
- Аргументы: аргументы командной строки, передаваемые серверу MCP
Получение доступных средств
После подключения получите список инструментов, доступных на сервере MCP:
// Retrieve the list of tools available on the GitHub server
var mcpTools = await mcpClient.ListToolsAsync().ConfigureAwait(false);
Метод ListToolsAsync() возвращает коллекцию инструментов, предоставляемых сервером MCP. Эти средства автоматически преобразуются в объекты AITool, которые можно использовать агентом.
Создание агента с помощью средств MCP
Создайте агент и предоставьте средства MCP во время инициализации:
AIAgent agent = new AzureOpenAIClient(
new Uri(endpoint),
new AzureCliCredential())
.GetChatClient(deploymentName)
.CreateAIAgent(
instructions: "You answer questions related to GitHub repositories only.",
tools: [.. mcpTools.Cast<AITool>()]);
Основные моменты:
- Инструкции. Укажите четкие инструкции, которые соответствуют возможностям средств MCP
-
Средства. Приведение средств MCP к
AIToolобъектам и их распространение в массив инструментов - Агент автоматически получит доступ ко всем средствам, предоставляемым сервером MCP
Использование агента
После настройки агент может автоматически использовать средства MCP для выполнения запросов пользователей:
// Invoke the agent and output the text result
Console.WriteLine(await agent.RunAsync("Summarize the last four commits to the microsoft/semantic-kernel repository?"));
Агент:
- Анализ запроса пользователя
- Определение необходимых средств MCP
- Вызов соответствующих средств с помощью сервера MCP
- Синтезирование результатов в последовательный ответ
Конфигурация среды
Обязательно настройте необходимые переменные среды:
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ??
throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";
Управление ресурсами
Всегда правильно удалять клиентские ресурсы MCP:
await using var mcpClient = await McpClientFactory.CreateAsync(...);
Использование await using обеспечивает правильное закрытие подключения клиента MCP при выходе из области.
Общие серверы MCP
Популярные серверы MCP включают:
-
@modelcontextprotocol/server-github: доступ к репозиториям и данным GitHub -
@modelcontextprotocol/server-filesystem: операции файловой системы -
@modelcontextprotocol/server-sqlite: доступ к базе данных SQLite
Каждый сервер предоставляет различные средства и возможности, расширяющие функциональные возможности агента. Эта интеграция позволяет агентам легко получать доступ к внешним данным и службам, сохраняя преимущества безопасности и стандартизации протокола контекста модели.
Полный исходный код и инструкции по выполнению этого примера доступны здесь.
Платформа агента Python обеспечивает комплексную поддержку интеграции с серверами протокола MCP модели с помощью нескольких типов подключений. Это позволяет агентам легко получать доступ к внешним средствам и службам.
Типы инструментов MCP
Платформа агента поддерживает три типа подключений MCP:
MCPStdioTool — локальные серверы MCP
Используйте MCPStdioTool для подключения к серверам MCP, которые выполняются в качестве локальных процессов с помощью стандартных входных и выходных данных:
import asyncio
from agent_framework import ChatAgent, MCPStdioTool
from agent_framework.openai import OpenAIChatClient
async def local_mcp_example():
"""Example using a local MCP server via stdio."""
async with (
MCPStdioTool(
name="calculator",
command="uvx",
args=["mcp-server-calculator"]
) as mcp_server,
ChatAgent(
chat_client=OpenAIChatClient(),
name="MathAgent",
instructions="You are a helpful math assistant that can solve calculations.",
) as agent,
):
result = await agent.run(
"What is 15 * 23 + 45?",
tools=mcp_server
)
print(result)
if __name__ == "__main__":
asyncio.run(local_mcp_example())
MCPStreamableHTTPTool — серверы HTTP/SSE MCP
Используется MCPStreamableHTTPTool для подключения к серверам MCP по протоколу HTTP с помощью событий Server-Sent:
import asyncio
from agent_framework import ChatAgent, MCPStreamableHTTPTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import AzureCliCredential
async def http_mcp_example():
"""Example using an HTTP-based MCP server."""
async with (
AzureCliCredential() as credential,
MCPStreamableHTTPTool(
name="Microsoft Learn MCP",
url="https://learn.microsoft.com/api/mcp",
headers={"Authorization": "Bearer your-token"},
) as mcp_server,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
name="DocsAgent",
instructions="You help with Microsoft documentation questions.",
) as agent,
):
result = await agent.run(
"How to create an Azure storage account using az cli?",
tools=mcp_server
)
print(result)
if __name__ == "__main__":
asyncio.run(http_mcp_example())
MCPWebsocketTool — серверы WebSocket MCP
Используйте MCPWebsocketTool для подключения к серверам MCP через подключения WebSocket:
import asyncio
from agent_framework import ChatAgent, MCPWebsocketTool
from agent_framework.openai import OpenAIChatClient
async def websocket_mcp_example():
"""Example using a WebSocket-based MCP server."""
async with (
MCPWebsocketTool(
name="realtime-data",
url="wss://api.example.com/mcp",
) as mcp_server,
ChatAgent(
chat_client=OpenAIChatClient(),
name="DataAgent",
instructions="You provide real-time data insights.",
) as agent,
):
result = await agent.run(
"What is the current market status?",
tools=mcp_server
)
print(result)
if __name__ == "__main__":
asyncio.run(websocket_mcp_example())
Популярные серверы MCP
Общие серверы MCP, которые можно использовать с платформой агента Python:
-
Калькулятор:
uvx mcp-server-calculator— математические вычисления -
Файловая система:
uvx mcp-server-filesystem— операции файловой системы -
GitHub:
npx @modelcontextprotocol/server-github— доступ к репозиторию GitHub -
SQLite:
uvx mcp-server-sqlite— операции базы данных
Каждый сервер предоставляет различные средства и возможности, расширяющие функциональные возможности агента, сохраняя преимущества безопасности и стандартизации протокола контекста модели.