Поделиться через


Добавьте подключаемые модули с сервера MCP

MCP — это протокол контекста модели, он является открытым протоколом, который позволяет добавлять дополнительные возможности в приложения ИИ с легкостью, см. в документации по дополнительным сведениям. Семантическое ядро позволяет добавлять плагины из сервера MCP в ваши агенты. Это полезно, если вы хотите использовать подключаемые модули, доступные в качестве сервера MCP.

Семантическое ядро поддерживает несколько типов MCP-плагинов, включая MCPStdioPlugin и MCPStreamableHttpPlugin. Эти подключаемые модули позволяют соединяться с локальными серверами MCP и серверами, использующими протокол SSE поверх HTTPS.

Добавьте подключаемые модули с локального сервера MCP

Чтобы добавить локальный сервер MCP, вы можете использовать знакомые команды MCP, напримерnpxdocker, или uvx, поэтому, если вы хотите запустить один из них, убедитесь, что они установлены.

Например, при просмотре конфигурации рабочего стола claude или vscode settings.jsonвы увидите следующее:

{
    "mcpServers": {
        "github": {
           "command": "docker",
           "args": [
                 "run",
                 "-i",
                 "--rm",
                 "-e",
                 "GITHUB_PERSONAL_ACCESS_TOKEN",
                 "ghcr.io/github/github-mcp-server"
           ],
           "env": {
                 "GITHUB_PERSONAL_ACCESS_TOKEN": "..."
           }
        }
    }
}

Чтобы обеспечить доступность того же подключаемого модуля для вашего ядра или агента, выполните следующее:

Замечание

Обязательно установите семантическое ядро с дополнением mcp, например:

pip install semantic-kernel[mcp]
import os
from semantic_kernel import Kernel
from semantic_kernel.connectors.mcp import MCPStdioPlugin

async def main():
    async with MCPStdioPlugin(
        name="Github",
        description="Github Plugin",
        command="docker",
        args=["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"],
        env={"GITHUB_PERSONAL_ACCESS_TOKEN": os.getenv("GITHUB_PERSONAL_ACCESS_TOKEN")},
    ) as github_plugin:
        kernel = Kernel()
        kernel.add_plugin(github_plugin)
        # Do something with the kernel

Сервер MCP на основе SSE еще проще, так как он просто нуждается в URL-адресе:

import os
from semantic_kernel import Kernel
from semantic_kernel.connectors.mcp import MCPSsePlugin

async def main():
    async with MCPSsePlugin(
        name="Github",
        description="Github Plugin",
        url="http://localhost:8080",
    ) as github_plugin:
        kernel = Kernel()
        kernel.add_plugin(github_plugin)
        # Do something with the kernel

В обоих случаях диспетчер асинхронного контекста используется для настройки подключения и закрытия его, это также можно сделать вручную:

import os
from semantic_kernel import Kernel
from semantic_kernel.connectors.mcp import MCPSsePlugin

async def main():
    plugin = MCPSsePlugin(
        name="Github",
        description="Github Plugin",
        url="http://localhost:8080",
    )
    await plugin.connect()   
    kernel = Kernel()
    kernel.add_plugin(github_plugin)
    # Do something with the kernel
    await plugin.close()

Все подключаемые модули MCP имеют дополнительные параметры:

  • load_tools: следует ли загружать средства с сервера MCP, это полезно при отсутствии доступных средств, значение по умолчанию — True.
  • load_prompts: следует ли загружать запросы с сервера MCP, это полезно при отсутствии доступных запросов, значение по умолчанию — True. Мы также слышали о случаях, когда вызов загрузки запросов зависает, если запросы отсутствуют, поэтому, если вы знаете, что запросы недоступны, стоит установить значение False.
  • request_timeout: время ожидания для запросов к серверу MCP полезно, если вы знаете, что сервер иногда не отвечает, и вы не хотите, чтобы приложение зависло.

Замечание

Документация MCP скоро появится для .Net.

Замечание

Документация MCP скоро появится для Java.