MCP 에이전트-툴 통신 표준과 엔터프라이즈 통합 아키텍처
MCP의 메시지 구조와 도구 호출 수명주기, IDE 통합 방식, 엔터프라이즈 보안 및 멀티에이전트 설계 기준을 다룬다.
2026-08-14 · 최초 발행 2026-08-02
Model Context Protocol(MCP)은 2026년 에이전트와 도구 사이의 통신 규격으로 빠르게 수렴하고 있다. 2026년 상반기 누적 설치 건수는 9700만을 넘어섰다. VS Code와 JetBrains가 네이티브 지원을 선언했고, Google의 Open Knowledge Format(OKF) 공개와 Linux Foundation 거버넌스 편입도 이 흐름에 힘을 보탰다.
MCP를 특정 AI 기업의 전용 연결 규격으로만 보기 어려워진 이유다. 실무의 관심사는 채택 여부보다 IDE와 사내 시스템, 여러 에이전트를 어떤 구조로 연결하고 통제할지에 놓여 있다.
전용 프로토콜에서 공통 통신 계층으로
Anthropic은 2024년 11월 MCP를 오픈소스로 공개했다. 초기에는 Claude 생태계에 한정된 프로토콜이라는 인식이 강했지만, 2025년 하반기부터 OpenAI, Google, Microsoft가 차례로 지원을 선언하면서 범용 에이전트 통신 계층으로 입지가 달라졌다.
개발 현장에서 확산을 앞당긴 계기는 IDE 통합이었다. VS Code 1.90부터 .vscode/mcp.json에서 MCP 서버 연결을 관리할 수 있게 됐고, JetBrains는 IntelliJ 플랫폼 전체에 MCP 클라이언트를 내장했다. 개발자가 일상적으로 사용하는 도구에서 곧바로 서버를 연결할 수 있게 되면서 MCP 서버 생태계도 빠르게 성장했다.
Google의 OKF 공개는 지식 컨텍스트를 다루는 범위를 넓혔다. 기존 Knowledge Graph 포맷이 개방되고 MCP의 지식 컨텍스트 표현 계층과 연동하는 스키마가 등장하면서, 도메인 지식을 표준화된 형태로 에이전트 사이에 공유할 수 있게 됐다.
거버넌스도 바뀌었다. 2026년 초 MCP 사양이 Linux Foundation 산하 AI & Data Foundation(AIDF)으로 이관됐다. 이후 버전 관리와 하위 호환성 정책은 공식 거버넌스 체계에서 다뤄지기 시작했다.
JSON-RPC 위에서 도구와 컨텍스트를 다루는 방식
MCP는 JSON-RPC 2.0을 토대로 AI 에이전트에 필요한 기능을 확장한 프로토콜이다. 전송 계층으로는 로컬 연결을 위한 stdio, 원격 통신을 위한 HTTP+SSE, 양방향 스트리밍을 위한 WebSocket을 지원한다.
프로토콜이 다루는 원시 타입은 역할에 따라 구분된다.
| 원시 타입 | 역할 | 예시 |
|---|---|---|
| Tools | 에이전트가 실행할 수 있는 함수형 도구 | search_web, execute_code, read_file |
| Resources | 에이전트가 읽는 데이터 소스 | 파일, DB 레코드, API 응답 캐시 |
| Prompts | 반복해서 사용할 수 있는 프롬프트 템플릿 | 도메인별 시스템 프롬프트, 워크플로우 가이드 |
Tools가 실행 가능한 행위를 노출한다면 Resources는 참조할 데이터를 제공한다. Prompts는 특정 업무나 도메인에서 재사용할 지시 구조를 맡는다.
연결 협상에서 실행 결과 반환까지
클라이언트와 서버의 관계는 초기화, 기능 협상, 탐색, 호출, 결과 반환의 순서로 이어진다.
Initialize 단계에서는 양쪽이 지원하는 MCP 버전과 원시 타입, 실험적 기능 플래그를 교환한다. protocolVersion은 현재 "2025-11-05"와 같은 날짜 기반 형식을 사용한다. Linux Foundation 편입 이후에는 SemVer 체계로 전환할 예정이다.
tools/list 요청을 받으면 서버는 도구 이름과 설명, JSON Schema 기반 입력 스키마를 반환한다. 에이전트는 이 메타데이터를 근거로 작업에 맞는 도구를 고른다.
실제 실행은 tools/call 요청으로 시작한다. 요청에는 name과 arguments가 들어가며, 서버는 텍스트·이미지·리소스 참조 등을 담은 content 배열로 결과를 돌려준다.
OKF와 Resources를 연결한 지식 참조
Google OKF는 MCP Resources 레이어와 결합해 구조화된 도메인 지식을 공유하는 형식을 제공한다.
이 구조의 중심에는 URI 기반 리소스 식별자가 있다. 에이전트가 resource://okf/entity/Q12345 형식으로 지식 엔티티를 참조하면 MCP 서버가 해당 엔티티의 최신 상태를 제공한다. 서로 다른 에이전트도 같은 지식 베이스를 동일한 식별 방식으로 조회할 수 있다.
여러 에이전트가 같은 비즈니스 엔티티를 참조할 때 일관성을 유지한다는 점에서는 마스터 데이터 관리(MDM)의 AI 확장으로 볼 수 있다.
VS Code 프로젝트와 사용자 환경에 서버 연결하기
VS Code는 프로젝트 단위 설정과 사용자 단위 설정을 구분한다. 프로젝트 설정은 .vscode/mcp.json에 두고, 사용자 설정은 settings.json의 mcp.servers 키에 정의한다.
{
"servers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "${workspaceFolder}"],
"env": {}
},
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp",
"headers": {
"Authorization": "Bearer ${env:GITHUB_TOKEN}"
}
},
"internal-db": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/mcp-servers/db-server.js"],
"env": {
"DB_CONNECTION": "${env:DATABASE_URL}"
}
}
}
}
GitHub Copilot Agent Mode는 이 설정을 읽어 Copilot Chat에서 MCP 서버의 도구를 호출하도록 연결한다. 사용자가 #server-name 해시 태그로 서버를 지정할 수도 있고, 에이전트가 작업에 맞는 도구를 선택하도록 둘 수도 있다.
JetBrains에서 IDE 액션까지 도구로 노출하기
JetBrains AI Assistant는 2025.2 버전부터 MCP를 내장 지원한다. 전역 서버는 ~/.config/JetBrains/mcp-settings.json에 등록하고, 프로젝트별 서버는 .idea/mcp.json으로 구성한다.
JetBrains 환경에는 IDE 컨텍스트 MCP 서버가 별도로 내장돼 있다. 에이전트는 jetbrains://ide/open-file, jetbrains://ide/run-tests 같은 내부 액션을 MCP 도구로 호출할 수 있다. 코드 편집과 테스트 실행을 하나의 에이전트 워크플로우 안에서 연결할 때 유용한 구조다.
사내 MCP는 게이트웨이에서 통제한다
여러 에이전트가 Git, CI/CD, 문서, 데이터베이스, 모니터링 시스템에 접근한다면 서버를 개별 연결하는 것만으로는 충분하지 않다. 인증과 권한, 호출 제한, 감사 기록을 한곳에서 다룰 수 있는 MCP 게이트웨이가 필요하다.
MCP HTTP 서버는 OAuth 2.1 기반 Bearer 토큰 인증을 지원한다. 권한은 서버 단위보다 도구 단위로 세분화할 수 있다. 읽기 전용 리소스는 모든 에이전트에 허용하되 쓰기 도구는 승인된 에이전트에만 열어 두는 식이다. 동적 클라이언트 등록(Dynamic Client Registration)은 에이전트 신원을 관리하는 데 사용한다.
보안 모델은 제로트러스트 관점으로 설계할 수 있다. 에이전트가 내부 네트워크에서 동작하더라도 MCP 게이트웨이는 요청마다 인증과 인가를 수행하고, 최소 권한 원칙에 따라 접근 범위를 제한한다. 자동화된 호출을 추적하려면 감사 로그도 같은 경계에서 수집해야 한다.
MCP 자체는 상태를 보유하지 않는다. 따라서 멀티에이전트의 공유 컨텍스트는 별도의 Resources 레이어로 구현한다. resource://session/{session-id}/context URI로 현재 작업 상태를 공유하고, 서버에서는 Redis 같은 분산 캐시를 이용해 동기화할 수 있다.
Function Calling과 프레임워크 도구의 차이
MCP, OpenAI Function Calling, LangChain Tool Interface는 모두 모델과 도구를 연결하지만 추상화 범위와 운영 방식이 다르다.
| 비교 항목 | MCP | OpenAI Function Calling | LangChain Tool Interface |
|---|---|---|---|
| 표준 주체 | Linux Foundation (오픈) | OpenAI (독점) | LangChain (오픈소스 프레임워크) |
| 전송 프로토콜 | stdio / HTTP+SSE / WebSocket | HTTPS REST | Python 함수 호출 (로컬) |
| 도구 정의 방식 | JSON Schema + 서버 선언 | JSON Schema (인라인) | Python 클래스 상속 |
| 다중 에이전트 지원 | 내장 (멀티서버) | 제한적 | 프레임워크 레벨 |
| IDE 통합 | VS Code, JetBrains 네이티브 | 제한적 | 없음 |
| 모델 독립성 | 완전 모델 독립 | GPT 시리즈 종속 | 모델 독립 (어댑터 필요) |
| 스트리밍 지원 | SSE 기반 진행 상황 스트리밍 | 없음 | 없음 |
| 보안 표준 | OAuth 2.1, TLS | API 키 | 구현체 의존 |
| 생태계 크기 | 9700만+ 설치 | GPT 플러그인 (제한) | 수천 개 커뮤니티 도구 |
| 거버넌스 | Linux Foundation | 단일 기업 | 오픈소스 커뮤니티 |
| 적합 용도 | 범용 에이전트 통신 표준 | OpenAI 모델 특화 | Python 에이전트 프레임워크 |
Claude, GPT, Gemini 등 여러 모델을 함께 운영하거나 VS Code와 JetBrains 기반 워크플로우를 사용한다면 MCP가 맞는다. 사내 도구의 연결 방식을 통일하고 특정 AI 공급업체에 장기적으로 종속되지 않으려는 환경에도 해당한다.
GPT-4o 이상 모델만 사용하는 단순한 시나리오라면 OpenAI Function Calling을 선택할 수 있다. 이미 OpenAI API 인프라가 마련돼 있거나 빠른 프로토타이핑이 우선인 경우도 같은 범주다.
LangChain Tool Interface는 Python 중심 에이전트 파이프라인에 어울린다. LangGraph와 LangSmith 등 LangChain 생태계를 이미 사용하고 있다면 프레임워크 안에서 도구를 연결할 수 있다.
거버넌스가 바꾼 버전 관리와 상호운용성
Linux Foundation AIDF 편입 이후 버전과 호환성 정책이 공식화됐다. 현재 사용하는 날짜 기반 버전 2025-11-05는 SemVer 기반 MCP 2.0으로 전환할 예정이다. 하위 호환성은 최소 18개월 동안 보장하고, Deprecation은 최소 두 개 마이너 버전 전에 공지한다.
표준화 작업은 역할별 Working Group에서 진행한다. Security WG는 OAuth 2.1과 mTLS 가이드라인을 포함한 인증·권한 표준을 맡는다. Interop WG는 여러 MCP 서버 사이의 컨텍스트 공유를, Registry WG는 공식 MCP 서버 레지스트리 운영 기준을 다룬다.
Anthropic, Google, Microsoft, JetBrains, Red Hat 등은 Steering Committee에 참여한다. 사양 변경은 RFC(Request for Comments) 절차를 거쳐 공개 검토한 뒤 반영한다.
이 구조는 소프트웨어 아키텍처 관점에서 MSA의 서비스 메시 개념과 연결해 이해할 수 있다. 각 MCP 서버는 독립적으로 배포·운영되는 마이크로서비스에 해당하고, MCP 호스트는 API 게이트웨이 역할을 한다. 설계 과정에서는 에이전트 시스템의 계층 구조, 프로토콜 표준화 효과, 멀티에이전트 컨텍스트 일관성을 함께 다뤄야 한다.
읽기 전용 데이터베이스 도구 구현
다음 코드는 TypeScript SDK로 MCP 서버에 데이터베이스 조회 도구와 스키마 리소스를 등록하는 최소 구현이다.
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "enterprise-db-server",
version: "1.0.0",
});
// 도구 등록: DB 쿼리 실행
server.tool(
"query_database",
"내부 데이터베이스에 읽기 전용 SQL 쿼리를 실행합니다",
{
sql: z.string().describe("실행할 SELECT 쿼리"),
database: z.enum(["analytics", "product", "user"]).describe("대상 데이터베이스"),
},
async ({ sql, database }) => {
// SQL 인젝션 방지: 읽기 전용 검증
if (!sql.trim().toUpperCase().startsWith("SELECT")) {
return { content: [{ type: "text", text: "읽기 전용 쿼리만 허용됩니다" }], isError: true };
}
const result = await executeQuery(database, sql);
return {
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
};
}
);
// 리소스 등록: 스키마 정보
server.resource(
"schema",
new ResourceTemplate("schema://{database}/{table}", { list: undefined }),
async (uri, { database, table }) => {
const schema = await getTableSchema(database as string, table as string);
return {
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(schema) }],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);
query_database 도구는 SELECT로 시작하는 쿼리만 허용한다. 스키마 정보는 schema://{database}/{table} 리소스로 제공해 실행 도구와 참조 데이터를 분리한다.
세션 컨텍스트를 에이전트 사이에 공유하기
공유 상태는 MCP 서버 외부 저장소에 두고, 에이전트가 도구를 통해 갱신하도록 구성할 수 있다.
// 공유 세션 컨텍스트 MCP 서버
server.tool(
"share_context",
"현재 작업 컨텍스트를 다른 에이전트와 공유합니다",
{
sessionId: z.string(),
contextKey: z.string(),
contextValue: z.any(),
ttlSeconds: z.number().default(3600),
},
async ({ sessionId, contextKey, contextValue, ttlSeconds }) => {
await redis.setex(
`mcp:session:${sessionId}:${contextKey}`,
ttlSeconds,
JSON.stringify(contextValue)
);
return { content: [{ type: "text", text: `컨텍스트 저장 완료: ${contextKey}` }] };
}
);
세션과 컨텍스트 키를 조합한 저장 구조를 사용하면 코딩·리뷰·테스트 에이전트가 같은 작업 상태를 참조할 수 있다. 프로토콜은 호출 경계를 담당하고, 상태의 보존과 동기화는 Redis가 맡는다.
생태계 확장과 함께 남는 운영 과제
9700만 설치를 기록한 MCP는 2026년 하반기에 또 다른 변곡점을 맞을 전망이다. 단기적으로는 MCP 서버 공식 레지스트리인 registry.mcp.io의 베타 오픈, VS Code와 JetBrains에 이어 Xcode·Android Studio·Eclipse로의 지원 확대, MCP 2.0 초안 공개가 예정돼 있다. MCP 2.0 초안에는 SemVer, 실시간 이벤트 스트림, 에이전트 인증이 포함된다.
2027년에는 AWS, Azure, GCP가 관리형 MCP 게이트웨이 서비스를 출시하고, 기업의 AI 거버넌스 정책이 MCP 권한 체계와 통합될 전망이다. Linux Foundation 제출 예정인 ISO/IEC 표준 추진과 연합 MCP 레지스트리(Federated Registry)를 통한 조직 간 도구 공유도 중기 변화에 포함된다.
실시간 컨텍스트 동기화 프로토콜과 에이전트 행동 감사를 위한 표준 로그 포맷은 MCP 2.0에서 추가될 예정이다. 이 변화는 도구 연결뿐 아니라 에이전트의 상태와 행위를 조직 차원에서 관리하는 기반으로 이어진다.
위협 요인도 남아 있다. OpenAI가 독자 에이전트 프로토콜을 강화할 수 있고, 악성 MCP 서버 배포 같은 생태계 보안 취약점이 발생할 수 있다. 구현체마다 MCP 방언이 생겨 프로토콜이 파편화될 가능성도 고려해야 한다.
엔터프라이즈 도입에서는 MCP 게이트웨이를 단일 진입점으로 두고 OAuth 2.1 인증과 감사 로그를 집중화하는 설계가 필요하다. 도구에는 최소 권한 원칙을 적용하고, 공유 컨텍스트는 MCP Resources 레이어와 분산 캐시로 분리한다. OKF를 사용하는 환경이라면 도메인 온톨로지와 리소스 식별 체계도 초기 설계 범위에 포함해야 한다.
Sources
- Anthropic, "Model Context Protocol Specification", modelcontextprotocol.io, 2025
- Linux Foundation AI & Data Foundation, "MCP Governance Announcement", 2026
- Microsoft, "MCP Support in VS Code 1.90 Release Notes", code.visualstudio.com, 2025
- JetBrains, "AI Assistant MCP Integration Guide", jetbrains.com, 2025
- Google, "Open Knowledge Format (OKF) Public Release", developers.google.com, 2026
- "MCP Reaches 97 Million Installs: What's Next for Agent-Tool Standards", The New Stack, 2026
- AIDF MCP Working Group, "MCP 2.0 Roadmap Draft", github.com/linux-foundation/mcp-spec, 2026