MCP 是模型內容通訊協定,它是開放通訊協定,其設計目的是讓其他功能輕鬆新增至 AI 應用程式,請參閱 檔 以取得詳細資訊。 語意核心可讓您將外掛程式從 MCP 伺服器新增至代理程式。 當您想要使用做為 MCP 伺服器的外掛程式時,這會很有用。
語意核心支援多種 MCP 外掛程式類型,包括 MCPStdioPlugin 和 MCPStreamableHttpPlugin。 這些外掛程式可連線至本機 MCP 伺服器,以及透過 SSE over HTTPS 連線的伺服器。
從本機 MCP 伺服器新增外掛程式
若要在本機新增執行 MCP 伺服器,您可以使用熟悉的 MCP 命令,例如 npx、 docker 或 uvx,因此如果您想要執行其中一個命令,請確定已安裝這些命令。
例如,當您查看您的克勞德桌面設定,或 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 推出。