AI와 외부 시스템, 도구, 데이터베이스를 안정적으로 효율적으로 연결하려면 표준화된 프로토콜이 필수입니다.
MCP(Model Context Protocol)는 이러한 연결을 위한 핵심 표준으로, 프로토콜 협상 및 기능 교환 과정을 통해 다양한 AI와 도구가 유연하게 통신할 수 있게 해줍니다.
MCP(Model Context Protocol)는 이러한 연결을 위한 핵심 표준으로, 프로토콜 협상 및 기능 교환 과정을 통해 다양한 AI와 도구가 유연하게 통신할 수 있게 해줍니다.
이번 포스팅에서는 MCP의 프로토콜 협상 절차와 기능 교환 방식, 그리고 실무 적용 시 주의할 점을 살펴 정리합니다.
MCP 프로토콜 협상은 클라이언트와 서버가 연결을 시작할 때, 서로 지원 가능한 프로토콜 버전과 기능(도구, 리소스)을 자동으로 맞추는 과정입니다.
이 과정을 통해 버전 불일치, 기능 미지원 등으로 인한 오류를 사전에 방지하고, 실제 사용할 수 있는 기능만 활성화하여 안정적인 통합을 보장합니다.
{
"method": "initialize",
"params": {
"protocolVersion": ["1.0", "2.0"],
"capabilities": {
"tools": ["search", "fileRead"],
"resources": ["documents", "images"]
},
"clientInfo": {"name": "MyAgent", "version": "1.0"}
}
}
{
"result": {
"protocolVersion": "2.0",
"capabilities": {
"tools": ["search"],
"resources": ["documents"]
},
"serverInfo": {"name": "DocServer", "version": "1.2"},
"instructions": "API_KEY 필요"
}
}
기능 교환 원칙
실제 코드
// 도구 호출
{
"method": "tools/call",
"params": {"name": "search", "arguments": {"query": "MCP 프로토콜"}}
}
// 기능 변경 알림
{
"method": "listChanged",
"params": {"added": ["imageSearch"], "removed": []}
}
버전 불일치
기능 불일치
const express = require('express');
const app = express();
app.use(express.json());
// 지원 가능한 기능 목록
const serverCapabilities = {
tools: ['search', 'calculator'],
resources: ['documents', 'images']
};
// 초기화 핸들러
app.post('/mcp', (req, res) => {
if (req.body.method === 'initialize') {
const clientProtocols = req.body.params.protocolVersion;
const clientCapabilities = req.body.params.capabilities;
// 프로토콜 버전 선택 (최신 버전 우선)
const supportedVersion = clientProtocols.includes('2.0') ? '2.0' : '1.0';
// 공통 기능 필터링
const negotiatedCapabilities = {
tools: clientCapabilities.tools.filter(tool =>
serverCapabilities.tools.includes(tool)
),
resources: clientCapabilities.resources.filter(resource =>
serverCapabilities.resources.includes(resource)
)
};
// 응답 반환
res.json({
result: {
protocolVersion: supportedVersion,
capabilities: negotiatedCapabilities,
serverInfo: {name: "MCPServer", version: "1.0"},
instructions: "API_KEY 필요"
}
});
} else {
// 다른 메서드 처리
// ...
}
});
app.listen(3000, () => {
console.log('MCP 서버가 3000 포트에서 실행 중입니다.');
});
MCP의 프로토콜 협상 및 기능 교환 메커니즘은 AI와 다양한 외부 시스템, 도구, 데이터베이스가 맞춤형 상호 작용을 자동으로 맞추고, 안전하게 통합될 수 있도록 핵심적인 역할을 합니다
실무에서는 이 구조를 이해하고, 각 단계별로 적절한 예외 처리와 보안 설정을 적용하는 것이 중요합니다.