Cook AI

LangChain MCP 어댑터를 사용하여 SSE 서버 포트 변경하는 방법

앤써니킴 2025. 4. 11. 12:41

LangChain MCP 어댑터를 사용하여 SSE(Server-Sent Events) 서버를 구현할 때 포트를 변경하려면, MCP 서버 설정에서 포트를 명시적으로 지정해야 합니다. 아래는 이를 수행하는 방법에 대한 단계별 설명입니다.


1. MCP 서버 설정 확인

LangChain MCP 어댑터는 @modelcontextprotocol/sdk 또는 관련 라이브러리를 사용하여 SSE 전송 방식을 설정합니다. SSE 서버는 기본적으로 특정 포트(예: 8080)를 사용하지만, 이를 변경하려면 서버 초기화 시 포트 옵션을 지정해야 합니다.


2. 포트 변경 방법

LangChain MCP 어댑터를 통해 SSE 서버를 설정할 때, MCPServer 객체의 transport 옵션에서 포트를 지정할 수 있습니다. 예를 들어, Python 기반의 MCP 서버를 사용하는 경우, 다음과 같이 설정합니다:

from mcp.server.fastmcp import FastMCP

# MCP 서버 생성, 포트를 9000으로 변경
mcp = FastMCP(name="MyServer", port=9000)

# SSE 전송 방식으로 서버 실행
mcp.run(transport="sse")
  • port: 원하는 포트 번호를 지정합니다(예: 9000).
  • 기본적으로 포트를 지정하지 않으면 8000번 포트가 사용됩니다.

3. 클라이언트에서 포트 반영

서버의 포트를 변경한 경우, 클라이언트에서도 해당 포트로 연결하도록 설정해야 합니다. LangChain MCP 어댑터를 사용하는 JavaScript/TypeScript 클라이언트의 예시는 다음과 같습니다:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
import { loadMcpTools } from "@langchain/mcp-adapters";

// 클라이언트 생성
const client = new Client({ name: "my-client" });

// 새로운 포트(9000)로 SSE 전송 설정
const transport = new SSEClientTransport({
  url: "http://localhost:9000/sse", // 변경된 포트로 URL 설정
});

// 클라이언트 연결
await client.connect(transport);

// MCP 도구 로드
const tools = await loadMcpTools("my-server", client);
  • url: 서버의 새 포트 번호(예: 9000)를 포함한 SSE 엔드포인트 URL을 지정합니다.
  • 엔드포인트 경로(/sse)는 기본값이며, 서버 설정에 따라 다를 수 있으니 확인하세요.

4. 다중 서버 환경

만약 MultiServerMCPClient를 사용하여 여러 MCP 서버에 연결하는 경우, 각 서버의 포트를 개별적으로 지정할 수 있습니다:

import { MultiServerMCPClient } from "@langchain/mcp-adapters";

// 다중 서버 설정
const client = new MultiServerMCPClient({
  servers: {
    "my-server": {
      transport: "sse",
      url: "http://localhost:9000/sse", // 변경된 포트 지정
    },
  },
});

// 연결 초기화
await client.initializeConnections();

// 도구 가져오기
const tools = await client.getTools();

5. 주의사항

  • 포트 충돌: 변경하려는 포트가 다른 서비스에 의해 이미 사용 중인지 확인하세요.
  • 방화벽 설정: 서버가 실행되는 환경에서 지정한 포트가 방화벽에 의해 차단되지 않도록 허용해야 합니다.
  • CORS 설정: SSE 연결 시 CORS 정책이 적용될 수 있으므로, 서버에서 allowOrigin 등의 CORS 설정을 확인하세요.
  • 로그 확인: 디버깅을 위해 서버와 클라이언트의 로그를 활성화하여 연결 문제를 추적하세요. 예를 들어, JavaScript에서는 DEBUG 환경 변수를 설정할 수 있습니다:
  • export DEBUG=langchain:mcp-adapters

6. 대체 방법: 구성 파일 사용

구성 파일(mcp.json)을 사용하여 포트를 지정할 수도 있습니다. 예를 들어:

{
  "servers": {
    "my-server": {
      "transport": "sse",
      "url": "http://localhost:9000/sse"
    }
  }
}

그리고 클라이언트에서 이 파일을 로드합니다:

import { MultiServerMCPClient } from "@langchain/mcp-adapters";

const client = MultiServerMCPClient.fromConfigFile("./mcp.json");
await client.initializeConnections();