Udostępnij za pośrednictwem


Dodawanie wtyczek z serwera MCP

MCP to protokół kontekstowy modelu. Jest to otwarty protokół, który umożliwia łatwe dodawanie dodatkowych funkcji do aplikacji sztucznej inteligencji. Aby uzyskać więcej informacji, zobacz dokumentację . Semantyczne jądro umożliwia dodawanie wtyczek z serwera MCP do agentów. Jest to przydatne, gdy chcesz użyć wtyczek udostępnianych jako serwer MCP.

Semantyczne jądro obsługuje zarówno lokalne serwery MCP, za pośrednictwem stdio, jak i serwery łączące się za pomocą protokołu SSE przez HTTPS.

Dodawanie wtyczek z lokalnego serwera MCP

Aby dodać lokalnie uruchomiony serwer MCP, możesz użyć znanych poleceń MCP, takich jak npx, docker lub uvx, więc jeśli chcesz uruchomić jeden z nich, upewnij się, że zostały zainstalowane.

Na przykład, gdy zajrzysz do konfiguracji pulpitu Claude lub VSCode settings.json, zobaczysz coś takiego:

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

Aby udostępnić tę samą wtyczkę dla jądra lub agenta, wykonaj następujące czynności:

Uwaga

Pamiętaj, aby zainstalować jądro semantyczne z dodatkiem mcp, na przykład:

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

Serwer MCP oparty na protokole SSE jest jeszcze prostszy, ponieważ wymaga tylko adresu 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

W obu przypadkach menedżer kontekstu asynchronicznego służy do konfigurowania połączenia i zamykania go, można również wykonać to ręcznie:

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()

Wszystkie wtyczki MCP mają dodatkowe opcje:

  • load_tools: Niezależnie od tego, czy należy załadować narzędzia z serwera MCP, jest to przydatne, jeśli wiesz, że nie ma dostępnych narzędzi, wartość domyślna to True.
  • load_prompts: Czy załadować komunikaty z serwera MCP, jest to przydatne, jeśli wiesz, że nie ma dostępnych komunikatów; domyślnie ustawione na True. Słyszeliśmy również przypadki, w których wywołanie ładowania monitów zawiesza się, gdy nie ma żadnych monitów, więc jest to dobra opcja, aby ustawić wartość False , jeśli wiesz, że nie ma dostępnych monitów.
  • request_timeout: limit czasu dla żądań do serwera MCP, jest to przydatne, gdy wiesz, że serwer czasami nie odpowiada i nie chcesz, aby aplikacja zawieszała się.

Uwaga

Dokumentacja mcp jest dostępna wkrótce dla platformy .Net.

Uwaga

Dokumentacja mcp jest dostępna wkrótce dla języka Java.