Freigeben über


Hinzufügen von Plug-Ins von einem MCP-Server

MCP ist das Modellkontextprotokoll, es ist ein offenes Protokoll, das so konzipiert ist, dass zusätzliche Funktionen zu KI-Anwendungen problemlos hinzugefügt werden können. Weitere Informationen finden Sie in der Dokumentation . Der semantische Kernel ermöglicht es Ihnen, Plug-Ins von einem MCP-Server zu Ihren Agents hinzuzufügen. Dies ist nützlich, wenn Sie Plug-Ins verwenden möchten, die als MCP-Server verfügbar gemacht werden.

Der semantische Kernel unterstützt sowohl lokale MCP-Server über Stdio als auch Server, die über HTTPS eine Verbindung über SSE herstellen.

Hinzufügen von Plug-Ins von einem lokalen MCP-Server

Um einen lokal ausgeführten MCP-Server hinzuzufügen, können Sie die vertrauten MCP-Befehle verwenden, znpxdocker. B. oder uvx, wenn Sie einen dieser Befehle ausführen möchten, stellen Sie sicher, dass diese installiert sind.

Wenn Sie beispielsweise ihre Claude-Desktopkonfiguration oder die vscode-settings.jsonbetrachten, würden Sie etwa folgendes sehen:

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

Um dasselbe Plug-In für Ihren Kernel oder Agent verfügbar zu machen, gehen Sie wie folgt vor:

Hinweis

Stellen Sie sicher, dass Sie den semantischen Kernel mit dem mcp Extra installieren, beispielsweise um:

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

Ein SSE-basierter MCP-Server ist noch einfacher, da er nur die URL benötigt:

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

In beiden Fällen wird der asynchrone Kontext-Manager verwendet, um die Verbindung einzurichten und zu schließen, sie können Sie auch manuell ausführen:

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

Alle MCP-Plug-Ins haben zusätzliche Optionen:

  • load_tools: Gibt an, ob die Tools vom MCP-Server geladen werden sollen. Dies ist nützlich, wenn Sie wissen, dass keine Tools verfügbar sind. Der Standardwert ist "True".
  • load_prompts: Soll die Eingabeaufforderungen vom MCP-Server geladen werden oder nicht, was hilfreich ist, wenn Sie wissen, dass keine Eingabeaufforderungen verfügbar sind. Standardwert ist "True". Wir haben auch Fälle erlebt, in denen der Aufruf zum Laden von Eingabeaufforderungen hängt, wenn keine Eingabeaufforderungen vorhanden sind. Dies ist daher eine gute Option, um auf False festzulegen, wenn Sie wissen, dass keine Eingabeaufforderungen verfügbar sind.
  • request_timeout: Das Timeout für die Anforderungen an den MCP-Server ist nützlich, wenn Sie wissen, dass der Server manchmal nicht reagiert, und Sie möchten nicht, dass Ihre App hängen bleibt.

Hinweis

MCP-Dokumentation wird in Kürze für .Net verfügbar sein.

Hinweis

MCP-Dokumentation wird in Kürze für Java verfügbar sein.