MCP는 모델 컨텍스트 프로토콜이며, AI 애플리케이션에 추가 기능을 쉽게 추가할 수 있도록 설계된 개방형 프로토콜입니다. 자세한 내용은 설명서를 참조하세요. 의미 체계 커널을 사용하면 MCP 서버의 플러그 인을 에이전트에 추가할 수 있습니다. MCP 서버로 사용할 수 있는 플러그 인을 사용하려는 경우에 유용합니다.
의미 체계 커널은 MCPStdioPlugin 및 MCPStreamableHttpPlugin을 비롯한 여러 MCP 플러그 인 유형을 지원합니다. 이러한 플러그 인을 사용하면 로컬 MCP 서버와 HTTPS를 통해 SSE를 통해 연결하는 서버에 연결할 수 있습니다.
로컬 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 추가 기능과 함께 설치해야 합니다, 예를 들어:
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용으로 곧 제공될 예정입니다.
비고
JAVA용 MCP 설명서는 곧 제공될 예정입니다.