Condividi tramite


Aggiungere plug-in da un server MCP

MCP è il protocollo di contesto del modello, è un protocollo aperto progettato per consentire l'aggiunta di funzionalità aggiuntive alle applicazioni di intelligenza artificiale con facilità, vedere la documentazione per altre informazioni. Il kernel semantico consente di aggiungere plug-in da un server MCP agli agenti. Questo è utile quando si desidera usare plugin resi disponibili come server MCP.

Il kernel semantico supporta entrambi i server MCP locali, tramite Stdio o server che si connettono tramite SSE tramite HTTPS.

Aggiungere plugin da un server MCP locale

Per aggiungere un server MCP in esecuzione in locale, è possibile usare i comandi MCP noti, ad esempio npx, docker o uvx, quindi se si vuole eseguire uno di questi, assicurarsi che siano installati.

Ad esempio, quando si esamina la configurazione del desktop claude o il vscode settings.json, viene visualizzato un aspetto simile al seguente:

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

Per rendere disponibile lo stesso plug-in per il kernel o l'agente, eseguire questa operazione:

Annotazioni

Assicurarsi di installare Semantic Kernel con l'optional mcp, ad esempio:

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

Un server MCP basato su SSE è ancora più semplice perché richiede solo l'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

In entrambi i casi, la gestione del contesto asincrona viene usata per configurare la connessione e chiuderla, è anche possibile eseguire questa operazione manualmente:

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

Tutti i plug-in MCP hanno opzioni aggiuntive:

  • load_tools: indica se caricare o meno gli strumenti dal server MCP, ciò è utile quando si sa che non sono disponibili strumenti, il valore predefinito è True.
  • load_prompts: indica se caricare o meno le richieste dal server MCP, ciò è utile quando si sa che non sono disponibili richieste, il valore predefinito è True. Abbiamo anche sentito casi in cui la chiamata per caricare i prompt si blocca quando non ci sono richieste, quindi questa è una buona opzione per impostare su False se si sa che non sono disponibili richieste.
  • request_timeout: timeout per le richieste al server MCP, utile quando si sa che il server a volte non risponde e non si vuole che l'app si blocchi.

Annotazioni

La documentazione MCP sarà presto disponibile per .Net.

Annotazioni

La documentazione MCP sarà presto disponibile per Java.