Compartilhar via


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 servidores MCP locais, por meio de Stdio ou servidores que se conectam por meio da 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, quando você olha para a configuração de desktop do Claude, ou o settings.jsondo vscode, verá 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

Garanta que o Kernel Semântico esteja instalado com a opção extra mcp, como no seguinte 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 casos em que a chamada para carregar prompts fica pendente quando não há prompts, portanto, essa é uma boa opção para definir como False se você sabe que não há prompts disponíveis.
  • 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.