Adicionar plug-ins de um servidor MCP

MCP é o Protocolo de Contexto de Modelo, é um protocolo aberto que foi projetado para permitir que recursos adicionais sejam adicionados a aplicativos de IA com facilidade, consulte a documentação para obter mais informações. O Kernel Semântico permite que você adicione plug-ins de um servidor MCP aos seus agentes. Isso é útil quando você deseja usar plug-ins que são disponibilizados como um servidor MCP.

O Kernel Semântico dá suporte a vários tipos de plug-in MCP, incluindo MCPStdioPlugin e MCPStreamableHttpPlugin. Esses plug-ins permitem conexões com servidores MCP locais e servidores que se conectam por meio do SSE via HTTPS.

Adicionar plug-ins de um servidor MCP local

Para adicionar um servidor MCP em execução localmente, você pode usar os comandos MCP familiares, como npx, docker ou uvx, portanto, se você quiser executar um deles, verifique se eles estão instalados.

Por exemplo, ao verificar a configuração do Claude para desktop ou o arquivo `settings.json` do VS Code, você veria algo assim:

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

Para disponibilizar o mesmo plug-in para seu kernel ou agente, você faria isso:

Observação

Certifique-se de instalar o Kernel semântico com o extra mcp, por exemplo:

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

Um servidor MCP baseado em SSE é ainda mais simples, pois ele só precisa da 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

Em ambos os casos, o gerenciador de contexto assíncrono é usado para configurar a conexão e fechá-la, você também pode fazer isso 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()

Todos os plug-ins do MCP têm opções adicionais:

  • load_tools: independentemente de carregar ou não as ferramentas do servidor MCP, isso é útil quando você sabe que não há ferramentas disponíveis, o padrão é True.
  • load_prompts: se você deve ou não carregar os prompts do servidor MCP, isso é útil quando você sabe que não há prompts disponíveis, o padrão é True. Também ouvimos relatos de casos em que a chamada para carregar prompts trava quando não há prompts disponíveis; portanto, definir esse valor como False é uma boa opção se você souber que não há prompts.
  • request_timeout: o tempo limite para as solicitações para o servidor MCP, isso é útil quando você sabe que o servidor às vezes não está respondendo e você não quer que seu aplicativo seja travado.

Observação

A Documentação do MCP estará disponível em breve para .Net.

Observação

A Documentação do MCP estará disponível em breve para Java.