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();
'Cook AI' 카테고리의 다른 글
기상청 Open API를 활용한 날씨 MCP 서버를 만들어보자. (1) (0) | 2025.04.16 |
---|---|
Model Context Protocol (MCP)란 무엇인가? (1) | 2025.04.14 |
LLM Cache 사용하기 (0) | 2024.08.14 |
LLM Agent 기반 구글 캘린더 자동 예약 서비스 구성하기 (1) | 2024.08.09 |
LCEL을 사용하여 간단한 LLM 애플리케이션 구축 (0) | 2024.08.04 |