次の方法で共有


MCP サーバーからプラグインを追加する

MCP はモデル コンテキスト プロトコルであり、AI アプリケーションに追加の機能を簡単に追加できるように設計されたオープン プロトコルです。詳細については 、ドキュメントを 参照してください。 セマンティック カーネルを使用すると、MCP サーバーからエージェントにプラグインを追加できます。 これは、MCP サーバーとして使用できるプラグインを使用する場合に便利です。

セマンティック カーネルでは、MCPStdioPlugin や MCPStreamableHttpPlugin など、複数の MCP プラグインの種類がサポートされています。 これらのプラグインを使用すると、ローカル MCP サーバーと、HTTPS 経由で SSE 経由で接続するサーバーの両方に接続できます。

ローカル MCP サーバーからプラグインを追加する

ローカルで実行されている MCP サーバーを追加するには、 npxdockeruvxなどの使い慣れた MCP コマンドを使用できます。そのため、いずれかを実行する場合は、インストールされていることを確認します。

たとえば、クロード デスクトップの構成や vscode settings.jsonを調べた場合、次のようになります。

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

カーネルまたはエージェントで同じプラグインを使用できるようにするには、次の操作を行います。

次に例を示しますが、セマンティック カーネルを mcp 追加でインストールしてください。

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

SSE ベースの MCP サーバーは、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

どちらの場合も、非同期コンテキスト マネージャーを使用して接続をセットアップして閉じます。手動で行うこともできます。

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

すべての MCP プラグインには、追加のオプションがあります。

  • load_tools: MCP サーバーからツールを読み込むかどうかに関係なく、これは使用可能なツールがないことがわかっている場合に便利です。既定値は True です。
  • load_prompts: MCP サーバーからプロンプトを読み込むかどうかに関係なく、これは使用可能なプロンプトがないことがわかっている場合に便利です。既定値は True です。 また、プロンプトがない場合にプロンプトを読み込む呼び出しがハングするケースも聞いたことがあるため、プロンプトが使用できないことがわかっている場合は、 False に設定することをお勧めします。
  • request_timeout: MCP サーバーへの要求のタイムアウト。これは、サーバーが応答しないことがあり、アプリをハングさせたくない場合に便利です。

MCP ドキュメントは、.Net 向けに近日公開予定です。

MCP ドキュメントは、Java 向けに近日公開予定です。