Bagikan melalui


Menambahkan plugin dari Server MCP

MCP adalah Protokol Konteks Model, ini adalah protokol terbuka yang dirancang untuk memungkinkan kemampuan tambahan ditambahkan ke aplikasi AI dengan mudah, lihat dokumentasi untuk informasi selengkapnya. Semantic Kernel memungkinkan Anda menambahkan plugin dari McP Server ke agen Anda. Ini berguna ketika Anda ingin menggunakan plugin yang tersedia sebagai Server MCP.

Semantic Kernel mendukung Server MCP lokal, melalui Stdio, atau server yang terhubung melalui SSE melalui HTTPS.

Menambahkan plugin dari Server MCP lokal

Untuk menambahkan server MCP yang berjalan secara lokal, Anda dapat menggunakan perintah MCP yang sudah dikenal, seperti npx, docker atau uvx, jadi jika Anda ingin menjalankan salah satu dari mereka, pastikan itu diinstal.

Misalnya ketika Anda melihat konfigurasi desktop claude Anda, atau vscode settings.json, Anda akan melihat sesuatu seperti ini:

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

Untuk membuat plugin yang sama tersedia untuk kernel atau agen Anda, Anda akan melakukan ini:

Nota

Pastikan untuk menginstal Semantic Kernel dengan mcp tambahan, misalnya:

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

Server MCP berbasis SSE bahkan lebih sederhana karena hanya membutuhkan 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

Dalam kedua kasus, manajer konteks asinkron digunakan untuk mengatur koneksi dan menutupnya, Anda juga dapat melakukan ini secara manual:

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

Semua plugin MCP memiliki opsi tambahan:

  • load_tools: Apakah memuat alat dari server MCP atau tidak, ini berguna ketika Anda tahu tidak ada alat yang tersedia, defaultnya adalah True.
  • load_prompts: Apakah memuat perintah dari server MCP atau tidak, ini berguna ketika Anda tahu tidak ada perintah yang tersedia, defaultnya adalah True. Kami juga telah mendengar kasus di mana panggilan untuk memuat prompt macet ketika tidak ada prompt, jadi ini adalah opsi yang baik untuk diatur ke False jika kita tahu tidak ada prompt yang tersedia.
  • request_timeout: Waktu habis untuk permintaan ke server MCP, ini berguna ketika Anda tahu server terkadang tidak merespons, dan Anda tidak ingin aplikasi Anda macet.

Nota

Dokumentasi MCP akan segera hadir untuk .Net.

Nota

Dokumentasi MCP akan segera hadir untuk Java.