MCP はモデル コンテキスト プロトコルであり、AI アプリケーションに追加の機能を簡単に追加できるように設計されたオープン プロトコルです。詳細については 、ドキュメントを 参照してください。 セマンティック カーネルを使用すると、MCP サーバーからエージェントにプラグインを追加できます。 これは、MCP サーバーとして使用できるプラグインを使用する場合に便利です。
セマンティック カーネルは、Stdio 経由のローカル MCP サーバー、または HTTPS 経由で SSE 経由で接続するサーバーの両方をサポートします。
ローカル MCP サーバーからプラグインを追加する
ローカルで実行されている MCP サーバーを追加するには、 npx
、 docker
、 uvx
などの使い慣れた 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 向けに近日公開予定です。