다음을 통해 공유


MCP 서버에서 플러그 인 추가

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 설명서는 곧 제공될 예정입니다.