AI Architecture 가이드·약 7분 내외

AI Tool(도구) vs Plugin(플러그인) vs MCP 아키텍처 완전 해부

Function Calling 도구, 플랫폼 확장 플러그인, 그리고 만능 표준 규격 MCP(Model Context Protocol)의 개념 차이, 내부 통신 구조, 포트 점유 여부 및 실제 구현 코드를 명쾌하게 비교 분석합니다.

💡 직관적 생활 비유: 공구와 공구함, 그리고 만능 플러그

Tool (도구): 손에 쥐는 낱개 공구(망치, 드라이버)입니다. AI가 직접 호출하는 가장 작은 최소 단위의 실행 함수입니다.

Plugin (플러그인): 특정 브랜드 작업대(OpenCode 등)에 딱 맞게 제작된 완성형 공구함 세트입니다. 도구뿐 아니라 자동 조명 센서(Hook)와 작업대 서랍(UI)까지 함께 패키징되어 있습니다.

MCP (Model Context Protocol): 전 세계 어떤 브랜드의 작업대(Claude, OpenCode, Cursor)든 상관없이 꽂을 수 있는 "표준 USB-C 전원 포트"입니다.

📊 아키텍처 파이프라인 및 4단계 의사결정 트리

3계층 도구 호출 및 통신 파이프라인

다이어그램 렌더링 중...

4단계 아키텍처 선택 의사결정 트리 (Triage Decision Tree)

다이어그램 렌더링 중...
01

플랫폼 독립성 (MCP 서버 구축)

Claude, OpenCode, Cursor 등 여러 AI 클라이언트와 도구를 공유해야 한다면 표준 MCP 규격으로 구축합니다.

02

이벤트 개입 (플러그인 훅 개발)

도구 실행 전후에 자동 로깅, 서브에이전트 디스패치 등 시스템 차원의 자동화가 필요하면 Plugin 훅을 작성합니다.

03

실행 바이너리 (단일 Tool/CLI 구현)

검색, 파일 변환, 통계 등 새로운 입출력 로직 자체는 Function Calling 규약에 맞춘 CLI 도구로 제작합니다.

04

업무 전략 교육 (Skill 마크다운 작성)

공식 문서 우선순위, 인용 형식, 분석 프로세스 등 AI의 실행 지침은 SKILL.md 파일로 교육합니다.

🛠️ 실제 내부 코드 비교 및 동작 원리

Function Calling JSON 주문서부터 MCP 서버와 플러그인 훅의 실제 소스 코드 비교입니다:

1. Tool 정의 JSON 스키마
{
  "name": "search_web",
  "description": "구글 검색을 수행하고 상위 결과를 반환합니다",
  "parameters": {
    "type": "object",
    "properties": {
      "query": { "type": "string" },
      "num": { "type": "integer", "default": 5 }
    },
    "required": ["query"]
  }
}
2. MCP 서버 파이썬 구현체
from mcp.server import Server
import json

server = Server("postgres-mcp")

# 1. Tool (행동/조작)
@server.tool()
async def query_db(sql: str) -> str:
    """PostgreSQL 데이터베이스 쿼리를 실행합니다"""
    return json.dumps(await db.fetch_all(sql))

# 2. Resource (읽기 전용 데이터/메뉴판)
@server.resource("schema://tables")
async def get_tables() -> str:
    """DB 테이블 스키마 정보를 반환합니다"""
    return json.dumps(await db.get_schema())

server.run() # stdio 파이프로 AI와 통신 개시 (포트 점유 0)
3. Plugin 훅 타입스크립트 구현체
import { definePlugin } from "@opencode-ai/plugin";

export default definePlugin({
  name: "auto-subagent-dispatcher",
  hooks: {
    // 도구 실행 직후 자동 발동하는 센서등
    "tool.after": async (result) => {
      if (result.name === "search_web") {
        await autoTriggerSummarizer(result.output);
      }
    }
  }
});

💡 실무 핵심 Q&A 및 오해 바로잡기

Q. MCP 서버를 띄우면 네트워크 포트를 차지하나요?

로컬 MCP(Postgres, Ouroboros 등)는 포트를 전혀 쓰지 않습니다. AI 에이전트가 프로세스를 자식으로 띄워 표준 입출력(stdio) 파이프로 통신하므로 포트 충돌 위험이 0%입니다.

Q. MCP를 쓰면 MCP 도구만 쓸 수 있나요?

아닙니다. AI는 내장 도구(Bash, Read, Write)와 여러 MCP 서버의 도구들을 동시에 전부 쥐고 있으며, 상황에 따라 최적의 도구를 골라 씁니다.

이정마 에디터

AI System Architect

용어가 비슷해 보이지만 설계 레이어가 완전히 다릅니다. 이 계층 구조를 이해하면 내 프로젝트에 단순 함수 호출을 쓸지, 플러그인을 짤지, MCP 서버를 구축할지 명확히 결정할 수 있습니다.