共用方式為


從 MCP 伺服器新增外掛程式

MCP 是模型內容通訊協定,它是開放通訊協定,其設計目的是讓其他功能輕鬆新增至 AI 應用程式,請參閱 以取得詳細資訊。 語意核心可讓您將外掛程式從 MCP 伺服器新增至代理程式。 當您想要使用做為 MCP 伺服器的外掛程式時,這會很有用。

語意核心支援多種 MCP 外掛程式類型,包括 MCPStdioPlugin 和 MCPStreamableHttpPlugin。 這些外掛程式可連線至本機 MCP 伺服器,以及透過 SSE over HTTPS 連線的伺服器。

從本機 MCP 伺服器新增外掛程式

若要在本機新增執行 MCP 伺服器,您可以使用熟悉的 MCP 命令,例如 npxdockeruvx,因此如果您想要執行其中一個命令,請確定已安裝這些命令。

例如,當您查看您的克勞德桌面設定,或 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 額外功能的 Semantic Kernel,例如:

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 推出。