extension MCP Curriculum
translate KO / EN
code Module 00

Introduction

Introduction to Model Context Protocol (MCP): Why It Matters for Scalable AI Applications

_(Click the image above to view video of this lesson)_

Generative AI applications are a great step forward as they often let the user interact with the app using natural language prompts.

However, as more time and resources are invested in such apps, you want to make sure you can easily integrate functionalities and resources in such a way that it's easy to extend, that your app can cater to more than one model being used, and handle various model intricacies.

In short, building Gen AI apps is easy to begin with, but as they grow and become more complex, you need to start defining an architecture and will likely need to rely on a standard to ensure your apps are built in a consistent way.

This is where MCP comes in to organize things and provide a standard.

---

๐Ÿ” What Is the Model Context Protocol (MCP)?

The Model Context Protocol (MCP) is an open, standardized interface that allows Large Language Models (LLMs) to interact seamlessly with external tools, APIs, and data sources.

It provides a consistent architecture to enhance AI model functionality beyond their training data, enabling smarter, scalable, and more responsive AI systems.

---

๐ŸŽฏ Why Standardization in AI Matters

As generative AI applications become more complex, it's essential to adopt standards that ensure scalability, extensibility, maintainability, and avoiding vendor lock-in. MCP addresses these needs by:

  • Unifying model-tool integrations
  • Reducing brittle, one-off custom solutions
  • Allowing multiple models from different vendors to coexist within one ecosystem
  • Note: While MCP bills itself as an open standard, there are no plans to standardize MCP through any existing standards bodies such as IEEE, IETF, W3C, ISO, or any other standards body.

    ---

    ๐Ÿ“š Learning Objectives

    By the end of this article, you'll be able to:

  • Define Model Context Protocol (MCP) and its use cases
  • Understand how MCP standardizes model-to-tool communication
  • Identify the core components of MCP architecture
  • Explore real-world applications of MCP in enterprise and development contexts
  • ---

    ๐Ÿ’ก Why the Model Context Protocol (MCP) Is a Game-Changer

    ๐Ÿ”— MCP Solves Fragmentation in AI Interactions

    Before MCP, integrating models with tools required:

  • Custom code per tool-model pair
  • Non-standard APIs for each vendor
  • Frequent breaks due to updates
  • Poor scalability with more tools
  • โœ… Benefits of MCP Standardization

    Benefit Description -------------------------- -------------------------------------------------------------------------------- Interoperability LLMs work seamlessly with tools across different vendors Consistency Uniform behavior across platforms and tools Reusability Tools built once can be used across projects and systems Accelerated Development Reduce dev time by using standardized, plug-and-play interfaces

    ---

    ๐Ÿงฑ High-Level MCP Architecture Overview

    MCP follows a client-server model, where:

  • MCP Hosts run the AI models
  • MCP Clients initiate requests
  • MCP Servers serve context, tools, and capabilities
  • Key Components:

  • Resources โ€“ Static or dynamic data for models
  • Prompts โ€“ Predefined workflows for guided generation
  • Tools โ€“ Executable functions like search, calculations
  • Sampling โ€“ Agentic behavior via recursive interactions
  • Elicitation โ€“ Server-initiated requests for user input
  • Roots โ€“ Filesystem boundaries for server access control
  • Protocol Architecture:

    MCP uses a two-layer architecture:

  • Data Layer: JSON-RPC 2.0 based communication with lifecycle management and primitives
  • Transport Layer: STDIO (local) and Streamable HTTP with SSE (remote) communication channels
  • ---

    How MCP Servers Work

    MCP servers operate in the following way:

  • Request Flow:
  • 1. A request is initiated by an end user or software acting on their behalf.

    2. The MCP Client sends the request to an MCP Host, which manages the AI Model runtime.

    3. The AI Model receives the user prompt and may request access to external tools or data via one or more tool calls.

    4. The MCP Host, not the model directly, communicates with the appropriate MCP Server(s) using the standardized protocol.

  • MCP Host Functionality:
  • - Tool Registry: Maintains a catalog of available tools and their capabilities.

    - Authentication: Verifies permissions for tool access.

    - Request Handler: Processes incoming tool requests from the model.

    - Response Formatter: Structures tool outputs in a format the model can understand.

  • MCP Server Execution:
  • - The MCP Host routes tool calls to one or more MCP Servers, each exposing specialized functions (e.g., search, calculations, database queries).

    - The MCP Servers perform their respective operations and return results to the MCP Host in a consistent format.

    - The MCP Host formats and relays these results to the AI Model.

  • Response Completion:
  • - The AI Model incorporates the tool outputs into a final response.

    - The MCP Host sends this response back to the MCP Client, which delivers it to the end user or calling software.

    
    ---
    
    title: MCP Architecture and Component Interactions
    
    description: A diagram showing the flows of the components in MCP.
    
    ---
    
    graph TD
    
        Client[MCP Client/Application] -->|Sends Request| H[MCP Host]
    
        H -->|Invokes| A[AI Model]
    
        A -->|Tool Call Request| H
    
        H -->|MCP Protocol| T1[MCP Server Tool 01: Web Search]
    
        H -->|MCP Protocol| T2[MCP Server Tool 02: Calculator tool]
    
        H -->|MCP Protocol| T3[MCP Server Tool 03: Database Access tool]
    
        H -->|MCP Protocol| T4[MCP Server Tool 04: File System tool]
    
        H -->|Sends Response| Client
    
    
    
        subgraph "MCP Host Components"
    
            H
    
            G[Tool Registry]
    
            I[Authentication]
    
            J[Request Handler]
    
            K[Response Formatter]
    
        end
    
    
    
        H <--> G
    
        H <--> I
    
        H <--> J
    
        H <--> K
    
    
    
        style A fill:#f9d5e5,stroke:#333,stroke-width:2px
    
        style H fill:#eeeeee,stroke:#333,stroke-width:2px
    
        style Client fill:#d5e8f9,stroke:#333,stroke-width:2px
    
        style G fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style I fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style J fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style K fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style T1 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
        style T2 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
        style T3 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
        style T4 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
    

    ๐Ÿ‘จโ€๐Ÿ’ป How to Build an MCP Server (With Examples)

    MCP servers allow you to extend LLM capabilities by providing data and functionality.

    Ready to try it out? Here are language and/or stack specific SDKs with examples of creating simple MCP servers in different languages/stacks:

  • Python SDK: https://github.com/modelcontextprotocol/python-sdk
  • TypeScript SDK: https://github.com/modelcontextprotocol/typescript-sdk
  • Java SDK: https://github.com/modelcontextprotocol/java-sdk
  • C#/.NET SDK: https://github.com/modelcontextprotocol/csharp-sdk
  • ๐ŸŒ Real-World Use Cases for MCP

    MCP enables a wide range of applications by extending AI capabilities:

    Application Description ------------------------------ -------------------------------------------------------------------------------- Enterprise Data Integration Connect LLMs to databases, CRMs, or internal tools Agentic AI Systems Enable autonomous agents with tool access and decision-making workflows Multi-modal Applications Combine text, image, and audio tools within a single unified AI app Real-time Data Integration Bring live data into AI interactions for more accurate, current outputs

    ๐Ÿง  MCP = Universal Standard for AI Interactions

    The Model Context Protocol (MCP) acts as a universal standard for AI interactions, much like how USB-C standardized physical connections for devices.

    In the world of AI, MCP provides a consistent interface, allowing models (clients) to integrate seamlessly with external tools and data providers (servers).

    This eliminates the need for diverse, custom protocols for each API or data source.

    Under MCP, an MCP-compatible tool (referred to as an MCP server) follows a unified standard.

    These servers can list the tools or actions they offer and execute those actions when requested by an AI agent.

    AI agent platforms that support MCP are capable of discovering available tools from the servers and invoking them through this standard protocol.

    ๐Ÿ’ก Facilitates access to knowledge

    Beyond offering tools, MCP also facilitates access to knowledge.

    It enables applications to provide context to large language models (LLMs) by linking them to various data sources.

    For instance, an MCP server might represent a companyโ€™s document repository, allowing agents to retrieve relevant information on demand.

    Another server could handle specific actions like sending emails or updating records.

    From the agentโ€™s perspective, these are simply tools it can useโ€”some tools return data (knowledge context), while others perform actions.

    MCP efficiently manages both.

    An agent connecting to an MCP server automatically learns the server's available capabilities and accessible data through a standard format.

    This standardization enables dynamic tool availability.

    For example, adding a new MCP server to an agentโ€™s system makes its functions immediately usable without requiring further customization of the agent's instructions.

    This streamlined integration aligns with the flow depicted in the following diagram, where servers provide both tools and knowledge, ensuring seamless collaboration across systems.

    ๐Ÿ‘‰ Example: Scalable Agent Solution

    
    ---
    
    title: Scalable Agent Solution with MCP
    
    description: A diagram illustrating how a user interacts with an LLM that connects to multiple MCP servers, with each server providing both knowledge and tools, creating a scalable AI system architecture
    
    ---
    
    graph TD
    
        User -->|Prompt| LLM
    
        LLM -->|Response| User
    
        LLM -->|MCP| ServerA
    
        LLM -->|MCP| ServerB
    
        ServerA -->|Universal connector| ServerB
    
        ServerA --> KnowledgeA
    
        ServerA --> ToolsA
    
        ServerB --> KnowledgeB
    
        ServerB --> ToolsB
    
    
    
        subgraph Server A
    
            KnowledgeA[Knowledge]
    
            ToolsA[Tools]
    
        end
    
    
    
        subgraph Server B
    
            KnowledgeB[Knowledge]
    
            ToolsB[Tools]
    
        end
    
    

    The Universal Connector enables MCP servers to communicate and share capabilities with each other, allowing ServerA to delegate tasks to ServerB or access its tools and knowledge.

    This federates tools and data across servers, supporting scalable and modular agent architectures.

    Because MCP standardizes tool exposure, agents can dynamically discover and route requests between servers without hardcoded integrations.

    Tool and knowledge federation: Tools and data can be accessed across servers, enabling more scalable and modular agentic architectures.

    ๐Ÿ”„ Advanced MCP Scenarios with Client-Side LLM Integration

    Beyond the basic MCP architecture, there are advanced scenarios where both client and server contain LLMs, enabling more sophisticated interactions.

    In the following diagram, Client App could be an IDE with a number of MCP tools available for user by the LLM:

    
    ---
    
    title: Advanced MCP Scenarios with Client-Server LLM Integration
    
    description: A sequence diagram showing the detailed interaction flow between user, client application, client LLM, multiple MCP servers, and server LLM, illustrating tool discovery, user interaction, direct tool calling, and feature negotiation phases
    
    ---
    
    sequenceDiagram
    
        autonumber
    
        actor User as ๐Ÿ‘ค User
    
        participant ClientApp as ๐Ÿ–ฅ๏ธ Client App
    
        participant ClientLLM as ๐Ÿง  Client LLM
    
        participant Server1 as ๐Ÿ”ง MCP Server 1
    
        participant Server2 as ๐Ÿ“š MCP Server 2
    
        participant ServerLLM as ๐Ÿค– Server LLM
    
        
    
        %% Discovery Phase
    
        rect rgb(220, 240, 255)
    
            Note over ClientApp, Server2: TOOL DISCOVERY PHASE
    
            ClientApp->>+Server1: Request available tools/resources
    
            Server1-->>-ClientApp: Return tool list (JSON)
    
            ClientApp->>+Server2: Request available tools/resources
    
            Server2-->>-ClientApp: Return tool list (JSON)
    
            Note right of ClientApp: Store combined tool<br/>catalog locally
    
        end
    
        
    
        %% User Interaction
    
        rect rgb(255, 240, 220)
    
            Note over User, ClientLLM: USER INTERACTION PHASE
    
            User->>+ClientApp: Enter natural language prompt
    
            ClientApp->>+ClientLLM: Forward prompt + tool catalog
    
            ClientLLM->>-ClientLLM: Analyze prompt & select tools
    
        end
    
        
    
        %% Scenario A: Direct Tool Calling
    
        alt Direct Tool Calling
    
            rect rgb(220, 255, 220)
    
                Note over ClientApp, Server1: SCENARIO A: DIRECT TOOL CALLING
    
                ClientLLM->>+ClientApp: Request tool execution
    
                ClientApp->>+Server1: Execute specific tool
    
                Server1-->>-ClientApp: Return results
    
                ClientApp->>+ClientLLM: Process results
    
                ClientLLM-->>-ClientApp: Generate response
    
                ClientApp-->>-User: Display final answer
    
            end
    
        
    
        %% Scenario B: Feature Negotiation (VS Code style)
    
        else Feature Negotiation (VS Code style)
    
            rect rgb(255, 220, 220)
    
                Note over ClientApp, ServerLLM: SCENARIO B: FEATURE NEGOTIATION
    
                ClientLLM->>+ClientApp: Identify needed capabilities
    
                ClientApp->>+Server2: Negotiate features/capabilities
    
                Server2->>+ServerLLM: Request additional context
    
                ServerLLM-->>-Server2: Provide context
    
                Server2-->>-ClientApp: Return available features
    
                ClientApp->>+Server2: Call negotiated tools
    
                Server2-->>-ClientApp: Return results
    
                ClientApp->>+ClientLLM: Process results
    
                ClientLLM-->>-ClientApp: Generate response
    
                ClientApp-->>-User: Display final answer
    
            end
    
        end
    
    

    ๐Ÿ” Practical Benefits of MCP

    Here are the practical benefits of using MCP:

  • Freshness: Models can access up-to-date information beyond their training data
  • Capability Extension: Models can leverage specialized tools for tasks they weren't trained for
  • Reduced Hallucinations: External data sources provide factual grounding
  • Privacy: Sensitive data can stay within secure environments instead of being embedded in prompts
  • ๐Ÿ“Œ Key Takeaways

    The following are key takeaways for using MCP:

  • MCP standardizes how AI models interact with tools and data
  • Promotes extensibility, consistency, and interoperability
  • MCP helps reduce development time, improve reliability, and extend model capabilities
  • The client-server architecture enables flexible, extensible AI applications
  • ๐Ÿง  Exercise

    Think about an AI application you're interested in building.

  • Which external tools or data could enhance its capabilities?
  • How might MCP make integration simpler and more reliable?
  • Additional Resources

  • MCP GitHub Repository
  • What's next

    Next: Chapter 1: Core Concepts

    code Module 01

    Core Concepts

    MCP Core Concepts: Mastering the Model Context Protocol for AI Integration

    _(Click the image above to view video of this lesson)_

    The Model Context Protocol (MCP) is a powerful, standardized framework that optimizes communication between Large Language Models (LLMs) and external tools, applications, and data sources.

    This guide will walk you through the core concepts of MCP. You will learn about its client-server architecture, essential components, communication mechanics, and implementation best practices.

  • Explicit User Consent: All data access and operations require explicit user approval before execution. Users must clearly understand what data will be accessed and what actions will be performed, with granular control over permissions and authorizations.
  • Data Privacy Protection: User data is only exposed with explicit consent and must be protected by robust access controls throughout the entire interaction lifecycle. Implementations must prevent unauthorized data transmission and maintain strict privacy boundaries.
  • Tool Execution Safety: Every tool invocation requires explicit user consent with clear understanding of the tool's functionality, parameters, and potential impact. Robust security boundaries must prevent unintended, unsafe, or malicious tool execution.
  • Transport Layer Security: All communication channels should use appropriate encryption and authentication mechanisms. Remote connections should implement secure transport protocols and proper credential management.
  • Implementation Guidelines:
  • Permission Management: Implement fine-grained permission systems that allow users to control which servers, tools, and resources are accessible
  • Authentication & Authorization: Use secure authentication methods (OAuth, API keys) with proper token management and expiration
  • Input Validation: Validate all parameters and data inputs according to defined schemas to prevent injection attacks
  • Audit Logging: Maintain comprehensive logs of all operations for security monitoring and compliance
  • Overview

    This lesson explores the fundamental architecture and components that make up the Model Context Protocol (MCP) ecosystem. You'll learn about the client-server architecture, key components, and communication mechanisms that power MCP interactions.

    Key Learning Objectives

    By the end of this lesson, you will:

  • Understand the MCP client-server architecture.
  • Identify roles and responsibilities of Hosts, Clients, and Servers.
  • Analyze the core features that make MCP a flexible integration layer.
  • Learn how information flows within the MCP ecosystem.
  • Gain practical insights through code examples in .NET, Java, Python, and JavaScript.
  • MCP Architecture: A Deeper Look

    The MCP ecosystem is built on a client-server model. This modular structure allows AI applications to interact with tools, databases, APIs, and contextual resources efficiently. Let's break down this architecture into its core components.

    At its core, MCP follows a client-server architecture where a host application can connect to multiple servers:

    
    flowchart LR
    
        subgraph "Your Computer"
    
            Host["Host with MCP (Visual Studio, VS Code, IDEs, Tools)"]
    
            S1["MCP Server A"]
    
            S2["MCP Server B"]
    
            S3["MCP Server C"]
    
            Host <-->|"MCP Protocol"| S1
    
            Host <-->|"MCP Protocol"| S2
    
            Host <-->|"MCP Protocol"| S3
    
            S1 <--> D1[("Local\Data Source A")]
    
            S2 <--> D2[("Local\Data Source B")]
    
        end
    
        subgraph "Internet"
    
            S3 <-->|"Web APIs"| D3[("Remote\Services")]
    
        end
    
    
  • MCP Hosts: Programs like VSCode, Claude Desktop, IDEs, or AI tools that want to access data through MCP
  • MCP Clients: Protocol clients that maintain 1:1 connections with servers
  • MCP Servers: Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol
  • Local Data Sources: Your computer's files, databases, and services that MCP servers can securely access
  • Remote Services: External systems available over the internet that MCP servers can connect to through APIs.
  • The MCP Protocol is an evolving standard using date-based versioning (YYYY-MM-DD format).

    The current protocol version is 2025-11-25.

    You can see the latest updates to the protocol specification

    1. Hosts

    In the Model Context Protocol (MCP), Hosts are AI applications that serve as the primary interface through which users interact with the protocol.

    Hosts coordinate and manage connections to multiple MCP servers by creating dedicated MCP clients for each server connection.

    Examples of Hosts include:

  • AI Applications: Claude Desktop, Visual Studio Code, Claude Code
  • Development Environments: IDEs and code editors with MCP integration
  • Custom Applications: Purpose-built AI agents and tools
  • Hosts are applications that coordinate AI model interactions. They:

  • Orchestrate AI Models: Execute or interact with LLMs to generate responses and coordinate AI workflows
  • Manage Client Connections: Create and maintain one MCP client per MCP server connection
  • Control User Interface: Handle conversation flow, user interactions, and response presentation
  • Enforce Security: Control permissions, security constraints, and authentication
  • Handle User Consent: Manage user approval for data sharing and tool execution
  • 2. Clients

    Clients are essential components that maintain dedicated one-to-one connections between Hosts and MCP servers.

    Each MCP client is instantiated by the Host to connect to a specific MCP server, ensuring organized and secure communication channels.

    Multiple clients enable Hosts to connect to multiple servers simultaneously.

    Clients are connector components within the host application. They:

  • Protocol Communication: Send JSON-RPC 2.0 requests to servers with prompts and instructions
  • Capability Negotiation: Negotiate supported features and protocol versions with servers during initialization
  • Tool Execution: Manage tool execution requests from models and process responses
  • Real-time Updates: Handle notifications and real-time updates from servers
  • Response Processing: Process and format server responses for display to users
  • 3. Servers

    Servers are programs that provide context, tools, and capabilities to MCP clients.

    They can execute locally (same machine as the Host) or remotely (on external platforms), and are responsible for handling client requests and providing structured responses.

    Servers expose specific functionality through the standardized Model Context Protocol.

    Servers are services that provide context and capabilities. They:

  • Feature Registration: Register and expose available primitives (resources, prompts, tools) to clients
  • Request Processing: Receive and execute tool calls, resource requests, and prompt requests from clients
  • Context Provision: Provide contextual information and data to enhance model responses
  • State Management: Maintain session state and handle stateful interactions when needed
  • Real-time Notifications: Send notifications about capability changes and updates to connected clients
  • Servers can be developed by anyone to extend model capabilities with specialized functionality, and they support both local and remote deployment scenarios.

    4. Server Primitives

    Servers in the Model Context Protocol (MCP) provide three core primitives that define the fundamental building blocks for rich interactions between clients, hosts, and language models.

    These primitives specify the types of contextual information and actions available through the protocol.

    MCP servers can expose any combination of the following three core primitives:

    Resources

    Resources are data sources that provide contextual information to AI applications. They represent static or dynamic content that can enhance model understanding and decision-making:

  • Contextual Data: Structured information and context for AI model consumption
  • Knowledge Bases: Document repositories, articles, manuals, and research papers
  • Local Data Sources: Files, databases, and local system information
  • External Data: API responses, web services, and remote system data
  • Dynamic Content: Real-time data that updates based on external conditions
  • Resources are identified by URIs and support discovery through resources/list and retrieval through resources/read methods:

    
    file://documents/project-spec.md
    
    database://production/users/schema
    
    api://weather/current
    
    
    Prompts

    Prompts are reusable templates that help structure interactions with language models. They provide standardized interaction patterns and templated workflows:

  • Template-based Interactions: Pre-structured messages and conversation starters
  • Workflow Templates: Standardized sequences for common tasks and interactions
  • Few-shot Examples: Example-based templates for model instruction
  • System Prompts: Foundational prompts that define model behavior and context
  • Dynamic Templates: Parameterized prompts that adapt to specific contexts
  • Prompts support variable substitution and can be discovered via prompts/list and retrieved with prompts/get:

    
    Generate a {{task_type}} for {{product}} targeting {{audience}} with the following requirements: {{requirements}}
    
    
    Tools

    Tools are executable functions that AI models can invoke to perform specific actions. They represent the "verbs" of the MCP ecosystem, enabling models to interact with external systems:

  • Executable Functions: Discrete operations that models can invoke with specific parameters
  • External System Integration: API calls, database queries, file operations, calculations
  • Unique Identity: Each tool has a distinct name, description, and parameter schema
  • Structured I/O: Tools accept validated parameters and return structured, typed responses
  • Action Capabilities: Enable models to perform real-world actions and retrieve live data
  • Tools are defined with JSON Schema for parameter validation and discovered through tools/list and executed via tools/call.

    Tools can also include icons as additional metadata for better UI presentation.

    Tool Annotations: Tools support behavioral annotations (e.g., readOnlyHint, destructiveHint) that describe whether a tool is read-only or destructive, helping clients make informed decisions about tool execution.

    Example tool definition:

    
    server.tool(
    
      "search_products", 
    
      {
    
        query: z.string().describe("Search query for products"),
    
        category: z.string().optional().describe("Product category filter"),
    
        max_results: z.number().default(10).describe("Maximum results to return")
    
      }, 
    
      async (params) => {
    
        // Execute search and return structured results
    
        return await productService.search(params);
    
      }
    
    );
    
    

    Client Primitives

    In the Model Context Protocol (MCP), clients can expose primitives that enable servers to request additional capabilities from the host application.

    These client-side primitives allow for richer, more interactive server implementations that can access AI model capabilities and user interactions.

    Sampling

    Sampling allows servers to request language model completions from the client's AI application. This primitive enables servers to access LLM capabilities without embedding their own model dependencies:

  • Model-Independent Access: Servers can request completions without including LLM SDKs or managing model access
  • Server-Initiated AI: Enables servers to autonomously generate content using the client's AI model
  • Recursive LLM Interactions: Supports complex scenarios where servers need AI assistance for processing
  • Dynamic Content Generation: Allows servers to create contextual responses using the host's model
  • Tool Calling Support: Servers can include tools and toolChoice parameters to enable the client's model to invoke tools during sampling
  • Sampling is initiated through the sampling/complete method, where servers send completion requests to clients.

    Roots

    Roots provide a standardized way for clients to expose filesystem boundaries to servers, helping servers understand which directories and files they have access to:

  • Filesystem Boundaries: Define the boundaries of where servers can operate within the filesystem
  • Access Control: Help servers understand which directories and files they have permission to access
  • Dynamic Updates: Clients can notify servers when the list of roots changes
  • URI-Based Identification: Roots use file:// URIs to identify accessible directories and files
  • Roots are discovered through the roots/list method, with clients sending notifications/roots/list_changed when roots change.

    Elicitation

    Elicitation enables servers to request additional information or confirmation from users through the client interface:

  • User Input Requests: Servers can ask for additional information when needed for tool execution
  • Confirmation Dialogs: Request user approval for sensitive or impactful operations
  • Interactive Workflows: Enable servers to create step-by-step user interactions
  • Dynamic Parameter Collection: Gather missing or optional parameters during tool execution
  • Elicitation requests are made using the elicitation/request method to collect user input through the client's interface.

    URL Mode Elicitation: Servers can also request URL-based user interactions, allowing servers to direct users to external web pages for authentication, confirmation, or data entry.

    Logging

    Logging allows servers to send structured log messages to clients for debugging, monitoring, and operational visibility:

  • Debugging Support: Enable servers to provide detailed execution logs for troubleshooting
  • Operational Monitoring: Send status updates and performance metrics to clients
  • Error Reporting: Provide detailed error context and diagnostic information
  • Audit Trails: Create comprehensive logs of server operations and decisions
  • Logging messages are sent to clients to provide transparency into server operations and facilitate debugging.

    Information Flow in MCP

    The Model Context Protocol (MCP) defines a structured flow of information between hosts, clients, servers, and models.

    Understanding this flow helps clarify how user requests are processed and how external tools and data are integrated into model responses.

  • Host Initiates Connection
  • The host application (such as an IDE or chat interface) establishes a connection to an MCP server, typically via STDIO, WebSocket, or another supported transport.

  • Capability Negotiation
  • The client (embedded in the host) and the server exchange information about their supported features, tools, resources, and protocol versions. This ensures both sides understand what capabilities are available for the session.

  • User Request
  • The user interacts with the host (e.g., enters a prompt or command). The host collects this input and passes it to the client for processing.

  • Resource or Tool Use
  • - The client may request additional context or resources from the server (such as files, database entries, or knowledge base articles) to enrich the model's understanding.

    - If the model determines that a tool is needed (e.g., to fetch data, perform a calculation, or call an API), the client sends a tool invocation request to the server, specifying the tool name and parameters.

  • Server Execution
  • The server receives the resource or tool request, executes the necessary operations (such as running a function, querying a database, or retrieving a file), and returns the results to the client in a structured format.

  • Response Generation
  • The client integrates the server's responses (resource data, tool outputs, etc.) into the ongoing model interaction. The model uses this information to generate a comprehensive and contextually relevant response.

  • Result Presentation
  • The host receives the final output from the client and presents it to the user, often including both the model's generated text and any results from tool executions or resource lookups.

    This flow enables MCP to support advanced, interactive, and context-aware AI applications by seamlessly connecting models with external tools and data sources.

    Protocol Architecture & Layers

    MCP consists of two distinct architectural layers that work together to provide a complete communication framework:

    Data Layer

    The Data Layer implements the core MCP protocol using JSON-RPC 2.0 as its foundation. This layer defines the message structure, semantics, and interaction patterns:

    Core Components:
  • JSON-RPC 2.0 Protocol: All communication uses standardized JSON-RPC 2.0 message format for method calls, responses, and notifications
  • Lifecycle Management: Handles connection initialization, capability negotiation, and session termination between clients and servers
  • Server Primitives: Enables servers to provide core functionality through tools, resources, and prompts
  • Client Primitives: Enables servers to request sampling from LLMs, elicit user input, and send log messages
  • Real-time Notifications: Supports asynchronous notifications for dynamic updates without polling
  • Key Features:
  • Protocol Version Negotiation: Uses date-based versioning (YYYY-MM-DD) to ensure compatibility
  • Capability Discovery: Clients and servers exchange supported feature information during initialization
  • Stateful Sessions: Maintains connection state across multiple interactions for context continuity
  • Transport Layer

    The Transport Layer manages communication channels, message framing, and authentication between MCP participants:

    Supported Transport Mechanisms:

    1. STDIO Transport:

    - Uses standard input/output streams for direct process communication

    - Optimal for local processes on the same machine with no network overhead

    - Commonly used for local MCP server implementations

    2. Streamable HTTP Transport:

    - Uses HTTP POST for client-to-server messages

    - Optional Server-Sent Events (SSE) for server-to-client streaming

    - Enables remote server communication across networks

    - Supports standard HTTP authentication (bearer tokens, API keys, custom headers)

    - MCP recommends OAuth for secure token-based authentication

    Transport Abstraction:

    The transport layer abstracts communication details from the data layer, enabling the same JSON-RPC 2.0 message format across all transport mechanisms. This abstraction allows applications to switch between local and remote servers seamlessly.

    Security Considerations

    MCP implementations must adhere to several critical security principles to ensure safe, trustworthy, and secure interactions across all protocol operations:

  • User Consent and Control: Users must provide explicit consent before any data is accessed or operations are performed. They should have clear control over what data is shared and which actions are authorized, supported by intuitive user interfaces for reviewing and approving activities.
  • Data Privacy: User data should only be exposed with explicit consent and must be protected by appropriate access controls. MCP implementations must safeguard against unauthorized data transmission and ensure that privacy is maintained throughout all interactions.
  • Tool Safety: Before invoking any tool, explicit user consent is required. Users should have a clear understanding of each toolโ€™s functionality, and robust security boundaries must be enforced to prevent unintended or unsafe tool execution.
  • By following these security principles, MCP ensures user trust, privacy, and safety are maintained across all protocol interactions while enabling powerful AI integrations.

    Code Examples: Key Components

    Below are code examples in several popular programming languages that illustrate how to implement key MCP server components and tools.

    .NET Example: Creating a Simple MCP Server with Tools

    Here is a practical .NET code example demonstrating how to implement a simple MCP server with custom tools. This example showcases how to define and register tools, handle requests, and connect the server using the Model Context Protocol.

    
    using System;
    
    using System.Threading.Tasks;
    
    using ModelContextProtocol.Server;
    
    using ModelContextProtocol.Server.Transport;
    
    using ModelContextProtocol.Server.Tools;
    
    
    
    public class WeatherServer
    
    {
    
        public static async Task Main(string[] args)
    
        {
    
            // Create an MCP server
    
            var server = new McpServer(
    
                name: "Weather MCP Server",
    
                version: "1.0.0"
    
            );
    
            
    
            // Register our custom weather tool
    
            server.AddTool<string, WeatherData>("weatherTool", 
    
                description: "Gets current weather for a location",
    
                execute: async (location) => {
    
                    // Call weather API (simplified)
    
                    var weatherData = await GetWeatherDataAsync(location);
    
                    return weatherData;
    
                });
    
            
    
            // Connect the server using stdio transport
    
            var transport = new StdioServerTransport();
    
            await server.ConnectAsync(transport);
    
            
    
            Console.WriteLine("Weather MCP Server started");
    
            
    
            // Keep the server running until process is terminated
    
            await Task.Delay(-1);
    
        }
    
        
    
        private static async Task<WeatherData> GetWeatherDataAsync(string location)
    
        {
    
            // This would normally call a weather API
    
            // Simplified for demonstration
    
            await Task.Delay(100); // Simulate API call
    
            return new WeatherData { 
    
                Temperature = 72.5,
    
                Conditions = "Sunny",
    
                Location = location
    
            };
    
        }
    
    }
    
    
    
    public class WeatherData
    
    {
    
        public double Temperature { get; set; }
    
        public string Conditions { get; set; }
    
        public string Location { get; set; }
    
    }
    
    

    Java Example: MCP Server Components

    This example demonstrates the same MCP server and tool registration as the .NET example above, but implemented in Java.

    
    import io.modelcontextprotocol.server.McpServer;
    
    import io.modelcontextprotocol.server.McpToolDefinition;
    
    import io.modelcontextprotocol.server.transport.StdioServerTransport;
    
    import io.modelcontextprotocol.server.tool.ToolExecutionContext;
    
    import io.modelcontextprotocol.server.tool.ToolResponse;
    
    
    
    public class WeatherMcpServer {
    
        public static void main(String[] args) throws Exception {
    
            // Create an MCP server
    
            McpServer server = McpServer.builder()
    
                .name("Weather MCP Server")
    
                .version("1.0.0")
    
                .build();
    
                
    
            // Register a weather tool
    
            server.registerTool(McpToolDefinition.builder("weatherTool")
    
                .description("Gets current weather for a location")
    
                .parameter("location", String.class)
    
                .execute((ToolExecutionContext ctx) -> {
    
                    String location = ctx.getParameter("location", String.class);
    
                    
    
                    // Get weather data (simplified)
    
                    WeatherData data = getWeatherData(location);
    
                    
    
                    // Return formatted response
    
                    return ToolResponse.content(
    
                        String.format("Temperature: %.1fยฐF, Conditions: %s, Location: %s", 
    
                        data.getTemperature(), 
    
                        data.getConditions(), 
    
                        data.getLocation())
    
                    );
    
                })
    
                .build());
    
            
    
            // Connect the server using stdio transport
    
            try (StdioServerTransport transport = new StdioServerTransport()) {
    
                server.connect(transport);
    
                System.out.println("Weather MCP Server started");
    
                // Keep server running until process is terminated
    
                Thread.currentThread().join();
    
            }
    
        }
    
        
    
        private static WeatherData getWeatherData(String location) {
    
            // Implementation would call a weather API
    
            // Simplified for example purposes
    
            return new WeatherData(72.5, "Sunny", location);
    
        }
    
    }
    
    
    
    class WeatherData {
    
        private double temperature;
    
        private String conditions;
    
        private String location;
    
        
    
        public WeatherData(double temperature, String conditions, String location) {
    
            this.temperature = temperature;
    
            this.conditions = conditions;
    
            this.location = location;
    
        }
    
        
    
        public double getTemperature() {
    
            return temperature;
    
        }
    
        
    
        public String getConditions() {
    
            return conditions;
    
        }
    
        
    
        public String getLocation() {
    
            return location;
    
        }
    
    }
    
    

    Python Example: Building an MCP Server

    This example uses fastmcp, so please ensure you install it first:

    
    pip install fastmcp
    
    

    Code Sample:

    
    #!/usr/bin/env python3
    
    import asyncio
    
    from fastmcp import FastMCP
    
    from fastmcp.transports.stdio import serve_stdio
    
    
    
    # Create a FastMCP server
    
    mcp = FastMCP(
    
        name="Weather MCP Server",
    
        version="1.0.0"
    
    )
    
    
    
    @mcp.tool()
    
    def get_weather(location: str) -> dict:
    
        """Gets current weather for a location."""
    
        return {
    
            "temperature": 72.5,
    
            "conditions": "Sunny",
    
            "location": location
    
        }
    
    
    
    # Alternative approach using a class
    
    class WeatherTools:
    
        @mcp.tool()
    
        def forecast(self, location: str, days: int = 1) -> dict:
    
            """Gets weather forecast for a location for the specified number of days."""
    
            return {
    
                "location": location,
    
                "forecast": [
    
                    {"day": i+1, "temperature": 70 + i, "conditions": "Partly Cloudy"}
    
                    for i in range(days)
    
                ]
    
            }
    
    
    
    # Register class tools
    
    weather_tools = WeatherTools()
    
    
    
    # Start the server
    
    if __name__ == "__main__":
    
        asyncio.run(serve_stdio(mcp))
    
    

    JavaScript Example: Creating an MCP Server

    This example shows MCP server creation in JavaScript and how to register two weather-related tools.

    
    // Using the official Model Context Protocol SDK
    
    import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
    
    import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
    
    import { z } from "zod"; // For parameter validation
    
    
    
    // Create an MCP server
    
    const server = new McpServer({
    
      name: "Weather MCP Server",
    
      version: "1.0.0"
    
    });
    
    
    
    // Define a weather tool
    
    server.tool(
    
      "weatherTool",
    
      {
    
        location: z.string().describe("The location to get weather for")
    
      },
    
      async ({ location }) => {
    
        // This would normally call a weather API
    
        // Simplified for demonstration
    
        const weatherData = await getWeatherData(location);
    
        
    
        return {
    
          content: [
    
            { 
    
              type: "text", 
    
              text: `Temperature: ${weatherData.temperature}ยฐF, Conditions: ${weatherData.conditions}, Location: ${weatherData.location}` 
    
            }
    
          ]
    
        };
    
      }
    
    );
    
    
    
    // Define a forecast tool
    
    server.tool(
    
      "forecastTool",
    
      {
    
        location: z.string(),
    
        days: z.number().default(3).describe("Number of days for forecast")
    
      },
    
      async ({ location, days }) => {
    
        // This would normally call a weather API
    
        // Simplified for demonstration
    
        const forecast = await getForecastData(location, days);
    
        
    
        return {
    
          content: [
    
            { 
    
              type: "text", 
    
              text: `${days}-day forecast for ${location}: ${JSON.stringify(forecast)}` 
    
            }
    
          ]
    
        };
    
      }
    
    );
    
    
    
    // Helper functions
    
    async function getWeatherData(location) {
    
      // Simulate API call
    
      return {
    
        temperature: 72.5,
    
        conditions: "Sunny",
    
        location: location
    
      };
    
    }
    
    
    
    async function getForecastData(location, days) {
    
      // Simulate API call
    
      return Array.from({ length: days }, (_, i) => ({
    
        day: i + 1,
    
        temperature: 70 + Math.floor(Math.random() * 10),
    
        conditions: i % 2 === 0 ? "Sunny" : "Partly Cloudy"
    
      }));
    
    }
    
    
    
    // Connect the server using stdio transport
    
    const transport = new StdioServerTransport();
    
    server.connect(transport).catch(console.error);
    
    
    
    console.log("Weather MCP Server started");
    
    

    This JavaScript example demonstrates how to create an MCP server using the Model Context Protocol SDK.

    It shows how to register two tools named weatherTool and forecastTool and make them available to MCP clients through the StdioServerTransport.

    Security and Authorization

    MCP includes several built-in concepts and mechanisms for managing security and authorization throughout the protocol:

    1. Tool Permission Control:

    Clients can specify which tools a model is allowed to use during a session.

    This ensures that only explicitly authorized tools are accessible, reducing the risk of unintended or unsafe operations.

    Permissions can be configured dynamically based on user preferences, organizational policies, or the context of the interaction.

    2. Authentication:

    Servers can require authentication before granting access to tools, resources, or sensitive operations.

    This may involve API keys, OAuth tokens, or other authentication schemes.

    Proper authentication ensures that only trusted clients and users can invoke server-side capabilities.

    3. Validation:

    Parameter validation is enforced for all tool invocations.

    Each tool defines the expected types, formats, and constraints for its parameters, and the server validates incoming requests accordingly.

    This prevents malformed or malicious input from reaching tool implementations and helps maintain the integrity of operations.

    4. Rate Limiting:

    To prevent abuse and ensure fair usage of server resources, MCP servers can implement rate limiting for tool calls and resource access.

    Rate limits can be applied per user, per session, or globally, and help protect against denial-of-service attacks or excessive resource consumption.

    By combining these mechanisms, MCP provides a secure foundation for integrating language models with external tools and data sources, while giving users and developers fine-grained control over access and usage.

    Protocol Messages & Communication Flow

    MCP communication uses structured JSON-RPC 2.0 messages to facilitate clear and reliable interactions between hosts, clients, and servers. The protocol defines specific message patterns for different types of operations:

    Core Message Types:

    Initialization Messages
  • initialize Request: Establishes connection and negotiates protocol version and capabilities
  • initialize Response: Confirms supported features and server information
  • notifications/initialized: Signals that initialization is complete and the session is ready
  • Discovery Messages
  • tools/list Request: Discovers available tools from the server
  • resources/list Request: Lists available resources (data sources)
  • prompts/list Request: Retrieves available prompt templates
  • Execution Messages
  • tools/call Request: Executes a specific tool with provided parameters
  • resources/read Request: Retrieves content from a specific resource
  • prompts/get Request: Fetches a prompt template with optional parameters
  • Client-side Messages
  • sampling/complete Request: Server requests LLM completion from the client
  • elicitation/request: Server requests user input through the client interface
  • Logging Messages: Server sends structured log messages to the client
  • Notification Messages
  • notifications/tools/list_changed: Server notifies client of tool changes
  • notifications/resources/list_changed: Server notifies client of resource changes
  • notifications/prompts/list_changed: Server notifies client of prompt changes
  • Message Structure:

    All MCP messages follow JSON-RPC 2.0 format with:

  • Request Messages: Include id, method, and optional params
  • Response Messages: Include id and either result or error
  • Notification Messages: Include method and optional params (no id or response expected)
  • This structured communication ensures reliable, traceable, and extensible interactions supporting advanced scenarios like real-time updates, tool chaining, and robust error handling.

    Tasks (Experimental)

    Tasks are an experimental feature that provides durable execution wrappers enabling deferred result retrieval and status tracking for MCP requests:

  • Long-Running Operations: Track expensive computations, workflow automation, and batch processing
  • Deferred Results: Poll for task status and retrieve results when operations complete
  • Status Tracking: Monitor task progress through defined lifecycle states
  • Multi-Step Operations: Support complex workflows that span multiple interactions
  • Tasks wrap standard MCP requests to enable asynchronous execution patterns for operations that cannot complete immediately.

    Key Takeaways

  • Architecture: MCP uses a client-server architecture where hosts manage multiple client connections to servers
  • Participants: The ecosystem includes hosts (AI applications), clients (protocol connectors), and servers (capability providers)
  • Transport Mechanisms: Communication supports STDIO (local) and Streamable HTTP with optional SSE (remote)
  • Core Primitives: Servers expose tools (executable functions), resources (data sources), and prompts (templates)
  • Client Primitives: Servers can request sampling (LLM completions with tool calling support), elicitation (user input including URL mode), roots (filesystem boundaries), and logging from clients
  • Experimental Features: Tasks provide durable execution wrappers for long-running operations
  • Protocol Foundation: Built on JSON-RPC 2.0 with date-based versioning (current: 2025-11-25)
  • Real-time Capabilities: Supports notifications for dynamic updates and real-time synchronization
  • Security First: Explicit user consent, data privacy protection, and secure transport are core requirements
  • Exercise

    Design a simple MCP tool that would be useful in your domain. Define:

    1. What the tool would be named

    2. What parameters it would accept

    3. What output it would return

    4. How a model might use this tool to solve user problems

    ---

    What's next

    Next: Chapter 2: Security

    code Module 02

    Security

    MCP Security: Comprehensive Protection for AI Systems

    _(Click the image above to view video of this lesson)_

    Security is fundamental to AI system design, which is why we prioritize it as our second section.

    This aligns with Microsoft's Secure by Design principle from the Secure Future Initiative.

    The Model Context Protocol (MCP) brings powerful new capabilities to AI-driven applications while introducing unique security challenges that extend beyond traditional software risks.

    MCP systems face both established security concerns (secure coding, least privilege, supply chain security) and new AI-specific threats including prompt injection, tool poisoning, session hijacking, confused deputy attacks, token passthrough vulnerabilities, and dynamic capability modification.

    This lesson explores the most critical security risks in MCP implementationsโ€”covering authentication, authorization, excessive permissions, indirect prompt injection, session security, confused deputy problems, token management, and supply chain vulnerabilities.

    You'll learn actionable controls and best practices to mitigate these risks while leveraging Microsoft solutions like Prompt Shields, Azure Content Safety, and GitHub Advanced Security to strengthen your MCP deployment.

    Learning Objectives

    By the end of this lesson, you will be able to:

  • Identify MCP-Specific Threats: Recognize unique security risks in MCP systems including prompt injection, tool poisoning, excessive permissions, session hijacking, confused deputy problems, token passthrough vulnerabilities, and supply chain risks
  • Apply Security Controls: Implement effective mitigations including robust authentication, least privilege access, secure token management, session security controls, and supply chain verification
  • Leverage Microsoft Security Solutions: Understand and deploy Microsoft Prompt Shields, Azure Content Safety, and GitHub Advanced Security for MCP workload protection
  • Validate Tool Security: Recognize the importance of tool metadata validation, monitoring for dynamic changes, and defending against indirect prompt injection attacks
  • Integrate Best Practices: Combine established security fundamentals (secure coding, server hardening, zero trust) with MCP-specific controls for comprehensive protection
  • MCP Security Architecture & Controls

    Modern MCP implementations require layered security approaches that address both traditional software security and AI-specific threats.

    The rapidly evolving MCP specification continues to mature its security controls, enabling better integration with enterprise security architectures and established best practices.

    Research from the Microsoft Digital Defense Report demonstrates that 98% of reported breaches would be prevented by robust security hygiene.

    The most effective protection strategy combines foundational security practices with MCP-specific controlsโ€”proven baseline security measures remain the most impactful in reducing overall security risk.

    Current Security Landscape

    > Note: This information reflects MCP security standards as of February 5, 2026, aligned with MCP Specification 2025-11-25.

    The MCP protocol continues evolving rapidly, and future implementations may introduce new authentication patterns and enhanced controls.

    Always refer to the current MCP Specification, MCP GitHub repository, and security best practices documentation for the latest guidance.

    ๐Ÿ”๏ธ MCP Security Summit Workshop (Sherpa)

    For hands-on security training, we highly recommend the MCP Security Summit Workshop (Sherpa) - a comprehensive guided expedition to securing MCP servers in Microsoft Azure.

    Workshop Overview

    The MCP Security Summit Workshop provides practical, actionable security training through a proven "vulnerable โ†’ exploit โ†’ fix โ†’ validate" methodology. You'll:

  • Learn by Breaking Things: Experience vulnerabilities firsthand by exploiting intentionally insecure servers
  • Use Azure-Native Security: Leverage Azure Entra ID, Key Vault, API Management, and AI Content Safety
  • Follow Defense-in-Depth: Progress through camps building comprehensive security layers
  • Apply OWASP Standards: Every technique maps to the OWASP MCP Azure Security Guide
  • Get Production Code: Walk away with working, tested implementations
  • The Expedition Route

    Camp Focus OWASP Risks Covered ------ ------- --------------------- Base Camp MCP fundamentals & authentication vulnerabilities MCP01, MCP07 Camp 1: Identity OAuth 2.1, Azure Managed Identity, Key Vault MCP01, MCP02, MCP07 Camp 2: Gateway API Management, Private Endpoints, governance MCP02, MCP06, MCP07, MCP09 Camp 3: I/O Security Prompt injection, PII protection, content safety MCP03, MCP05, MCP06, MCP10 Camp 4: Monitoring Log Analytics, dashboards, threat detection MCP04, MCP08 The Summit Red Team / Blue Team integration test All

    Get Started: https://azure-samples.github.io/sherpa/

    OWASP MCP Top 10 Security Risks

    The OWASP MCP Azure Security Guide details the ten most critical security risks for MCP implementations:

    Risk Description Azure Mitigation ------ ------------- ------------------ MCP01 Token Mismanagement & Secret Exposure Azure Key Vault, Managed Identity MCP02 Privilege Escalation via Scope Creep RBAC, Conditional Access MCP03 Tool Poisoning Tool validation, integrity verification MCP04 Software Supply Chain Attacks & Dependency Tampering GitHub Advanced Security, dependency scanning MCP05 Command Injection & Execution Input validation, sandboxing MCP06 Intent Flow Subversion Azure AI Content Safety, Prompt Shields MCP07 Insufficient Authentication & Authorization Azure Entra ID, OAuth 2.1 with PKCE MCP08 Lack of Audit and Telemetry Azure Monitor, Application Insights MCP09 Shadow MCP Servers API Center governance, network isolation MCP10 Context Injection & Over-Sharing Data classification, minimal exposure

    Evolution of MCP Authentication

    The MCP specification has evolved significantly in its approach to authentication and authorization:

  • Original Approach: Early specifications required developers to implement custom authentication servers, with MCP servers acting as OAuth 2.0 Authorization Servers managing user authentication directly
  • Current Standard (2025-11-25): Updated specification allows MCP servers to delegate authentication to external identity providers (such as Microsoft Entra ID), improving security posture and reducing implementation complexity
  • Transport Layer Security: Enhanced support for secure transport mechanisms with proper authentication patterns for both local (STDIO) and remote (Streamable HTTP) connections
  • Authentication & Authorization Security

    Current Security Challenges

    Modern MCP implementations face several authentication and authorization challenges:

    Risks & Threat Vectors

  • Misconfigured Authorization Logic: Flawed authorization implementation in MCP servers can expose sensitive data and incorrectly apply access controls
  • OAuth Token Compromise: Local MCP server token theft enables attackers to impersonate servers and access downstream services
  • Token Passthrough Vulnerabilities: Improper token handling creates security control bypasses and accountability gaps
  • Excessive Permissions: Over-privileged MCP servers violate least privilege principles and expand attack surfaces
  • Token Passthrough: A Critical Anti-Pattern

    Token passthrough is explicitly prohibited in the current MCP authorization specification due to severe security implications:

    ##### Security Control Circumvention

  • MCP servers and downstream APIs implement critical security controls (rate limiting, request validation, traffic monitoring) that depend on proper token validation
  • Direct client-to-API token usage bypasses these essential protections, undermining the security architecture
  • ##### Accountability & Audit Challenges

  • MCP servers cannot distinguish between clients using upstream-issued tokens, breaking audit trails
  • Downstream resource server logs show misleading request origins rather than actual MCP server intermediaries
  • Incident investigation and compliance auditing become significantly more difficult
  • ##### Data Exfiltration Risks

  • Unvalidated token claims enable malicious actors with stolen tokens to use MCP servers as proxies for data exfiltration
  • Trust boundary violations allow unauthorized access patterns that bypass intended security controls
  • ##### Multi-Service Attack Vectors

  • Compromised tokens accepted by multiple services enable lateral movement across connected systems
  • Trust assumptions between services may be violated when token origins cannot be verified
  • Security Controls & Mitigations

    Critical Security Requirements:

    > MANDATORY: MCP servers MUST NOT accept any tokens that were not explicitly issued for the MCP server

    Authentication & Authorization Controls
  • Rigorous Authorization Review: Conduct comprehensive audits of MCP server authorization logic to ensure only intended users and clients can access sensitive resources
  • - Implementation Guide: Azure API Management as Authentication Gateway for MCP Servers

    - Identity Integration: Using Microsoft Entra ID for MCP Server Authentication

  • Secure Token Management: Implement Microsoft's token validation and lifecycle best practices
  • - Validate token audience claims match MCP server identity

    - Implement proper token rotation and expiration policies

    - Prevent token replay attacks and unauthorized usage

  • Protected Token Storage: Secure token storage with encryption both at rest and in transit
  • - Best Practices: Secure Token Storage and Encryption Guidelines

    Access Control Implementation
  • Principle of Least Privilege: Grant MCP servers only minimum permissions required for intended functionality
  • - Regular permission reviews and updates to prevent privilege creep

    - Microsoft Documentation: Secure Least-Privileged Access

  • Role-Based Access Control (RBAC): Implement fine-grained role assignments
  • - Scope roles tightly to specific resources and actions

    - Avoid broad or unnecessary permissions that expand attack surfaces

  • Continuous Permission Monitoring: Implement ongoing access auditing and monitoring
  • - Monitor permission usage patterns for anomalies

    - Promptly remediate excessive or unused privileges

    AI-Specific Security Threats

    Prompt Injection & Tool Manipulation Attacks

    Modern MCP implementations face sophisticated AI-specific attack vectors that traditional security measures cannot fully address:

    Indirect Prompt Injection (Cross-Domain Prompt Injection)

    Indirect Prompt Injection represents one of the most critical vulnerabilities in MCP-enabled AI systems.

    Attackers embed malicious instructions within external contentโ€”documents, web pages, emails, or data sourcesโ€”that AI systems subsequently process as legitimate commands.

    Attack Scenarios:

  • Document-based Injection: Malicious instructions hidden in processed documents that trigger unintended AI actions
  • Web Content Exploitation: Compromised web pages containing embedded prompts that manipulate AI behavior when scraped
  • Email-based Attacks: Malicious prompts in emails that cause AI assistants to leak information or perform unauthorized actions
  • Data Source Contamination: Compromised databases or APIs serving tainted content to AI systems
  • Real-World Impact: These attacks can result in data exfiltration, privacy breaches, generation of harmful content, and manipulation of user interactions.

    For detailed analysis, see Prompt Injection in MCP (Simon Willison).

    Tool Poisoning Attacks

    Tool Poisoning targets the metadata that defines MCP tools, exploiting how LLMs interpret tool descriptions and parameters to make execution decisions.

    Attack Mechanisms:

  • Metadata Manipulation: Attackers inject malicious instructions into tool descriptions, parameter definitions, or usage examples
  • Invisible Instructions: Hidden prompts in tool metadata that are processed by AI models but invisible to human users
  • Dynamic Tool Modification ("Rug Pulls"): Tools approved by users are later modified to perform malicious actions without user awareness
  • Parameter Injection: Malicious content embedded in tool parameter schemas that influence model behavior
  • Hosted Server Risks: Remote MCP servers present elevated risks as tool definitions can be updated after initial user approval, creating scenarios where previously safe tools become malicious.

    For comprehensive analysis, see Tool Poisoning Attacks (Invariant Labs).

    Additional AI Attack Vectors
  • Cross-Domain Prompt Injection (XPIA): Sophisticated attacks that leverage content from multiple domains to bypass security controls
  • Dynamic Capability Modification: Real-time changes to tool capabilities that escape initial security assessments
  • Context Window Poisoning: Attacks that manipulate large context windows to hide malicious instructions
  • Model Confusion Attacks: Exploiting model limitations to create unpredictable or unsafe behaviors
  • AI Security Risk Impact

    High-Impact Consequences:

  • Data Exfiltration: Unauthorized access and theft of sensitive enterprise or personal data
  • Privacy Breaches: Exposure of personally identifiable information (PII) and confidential business data
  • System Manipulation: Unintended modifications to critical systems and workflows
  • Credential Theft: Compromise of authentication tokens and service credentials
  • Lateral Movement: Use of compromised AI systems as pivots for broader network attacks
  • Microsoft AI Security Solutions

    AI Prompt Shields: Advanced Protection Against Injection Attacks

    Microsoft AI Prompt Shields provide comprehensive defense against both direct and indirect prompt injection attacks through multiple security layers:

    ##### Core Protection Mechanisms:

    1. Advanced Detection & Filtering

    - Machine learning algorithms and NLP techniques detect malicious instructions in external content

    - Real-time analysis of documents, web pages, emails, and data sources for embedded threats

    - Contextual understanding of legitimate vs. malicious prompt patterns

    2. Spotlighting Techniques

    - Distinguishes between trusted system instructions and potentially compromised external inputs

    - Text transformation methods that enhance model relevance while isolating malicious content

    - Helps AI systems maintain proper instruction hierarchy and ignore injected commands

    3. Delimiter & Datamarking Systems

    - Explicit boundary definition between trusted system messages and external input text

    - Special markers highlight boundaries between trusted and untrusted data sources

    - Clear separation prevents instruction confusion and unauthorized command execution

    4. Continuous Threat Intelligence

    - Microsoft continuously monitors emerging attack patterns and updates defenses

    - Proactive threat hunting for new injection techniques and attack vectors

    - Regular security model updates to maintain effectiveness against evolving threats

    5. Azure Content Safety Integration

    - Part of comprehensive Azure AI Content Safety suite

    - Additional detection for jailbreak attempts, harmful content, and security policy violations

    - Unified security controls across AI application components

    Implementation Resources: Microsoft Prompt Shields Documentation

    Advanced MCP Security Threats

    Session Hijacking Vulnerabilities

    Session hijacking represents a critical attack vector in stateful MCP implementations where unauthorized parties obtain and abuse legitimate session identifiers to impersonate clients and perform unauthorized actions.

    Attack Scenarios & Risks
  • Session Hijack Prompt Injection: Attackers with stolen session IDs inject malicious events into servers sharing session state, potentially triggering harmful actions or accessing sensitive data
  • Direct Impersonation: Stolen session IDs enable direct MCP server calls that bypass authentication, treating attackers as legitimate users
  • Compromised Resumable Streams: Attackers can terminate requests prematurely, causing legitimate clients to resume with potentially malicious content
  • Security Controls for Session Management

    Critical Requirements:

  • Authorization Verification: MCP servers implementing authorization MUST verify ALL inbound requests and MUST NOT rely on sessions for authentication
  • Secure Session Generation: Use cryptographically secure, non-deterministic session IDs generated with secure random number generators
  • User-Specific Binding: Bind session IDs to user-specific information using formats like : to prevent cross-user session abuse
  • Session Lifecycle Management: Implement proper expiration, rotation, and invalidation to limit vulnerability windows
  • Transport Security: Mandatory HTTPS for all communication to prevent session ID interception
  • Confused Deputy Problem

    The confused deputy problem occurs when MCP servers act as authentication proxies between clients and third-party services, creating opportunities for authorization bypass through static client ID exploitation.

    Attack Mechanics & Risks
  • Cookie-based Consent Bypass: Previous user authentication creates consent cookies that attackers exploit through malicious authorization requests with crafted redirect URIs
  • Authorization Code Theft: Existing consent cookies may cause authorization servers to skip consent screens, redirecting codes to attacker-controlled endpoints
  • Unauthorized API Access: Stolen authorization codes enable token exchange and user impersonation without explicit approval
  • Mitigation Strategies

    Mandatory Controls:

  • Explicit Consent Requirements: MCP proxy servers using static client IDs MUST obtain user consent for each dynamically registered client
  • OAuth 2.1 Security Implementation: Follow current OAuth security best practices including PKCE (Proof Key for Code Exchange) for all authorization requests
  • Strict Client Validation: Implement rigorous validation of redirect URIs and client identifiers to prevent exploitation
  • Token Passthrough Vulnerabilities

    Token passthrough represents an explicit anti-pattern where MCP servers accept client tokens without proper validation and forward them to downstream APIs, violating MCP authorization specifications.

    Security Implications
  • Control Circumvention: Direct client-to-API token usage bypasses critical rate limiting, validation, and monitoring controls
  • Audit Trail Corruption: Upstream-issued tokens make client identification impossible, breaking incident investigation capabilities
  • Proxy-based Data Exfiltration: Unvalidated tokens enable malicious actors to use servers as proxies for unauthorized data access
  • Trust Boundary Violations: Downstream services' trust assumptions may be violated when token origins cannot be verified
  • Multi-service Attack Expansion: Compromised tokens accepted across multiple services enable lateral movement
  • Required Security Controls

    Non-negotiable Requirements:

  • Token Validation: MCP servers MUST NOT accept tokens not explicitly issued for the MCP server
  • Audience Verification: Always validate token audience claims match the MCP server's identity
  • Proper Token Lifecycle: Implement short-lived access tokens with secure rotation practices
  • Supply Chain Security for AI Systems

    Supply chain security has evolved beyond traditional software dependencies to encompass the entire AI ecosystem.

    Modern MCP implementations must rigorously verify and monitor all AI-related components, as each introduces potential vulnerabilities that could compromise system integrity.

    Expanded AI Supply Chain Components

    Traditional Software Dependencies:

  • Open-source libraries and frameworks
  • Container images and base systems
  • Development tools and build pipelines
  • Infrastructure components and services
  • AI-Specific Supply Chain Elements:

  • Foundation Models: Pre-trained models from various providers requiring provenance verification
  • Embedding Services: External vectorization and semantic search services
  • Context Providers: Data sources, knowledge bases, and document repositories
  • Third-party APIs: External AI services, ML pipelines, and data processing endpoints
  • Model Artifacts: Weights, configurations, and fine-tuned model variants
  • Training Data Sources: Datasets used for model training and fine-tuning
  • Comprehensive Supply Chain Security Strategy

    Component Verification & Trust
  • Provenance Validation: Verify the origin, licensing, and integrity of all AI components before integration
  • Security Assessment: Conduct vulnerability scans and security reviews for models, data sources, and AI services
  • Reputation Analysis: Evaluate the security track record and practices of AI service providers
  • Compliance Verification: Ensure all components meet organizational security and regulatory requirements
  • Secure Deployment Pipelines
  • Automated CI/CD Security: Integrate security scanning throughout automated deployment pipelines
  • Artifact Integrity: Implement cryptographic verification for all deployed artifacts (code, models, configurations)
  • Staged Deployment: Use progressive deployment strategies with security validation at each stage
  • Trusted Artifact Repositories: Deploy only from verified, secure artifact registries and repositories
  • Continuous Monitoring & Response
  • Dependency Scanning: Ongoing vulnerability monitoring for all software and AI component dependencies
  • Model Monitoring: Continuous assessment of model behavior, performance drift, and security anomalies
  • Service Health Tracking: Monitor external AI services for availability, security incidents, and policy changes
  • Threat Intelligence Integration: Incorporate threat feeds specific to AI and ML security risks
  • Access Control & Least Privilege
  • Component-level Permissions: Restrict access to models, data, and services based on business necessity
  • Service Account Management: Implement dedicated service accounts with minimal required permissions
  • Network Segmentation: Isolate AI components and limit network access between services
  • API Gateway Controls: Use centralized API gateways to control and monitor access to external AI services
  • Incident Response & Recovery
  • Rapid Response Procedures: Established processes for patching or replacing compromised AI components
  • Credential Rotation: Automated systems for rotating secrets, API keys, and service credentials
  • Rollback Capabilities: Ability to quickly revert to previous known-good versions of AI components
  • Supply Chain Breach Recovery: Specific procedures for responding to upstream AI service compromises
  • Microsoft Security Tools & Integration

    GitHub Advanced Security provides comprehensive supply chain protection including:

  • Secret Scanning: Automated detection of credentials, API keys, and tokens in repositories
  • Dependency Scanning: Vulnerability assessment for open-source dependencies and libraries
  • CodeQL Analysis: Static code analysis for security vulnerabilities and coding issues
  • Supply Chain Insights: Visibility into dependency health and security status
  • Azure DevOps & Azure Repos Integration:

  • Seamless security scanning integration across Microsoft development platforms
  • Automated security checks in Azure Pipelines for AI workloads
  • Policy enforcement for secure AI component deployment
  • Microsoft Internal Practices:

    Microsoft implements extensive supply chain security practices across all products.

    Learn about proven approaches in The Journey to Secure the Software Supply Chain at Microsoft.

    Foundation Security Best Practices

    MCP implementations inherit and build upon your organization's existing security posture. Strengthening foundational security practices significantly enhances the overall security of AI systems and MCP deployments.

    Core Security Fundamentals

    Secure Development Practices
  • OWASP Compliance: Protect against OWASP Top 10 web application vulnerabilities
  • AI-Specific Protections: Implement controls for OWASP Top 10 for LLMs
  • Secure Secrets Management: Use dedicated vaults for tokens, API keys, and sensitive configuration data
  • End-to-End Encryption: Implement secure communications across all application components and data flows
  • Input Validation: Rigorous validation of all user inputs, API parameters, and data sources
  • Infrastructure Hardening
  • Multi-Factor Authentication: Mandatory MFA for all administrative and service accounts
  • Patch Management: Automated, timely patching for operating systems, frameworks, and dependencies
  • Identity Provider Integration: Centralized identity management through enterprise identity providers (Microsoft Entra ID, Active Directory)
  • Network Segmentation: Logical isolation of MCP components to limit lateral movement potential
  • Principle of Least Privilege: Minimal required permissions for all system components and accounts
  • Security Monitoring & Detection
  • Comprehensive Logging: Detailed logging of AI application activities, including MCP client-server interactions
  • SIEM Integration: Centralized security information and event management for anomaly detection
  • Behavioral Analytics: AI-powered monitoring to detect unusual patterns in system and user behavior
  • Threat Intelligence: Integration of external threat feeds and indicators of compromise (IOCs)
  • Incident Response: Well-defined procedures for security incident detection, response, and recovery
  • Zero Trust Architecture
  • Never Trust, Always Verify: Continuous verification of users, devices, and network connections
  • Micro-Segmentation: Granular network controls that isolate individual workloads and services
  • Identity-Centric Security: Security policies based on verified identities rather than network location
  • Continuous Risk Assessment: Dynamic security posture evaluation based on current context and behavior
  • Conditional Access: Access controls that adapt based on risk factors, location, and device trust
  • Enterprise Integration Patterns

    Microsoft Security Ecosystem Integration
  • Microsoft Defender for Cloud: Comprehensive cloud security posture management
  • Azure Sentinel: Cloud-native SIEM and SOAR capabilities for AI workload protection
  • Microsoft Entra ID: Enterprise identity and access management with conditional access policies
  • Azure Key Vault: Centralized secrets management with hardware security module (HSM) backing
  • Microsoft Purview: Data governance and compliance for AI data sources and workflows
  • Compliance & Governance
  • Regulatory Alignment: Ensure MCP implementations meet industry-specific compliance requirements (GDPR, HIPAA, SOC 2)
  • Data Classification: Proper categorization and handling of sensitive data processed by AI systems
  • Audit Trails: Comprehensive logging for regulatory compliance and forensic investigation
  • Privacy Controls: Implementation of privacy-by-design principles in AI system architecture
  • Change Management: Formal processes for security reviews of AI system modifications
  • These foundational practices create a robust security baseline that enhances the effectiveness of MCP-specific security controls and provides comprehensive protection for AI-driven applications.

    Key Security Takeaways

  • Layered Security Approach: Combine foundational security practices (secure coding, least privilege, supply chain verification, continuous monitoring) with AI-specific controls for comprehensive protection
  • AI-Specific Threat Landscape: MCP systems face unique risks including prompt injection, tool poisoning, session hijacking, confused deputy problems, token passthrough vulnerabilities, and excessive permissions that require specialized mitigations
  • Authentication & Authorization Excellence: Implement robust authentication using external identity providers (Microsoft Entra ID), enforce proper token validation, and never accept tokens not explicitly issued for your MCP server
  • AI Attack Prevention: Deploy Microsoft Prompt Shields and Azure Content Safety to defend against indirect prompt injection and tool poisoning attacks, while validating tool metadata and monitoring for dynamic changes
  • Session & Transport Security: Use cryptographically secure, non-deterministic session IDs bound to user identities, implement proper session lifecycle management, and never use sessions for authentication
  • OAuth Security Best Practices: Prevent confused deputy attacks through explicit user consent for dynamically registered clients, proper OAuth 2.1 implementation with PKCE, and strict redirect URI validation
  • Token Security Principles: Avoid token passthrough anti-patterns, validate token audience claims, implement short-lived tokens with secure rotation, and maintain clear trust boundaries
  • Comprehensive Supply Chain Security: Treat all AI ecosystem components (models, embeddings, context providers, external APIs) with the same security rigor as traditional software dependencies
  • Continuous Evolution: Stay current with rapidly evolving MCP specifications, contribute to security community standards, and maintain adaptive security postures as the protocol matures
  • Microsoft Security Integration: Leverage Microsoft's comprehensive security ecosystem (Prompt Shields, Azure Content Safety, GitHub Advanced Security, Entra ID) for enhanced MCP deployment protection
  • Comprehensive Resources

    Official MCP Security Documentation

  • MCP Specification (Current: 2025-11-25)
  • MCP Security Best Practices
  • MCP Authorization Specification
  • MCP GitHub Repository
  • OWASP MCP Security Resources

  • OWASP MCP Azure Security Guide - Comprehensive OWASP MCP Top 10 with Azure implementation guidance
  • OWASP MCP Top 10 - Official OWASP MCP security risks
  • MCP Security Summit Workshop (Sherpa) - Hands-on security training for MCP on Azure
  • Security Standards & Best Practices

  • OAuth 2.0 Security Best Practices (RFC 9700)
  • OWASP Top 10 Web Application Security
  • OWASP Top 10 for Large Language Models
  • Microsoft Digital Defense Report
  • AI Security Research & Analysis

  • Prompt Injection in MCP (Simon Willison)
  • Tool Poisoning Attacks (Invariant Labs)
  • MCP Security Research Briefing (Wiz Security)
  • Microsoft Security Solutions

  • Microsoft Prompt Shields Documentation
  • Azure Content Safety Service
  • Microsoft Entra ID Security
  • Azure Token Management Best Practices
  • GitHub Advanced Security
  • Implementation Guides & Tutorials

  • Azure API Management as MCP Authentication Gateway
  • Microsoft Entra ID Authentication with MCP Servers
  • Secure Token Storage and Encryption (Video)
  • DevOps & Supply Chain Security

  • Azure DevOps Security
  • Azure Repos Security
  • Microsoft Supply Chain Security Journey
  • Additional Security Documentation

    For comprehensive security guidance, refer to these specialized documents in this section:

  • MCP Security Best Practices 2025 - Complete security best practices for MCP implementations
  • Azure Content Safety Implementation - Practical implementation examples for Azure Content Safety integration
  • MCP Security Controls 2025 - Latest security controls and techniques for MCP deployments
  • MCP Best Practices Quick Reference - Quick reference guide for essential MCP security practices
  • BlueHat 2026: Securing the future of AI: Securing MCP with defense in depth patterns - Defense-in-depth patterns from the Microsoft Security Response Center (MSRC)
  • Hands-On Security Training

  • MCP Security Summit Workshop (Sherpa) - Comprehensive hands-on workshop for securing MCP servers in Azure with progressive camps from Base Camp to Summit
  • OWASP MCP Azure Security Guide - Reference architecture and implementation guidance for all OWASP MCP Top 10 risks
  • ---

    What's Next

    Next: Chapter 3: Getting Started

    code Module 00

    Module 00 — ์†Œ๊ฐœ

    Model Context Protocol(MCP) ์†Œ๊ฐœ: ํ™•์žฅ ๊ฐ€๋Šฅํ•œ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ค‘์š”ํ•œ ์ด์œ 

    _(์œ„ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ด ๊ฐ•์˜์˜ ์˜์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)_

    ์ƒ์„ฑํ˜• AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ข…์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์ž์—ฐ์–ด ํ”„๋กฌํ”„ํŠธ๋กœ ์•ฑ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํฐ ์ง„์ „์ž…๋‹ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์•ฑ์— ๋” ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ์ž์›์„ ํˆฌ์žํ• ์ˆ˜๋ก ๊ธฐ๋Šฅ๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•˜์—ฌ ํ™•์žฅํ•˜๊ธฐ ์‰ฝ๊ณ , ์—ฌ๋Ÿฌ ๋ชจ๋ธ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ชจ๋ธ์˜ ๋ณต์žก์„ฑ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ปจ๋Œ€, ์ƒ์„ฑํ˜• AI ์•ฑ์€ ์‹œ์ž‘์€ ์‰ฝ์ง€๋งŒ ์„ฑ์žฅํ•˜๊ณ  ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ •์˜ํ•˜๊ธฐ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ, ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ํ‘œ์ค€์— ์˜์กดํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

    ์—ฌ๊ธฐ์„œ MCP๊ฐ€ ๋“ฑ์žฅํ•˜์—ฌ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ํ‘œ์ค€์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    ---

    ๐Ÿ” Model Context Protocol(MCP)๋ž€?

    Model Context Protocol(MCP)๋Š” ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)์ด ์™ธ๋ถ€ ๋„๊ตฌ, API ๋ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ์›ํ™œํ•˜๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฐœ๋ฐฉํ˜•, ํ‘œ์ค€ํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ์˜ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜์–ด AI ๋ชจ๋ธ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ผ๊ด€๋œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋” ์Šค๋งˆํŠธํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ฐ˜์‘์„ฑ ๋†’์€ AI ์‹œ์Šคํ…œ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    ---

    ๐ŸŽฏ AI์—์„œ ํ‘œ์ค€ํ™”๊ฐ€ ์ค‘์š”ํ•œ ์ด์œ 

    ์ƒ์„ฑํ˜• AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ ์  ๋ณต์žกํ•ด์ง์— ๋”ฐ๋ผ ํ™•์žฅ์„ฑ, ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ, ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด์„ฑ, ๊ณต๊ธ‰์—…์ฒด ์ข…์† ํšŒํ”ผ๋ฅผ ๋ณด์žฅํ•˜๋Š” ํ‘œ์ค€ ์ฑ„ํƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. MCP๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค:

  • ๋ชจ๋ธ-๋„๊ตฌ ํ†ตํ•ฉ์˜ ํ†ตํ•ฉ
  • ๊นจ์ง€๊ธฐ ์‰ฌ์šด ์ผํšŒ์„ฑ ๋งž์ถค ์†”๋ฃจ์…˜ ๊ฐ์†Œ
  • ์—ฌ๋Ÿฌ ๊ณต๊ธ‰์—…์ฒด์˜ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ์ด ํ•˜๋‚˜์˜ ์ƒํƒœ๊ณ„ ๋‚ด์—์„œ ๊ณต์กด ๊ฐ€๋Šฅ
  • ์ฐธ๊ณ : MCP๋Š” ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€์œผ๋กœ ์†Œ๊ฐœ๋˜์ง€๋งŒ IEEE, IETF, W3C, ISO ๋˜๋Š” ๊ธฐํƒ€ ๊ธฐ์กด ํ‘œ์ค€ํ™” ๊ธฐ๊ด€์„ ํ†ตํ•œ ํ‘œ์ค€ํ™” ๊ณ„ํš์€ ์—†์Šต๋‹ˆ๋‹ค.

    ---

    ๐Ÿ“š ํ•™์Šต ๋ชฉํ‘œ

    ์ด ๊ธ€์„ ๋งˆ์น˜๋ฉด ๋‹ค์Œ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • Model Context Protocol(MCP) ์ •์˜์™€ ์‚ฌ์šฉ ์‚ฌ๋ก€ ํŒŒ์•…
  • MCP๊ฐ€ ๋ชจ๋ธ-๋„๊ตฌ ๊ฐ„ ํ†ต์‹ ์„ ์–ด๋–ป๊ฒŒ ํ‘œ์ค€ํ™”ํ•˜๋Š”์ง€ ์ดํ•ด
  • MCP ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ ์‹๋ณ„
  • ๊ธฐ์—… ๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ MCP์˜ ์‹ค์ œ ์ ์šฉ ์‚ฌ๋ก€ ํƒ์ƒ‰
  • ---

    ๐Ÿ’ก Model Context Protocol(MCP)์ด ๊ฒŒ์ž„์ฒด์ธ์ €์ธ ์ด์œ 

    ๐Ÿ”— MCP๋Š” AI ์ƒํ˜ธ์ž‘์šฉ์˜ ๋‹จํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค

    MCP ์ด์ „์—๋Š” ๋ชจ๋ธ๊ณผ ๋„๊ตฌ๋ฅผ ํ†ตํ•ฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ๋„๊ตฌ-๋ชจ๋ธ ์Œ๋งˆ๋‹ค ๋งž์ถค ์ฝ”๋“œ ์ž‘์„ฑ
  • ๊ณต๊ธ‰์—…์ฒด๋งˆ๋‹ค ๋น„ํ‘œ์ค€ API ์‚ฌ์šฉ
  • ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•œ ์žฆ์€ ์žฅ์• 
  • ๋„๊ตฌ ์ˆ˜ ์ฆ๊ฐ€ ์‹œ ๋‚ฎ์€ ํ™•์žฅ์„ฑ
  • โœ… MCP ํ‘œ์ค€ํ™”์˜ ์ด์ 

    ์ด์  ์„ค๋ช… --------------------------- -------------------------------------------------------------------------- ์ƒํ˜ธ์šด์šฉ์„ฑ LLM๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ณต๊ธ‰์—…์ฒด์˜ ๋„๊ตฌ์™€ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ ์ผ๊ด€์„ฑ ํ”Œ๋žซํผ ๋ฐ ๋„๊ตฌ ์ „๋ฐ˜์— ๊ฑธ์ณ ๊ท ์ผํ•œ ๋™์ž‘ ์žฌ์‚ฌ์šฉ์„ฑ ํ•œ ๋ฒˆ ๋งŒ๋“  ๋„๊ตฌ๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ๋ฐ ์‹œ์Šคํ…œ์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅ ๊ฐœ๋ฐœ ๊ฐ€์†ํ™” ํ‘œ์ค€ํ™”๋˜๊ณ  ํ”Œ๋Ÿฌ๊ทธ์•คํ”Œ๋ ˆ์ด ๊ฐ€๋Šฅํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋‹จ์ถ•

    ---

    ๐Ÿงฑ MCP ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

    MCP๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ์„ ๋”ฐ๋ฅด๋ฉฐ:

  • MCP ํ˜ธ์ŠคํŠธ๋Š” AI ๋ชจ๋ธ์„ ์šด์˜
  • MCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ ์‹œ์ž‘
  • MCP ์„œ๋ฒ„๊ฐ€ ์ปจํ…์ŠคํŠธ, ๋„๊ตฌ ๋ฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ:

  • ๋ฆฌ์†Œ์Šค โ€“ ๋ชจ๋ธ์— ์ œ๊ณต๋˜๋Š” ์ •์  ๋˜๋Š” ๋™์  ๋ฐ์ดํ„ฐ
  • ํ”„๋กฌํ”„ํŠธ โ€“ ์•ˆ๋‚ด ์ƒ์„ฑ์šฉ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์›Œํฌํ”Œ๋กœ
  • ๋„๊ตฌ โ€“ ๊ฒ€์ƒ‰, ๊ณ„์‚ฐ ๋“ฑ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜
  • ์ƒ˜ํ”Œ๋ง โ€“ ์žฌ๊ท€์  ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ์—์ด์ „ํŠธ ํ–‰๋™ ๊ตฌํ˜„
  • ์ด๋Œ์–ด๋‚ด๊ธฐ(Elicitation) โ€“ ์„œ๋ฒ„ ์ฃผ๋„์˜ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์š”์ฒญ
  • ๋ฃจํŠธ(Roots) โ€“ ์„œ๋ฒ„ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์œ„ํ•œ ํŒŒ์ผ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„
  • ํ”„๋กœํ† ์ฝœ ์•„ํ‚คํ…์ฒ˜:

    MCP๋Š” 2๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์šฉ:

  • ๋ฐ์ดํ„ฐ ๊ณ„์ธต: JSON-RPC 2.0 ๊ธฐ๋ฐ˜ ํ†ต์‹  ๋ฐ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ์™€ ์›์‹œ ๊ธฐ๋Šฅ
  • ์ „์†ก ๊ณ„์ธต: STDIO(๋กœ์ปฌ) ๋ฐ SSE(streamable HTTP, ์›๊ฒฉ) ํ†ต์‹  ์ฑ„๋„
  • ---

    MCP ์„œ๋ฒ„ ๋™์ž‘ ๋ฐฉ์‹

    MCP ์„œ๋ฒ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค:

  • ์š”์ฒญ ํ๋ฆ„:
  • 1. ์š”์ฒญ์€ ์ตœ์ข… ์‚ฌ์šฉ์ž ๋˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

    2. MCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ AI ๋ชจ๋ธ ๋Ÿฐํƒ€์ž„์„ ๊ด€๋ฆฌํ•˜๋Š” MCP ํ˜ธ์ŠคํŠธ์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    3. AI ๋ชจ๋ธ์€ ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , ํ•˜๋‚˜ ์ด์ƒ์˜ ๋„๊ตฌ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์™ธ๋ถ€ ๋„๊ตฌ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    4. MCP ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ชจ๋ธ์„ ์ง์ ‘ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ํ‘œ์ค€ํ™”๋œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ์ ์ ˆํ•œ MCP ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

  • MCP ํ˜ธ์ŠคํŠธ ๊ธฐ๋Šฅ:
  • - ๋„๊ตฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ์™€ ๊ธฐ๋Šฅ ์นดํƒˆ๋กœ๊ทธ ์œ ์ง€

    - ์ธ์ฆ: ๋„๊ตฌ ์ ‘๊ทผ ๊ถŒํ•œ ๊ฒ€์ฆ

    - ์š”์ฒญ ์ฒ˜๋ฆฌ๊ธฐ: ๋ชจ๋ธ๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” ๋„๊ตฌ ์š”์ฒญ ์ฒ˜๋ฆฌ

    - ์‘๋‹ต ํฌ๋งทํ„ฐ: ๋ชจ๋ธ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋„๊ตฌ ์ถœ๋ ฅ ๊ตฌ์กฐํ™”

  • MCP ์„œ๋ฒ„ ์‹คํ–‰:
  • - MCP ํ˜ธ์ŠคํŠธ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์˜ MCP ์„œ๋ฒ„๋กœ ๋„๊ตฌ ํ˜ธ์ถœ์„ ๋ผ์šฐํŒ…ํ•˜๋ฉฐ, ๊ฐ ์„œ๋ฒ„๋Š” ๊ฒ€์ƒ‰, ๊ณ„์‚ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ๋“ฑ ์ „๋ฌธ ๊ธฐ๋Šฅ์„ ๋…ธ์ถœ

    - MCP ์„œ๋ฒ„๋Š” ์ž์ฒด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ผ๊ด€๋œ ํ˜•์‹์œผ๋กœ MCP ํ˜ธ์ŠคํŠธ์— ๋ฐ˜ํ™˜

    - MCP ํ˜ธ์ŠคํŠธ๋Š” ์ด ๊ฒฐ๊ณผ๋ฅผ ํฌ๋งทํ•˜์—ฌ AI ๋ชจ๋ธ์— ์ „๋‹ฌ

  • ์‘๋‹ต ์™„๋ฃŒ:
  • - AI ๋ชจ๋ธ์ด ๋„๊ตฌ ์ถœ๋ ฅ์„ ์ข…ํ•ฉํ•ด ์ตœ์ข… ์‘๋‹ต ์ƒ์„ฑ

    - MCP ํ˜ธ์ŠคํŠธ๋Š” ์ด ์‘๋‹ต์„ MCP ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ตœ์ข… ์‚ฌ์šฉ์ž ๋˜๋Š” ํ˜ธ์ถœ ์†Œํ”„ํŠธ์›จ์–ด์— ์ „๋‹ฌ

    
    ---
    
    title: MCP ์•„ํ‚คํ…์ฒ˜์™€ ๊ตฌ์„ฑ ์š”์†Œ ์ƒํ˜ธ์ž‘์šฉ
    
    description: MCP ๊ตฌ์„ฑ ์š”์†Œ๋“ค์˜ ํ๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
    
    ---
    
    graph TD
    
        Client[MCP ํด๋ผ์ด์–ธํŠธ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜] -->|์š”์ฒญ ์ „์†ก| H[MCP ํ˜ธ์ŠคํŠธ]
    
        H -->|ํ˜ธ์ถœ| A[AI ๋ชจ๋ธ]
    
        A -->|๋„๊ตฌ ํ˜ธ์ถœ ์š”์ฒญ| H
    
        H -->|MCP ํ”„๋กœํ† ์ฝœ| T1[MCP ์„œ๋ฒ„ ๋„๊ตฌ 01: ์›น ๊ฒ€์ƒ‰]
    
        H -->|MCP ํ”„๋กœํ† ์ฝœ| T2[MCP ์„œ๋ฒ„ ๋„๊ตฌ 02: ๊ณ„์‚ฐ๊ธฐ ๋„๊ตฌ]
    
        H -->|MCP ํ”„๋กœํ† ์ฝœ| T3[MCP ์„œ๋ฒ„ ๋„๊ตฌ 03: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ๋„๊ตฌ]
    
        H -->|MCP ํ”„๋กœํ† ์ฝœ| T4[MCP ์„œ๋ฒ„ ๋„๊ตฌ 04: ํŒŒ์ผ ์‹œ์Šคํ…œ ๋„๊ตฌ]
    
        H -->|์‘๋‹ต ์ „์†ก| Client
    
    
    
        subgraph "MCP ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ ์š”์†Œ"
    
            H
    
            G[๋„๊ตฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ]
    
            I[์ธ์ฆ]
    
            J[์š”์ฒญ ์ฒ˜๋ฆฌ๊ธฐ]
    
            K[์‘๋‹ต ํฌ๋งคํ„ฐ]
    
        end
    
    
    
        H <--> G
    
        H <--> I
    
        H <--> J
    
        H <--> K
    
    
    
        style A fill:#f9d5e5,stroke:#333,stroke-width:2px
    
        style H fill:#eeeeee,stroke:#333,stroke-width:2px
    
        style Client fill:#d5e8f9,stroke:#333,stroke-width:2px
    
        style G fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style I fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style J fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style K fill:#fffbe6,stroke:#333,stroke-width:1px
    
        style T1 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
        style T2 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
        style T3 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
        style T4 fill:#c2f0c2,stroke:#333,stroke-width:1px
    
    

    ๐Ÿ‘จโ€๐Ÿ’ป MCP ์„œ๋ฒ„ ๊ตฌ์ถ• ๋ฐฉ๋ฒ• (์˜ˆ์ œ ํฌํ•จ)

    MCP ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜์—ฌ LLM์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    ์ง์ ‘ ์‹œ๋„ํ•ด๋ณด๊ณ  ์‹ถ๋‚˜์š”? ์•„๋ž˜๋Š” ๋‹ค์–‘ํ•œ ์–ธ์–ด/์Šคํƒ๋ณ„ SDK์™€ ๊ฐ„๋‹จํ•œ MCP ์„œ๋ฒ„ ์ƒ์„ฑ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค:

  • Python SDK: https://github.com/modelcontextprotocol/python-sdk
  • TypeScript SDK: https://github.com/modelcontextprotocol/typescript-sdk
  • Java SDK: https://github.com/modelcontextprotocol/java-sdk
  • C#/.NET SDK: https://github.com/modelcontextprotocol/csharp-sdk
  • ๐ŸŒ MCP์˜ ์‹ค์ œ ํ™œ์šฉ ์‚ฌ๋ก€

    MCP๋Š” AI ๊ธฐ๋Šฅ ํ™•์žฅ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

    ์‘์šฉ ๋ถ„์•ผ ์„ค๋ช… ---------------------------- --------------------------------------------------------------------------- ๊ธฐ์—… ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ LLM์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, CRM, ๋‚ด๋ถ€ ๋„๊ตฌ์™€ ์—ฐ๊ฒฐ ์—์ด์ „ํ‹ฑ AI ์‹œ์Šคํ…œ ๋„๊ตฌ ์ ‘๊ทผ ๋ฐ ์˜์‚ฌ๊ฒฐ์ • ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์žˆ๋Š” ์ž์œจ ์—์ด์ „ํŠธ ์ง€์› ๋‹ค์ค‘ ๋ชจ๋‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค ๋„๊ตฌ๋ฅผ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ AI ์•ฑ์—์„œ ๊ฒฐํ•ฉ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ ๋” ์ •ํ™•ํ•˜๊ณ  ์ตœ์‹ ์˜ ์ถœ๋ ฅ์„ ์œ„ํ•œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ AI ์ƒํ˜ธ์ž‘์šฉ์— ๋„์ž…

    ๐Ÿง  MCP = AI ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๋ฒ”์šฉ ํ‘œ์ค€

    Model Context Protocol(MCP)๋Š” USB-C๊ฐ€ ์žฅ์น˜์˜ ๋ฌผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ํ‘œ์ค€ํ™”ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ AI ์ƒํ˜ธ์ž‘์šฉ์˜ ๋ฒ”์šฉ ํ‘œ์ค€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. AI ์„ธ๊ณ„์—์„œ MCP๋Š” ๋ชจ๋ธ(ํด๋ผ์ด์–ธํŠธ)์ด ์™ธ๋ถ€ ๋„๊ตฌ์™€ ๋ฐ์ดํ„ฐ ์ œ๊ณต์ž(์„œ๋ฒ„)์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ๋„๋ก ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ API๋‚˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ๋งž์ถค ํ”„๋กœํ† ์ฝœ ํ•„์š”์„ฑ์„ ์—†์• ์ค๋‹ˆ๋‹ค.

    MCP ํ˜ธํ™˜ ๋„๊ตฌ(์ฆ‰, MCP ์„œ๋ฒ„)๋Š” ํ†ตํ•ฉ๋œ ํ‘œ์ค€์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋ฒ„๋“ค์€ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋‚˜ ์ž‘์—… ๋ชฉ๋ก์„ ๋‚˜์—ดํ•˜๊ณ , AI ์—์ด์ „ํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. MCP๋ฅผ ์ง€์›ํ•˜๋Š” AI ์—์ด์ „ํŠธ ํ”Œ๋žซํผ์€ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ด ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๐Ÿ’ก ์ง€์‹ ์ ‘๊ทผ ์šฉ์ด์„ฑ ์ œ๊ณต

    ๋„๊ตฌ ์ œ๊ณต ์™ธ์—๋„ MCP๋Š” ์ง€์‹ ์ ‘๊ทผ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ(LLM)์— ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ์—ฐ๊ฒฐํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, MCP ์„œ๋ฒ„๋Š” ํšŒ์‚ฌ ๋ฌธ์„œ ์ €์žฅ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด์–ด ์—์ด์ „ํŠธ๊ฐ€ ํ•„์š” ์‹œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค๋ฅธ ์„œ๋ฒ„๋Š” ์ด๋ฉ”์ผ ์ „์†ก์ด๋‚˜ ๊ธฐ๋ก ์—…๋ฐ์ดํŠธ ๊ฐ™์€ ํŠน์ • ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—์ด์ „ํŠธ ๊ด€์ ์—์„œ ์ด๋“ค์€ ๋‹จ์ˆœํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋ฉฐ, ์ผ๋ถ€ ๋„๊ตฌ๋Š” ๋ฐ์ดํ„ฐ(์ง€์‹ ์ปจํ…์ŠคํŠธ)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋‹ค๋ฅธ ๋„๊ตฌ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    MCP๋Š” ์ด ๋‘˜์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    MCP ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋œ ์—์ด์ „ํŠธ๋Š” ํ‘œ์ค€ ํ˜•์‹์„ ํ†ตํ•ด ์„œ๋ฒ„์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๊ณผ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ‘œ์ค€ํ™” ๋•๋ถ„์— ๋„๊ตฌ ๊ฐ€์šฉ์„ฑ์ด ๋™์ ์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ์šด MCP ์„œ๋ฒ„๋ฅผ ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ํ•˜๋ฉด ์—์ด์ „ํŠธ ์ง€์‹œ๋ฌธ์„ ์ถ”๊ฐ€๋กœ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•„๋„ ์ฆ‰์‹œ ๊ทธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด ๊ฐ„์†Œํ™”๋œ ํ†ตํ•ฉ์€ ๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์— ๋ฌ˜์‚ฌ๋œ ํ๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋ฉฐ, ์„œ๋ฒ„๊ฐ€ ๋„๊ตฌ์™€ ์ง€์‹์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜์—ฌ ์‹œ์Šคํ…œ ๊ฐ„ ์›ํ™œํ•œ ํ˜‘์—…์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

    ๐Ÿ‘‰ ์˜ˆ์‹œ: ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์—์ด์ „ํŠธ ์†”๋ฃจ์…˜

    
    ---
    
    title: MCP๋ฅผ ํ†ตํ•œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์—์ด์ „ํŠธ ์†”๋ฃจ์…˜
    
    description: ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ MCP ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ๋œ LLM๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณด์—ฌ์ฃผ๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ, ๊ฐ ์„œ๋ฒ„๋Š” ์ง€์‹๊ณผ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ AI ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค
    
    ---
    
    graph TD
    
        User -->|ํ”„๋กฌํ”„ํŠธ| LLM
    
        LLM -->|์‘๋‹ต| User
    
        LLM -->|MCP| ServerA
    
        LLM -->|MCP| ServerB
    
        ServerA -->|๋ฒ”์šฉ ์ปค๋„ฅํ„ฐ| ServerB
    
        ServerA --> KnowledgeA
    
        ServerA --> ToolsA
    
        ServerB --> KnowledgeB
    
        ServerB --> ToolsB
    
    
    
        subgraph Server A
    
            KnowledgeA[์ง€์‹]
    
            ToolsA[๋„๊ตฌ]
    
        end
    
    
    
        subgraph Server B
    
            KnowledgeB[์ง€์‹]
    
            ToolsB[๋„๊ตฌ]
    
        end
    
    

    ๋„๊ตฌ ๋ฐ ์ง€์‹ ์—ฐํ•ฉ: ๋„๊ตฌ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„ ์ „๋ฐ˜์— ๊ฑธ์ณ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ๋” ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ชจ๋“ˆ์‹์ธ ์—์ด์ „ํŠธ ์•„ํ‚คํ…์ฒ˜ ์ง€์›.

    ๐Ÿ”„ ํด๋ผ์ด์–ธํŠธ์ธก LLM ํ†ตํ•ฉ์„ ํ†ตํ•œ ๊ณ ๊ธ‰ MCP ์‹œ๋‚˜๋ฆฌ์˜ค

    ๊ธฐ๋ณธ MCP ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„˜์–ด, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘ LLM์„ ํฌํ•จํ•˜๋Š” ๊ณ ๊ธ‰ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ํด๋ผ์ด์–ธํŠธ ์•ฑ์€ ์‚ฌ์šฉ์ž LLM์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ MCP ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” IDE์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

    
    ---
    
    title: ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ LLM ํ†ตํ•ฉ์„ ํ†ตํ•œ ๊ณ ๊ธ‰ MCP ์‹œ๋‚˜๋ฆฌ์˜ค
    
    description: ์‚ฌ์šฉ์ž, ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํด๋ผ์ด์–ธํŠธ LLM, ์—ฌ๋Ÿฌ MCP ์„œ๋ฒ„, ์„œ๋ฒ„ LLM ๊ฐ„์˜ ์ƒ์„ธ ์ƒํ˜ธ์ž‘์šฉ ํ๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ, ๋„๊ตฌ ํƒ์ƒ‰, ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ, ์ง์ ‘ ๋„๊ตฌ ํ˜ธ์ถœ, ๊ธฐ๋Šฅ ํ˜‘์ƒ ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค
    
    ---
    
    sequenceDiagram
    
        autonumber
    
        actor User as ๐Ÿ‘ค ์‚ฌ์šฉ์ž
    
        participant ClientApp as ๐Ÿ–ฅ๏ธ ํด๋ผ์ด์–ธํŠธ ์•ฑ
    
        participant ClientLLM as ๐Ÿง  ํด๋ผ์ด์–ธํŠธ LLM
    
        participant Server1 as ๐Ÿ”ง MCP ์„œ๋ฒ„ 1
    
        participant Server2 as ๐Ÿ“š MCP ์„œ๋ฒ„ 2
    
        participant ServerLLM as ๐Ÿค– ์„œ๋ฒ„ LLM
    
        
    
        %% Discovery Phase
    
        rect rgb(220, 240, 255)
    
            Note over ClientApp, Server2: ๋„๊ตฌ ํƒ์ƒ‰ ๋‹จ๊ณ„
    
            ClientApp->>+Server1: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ/๋ฆฌ์†Œ์Šค ์š”์ฒญ
    
            Server1-->>-ClientApp: ๋„๊ตฌ ๋ชฉ๋ก ๋ฐ˜ํ™˜ (JSON)
    
            ClientApp->>+Server2: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ/๋ฆฌ์†Œ์Šค ์š”์ฒญ
    
            Server2-->>-ClientApp: ๋„๊ตฌ ๋ชฉ๋ก ๋ฐ˜ํ™˜ (JSON)
    
            Note right of ClientApp: ํ†ตํ•ฉ ๋„๊ตฌ ์นดํƒˆ๋กœ๊ทธ๋ฅผ<br/>๋กœ์ปฌ์— ์ €์žฅ
    
        end
    
        
    
        %% User Interaction
    
        rect rgb(255, 240, 220)
    
            Note over User, ClientLLM: ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ๋‹จ๊ณ„
    
            User->>+ClientApp: ์ž์—ฐ์–ด ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ
    
            ClientApp->>+ClientLLM: ํ”„๋กฌํ”„ํŠธ + ๋„๊ตฌ ์นดํƒˆ๋กœ๊ทธ ์ „๋‹ฌ
    
            ClientLLM->>-ClientLLM: ํ”„๋กฌํ”„ํŠธ ๋ถ„์„ ๋ฐ ๋„๊ตฌ ์„ ํƒ
    
        end
    
        
    
        %% Scenario A: Direct Tool Calling
    
        alt ์ง์ ‘ ๋„๊ตฌ ํ˜ธ์ถœ
    
            rect rgb(220, 255, 220)
    
                Note over ClientApp, Server1: ์‹œ๋‚˜๋ฆฌ์˜ค A: ์ง์ ‘ ๋„๊ตฌ ํ˜ธ์ถœ
    
                ClientLLM->>+ClientApp: ๋„๊ตฌ ์‹คํ–‰ ์š”์ฒญ
    
                ClientApp->>+Server1: ํŠน์ • ๋„๊ตฌ ์‹คํ–‰
    
                Server1-->>-ClientApp: ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
    
                ClientApp->>+ClientLLM: ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ
    
                ClientLLM-->>-ClientApp: ์‘๋‹ต ์ƒ์„ฑ
    
                ClientApp-->>-User: ์ตœ์ข… ๋‹ต๋ณ€ ํ‘œ์‹œ
    
            end
    
        
    
        %% Scenario B: Feature Negotiation (VS Code style)
    
        else ๊ธฐ๋Šฅ ํ˜‘์ƒ (VS Code ์Šคํƒ€์ผ)
    
            rect rgb(255, 220, 220)
    
                Note over ClientApp, ServerLLM: ์‹œ๋‚˜๋ฆฌ์˜ค B: ๊ธฐ๋Šฅ ํ˜‘์ƒ
    
                ClientLLM->>+ClientApp: ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์‹๋ณ„
    
                ClientApp->>+Server2: ๊ธฐ๋Šฅ/์—ญ๋Ÿ‰ ํ˜‘์ƒ
    
                Server2->>+ServerLLM: ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ ์š”์ฒญ
    
                ServerLLM-->>-Server2: ์ปจํ…์ŠคํŠธ ์ œ๊ณต
    
                Server2-->>-ClientApp: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ ๋ฐ˜ํ™˜
    
                ClientApp->>+Server2: ํ˜‘์ƒ ๋„๊ตฌ ํ˜ธ์ถœ
    
                Server2-->>-ClientApp: ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
    
                ClientApp->>+ClientLLM: ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ
    
                ClientLLM-->>-ClientApp: ์‘๋‹ต ์ƒ์„ฑ
    
                ClientApp-->>-User: ์ตœ์ข… ๋‹ต๋ณ€ ํ‘œ์‹œ
    
            end
    
        end
    
    

    ๐Ÿ” MCP์˜ ์‹ค์งˆ์  ์ด์ 

    MCP ์‚ฌ์šฉ์˜ ์‹ค์งˆ์  ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ตœ์‹ ์„ฑ: ๋ชจ๋ธ์ด ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜์–ด ์ตœ์‹  ์ •๋ณด๋ฅผ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๊ธฐ๋Šฅ ํ™•์žฅ: ๋ชจ๋ธ์ด ํ›ˆ๋ จ๋ฐ›์ง€ ์•Š์€ ์ž‘์—…์— ํŠนํ™”๋œ ๋„๊ตฌ ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ํ™˜๊ฐ ๊ฐ์†Œ: ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ ์‚ฌ์‹ค์  ๊ทผ๊ฑฐ ์ œ๊ณต
  • ํ”„๋ผ์ด๋ฒ„์‹œ: ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋Š” ํ”„๋กฌํ”„ํŠธ์— ํฌํ•จ๋˜์ง€ ์•Š๊ณ  ์•ˆ์ „ํ•œ ํ™˜๊ฒฝ์— ๋ณด๊ด€
  • ๐Ÿ“Œ ์ฃผ์š” ์š”์ 

    MCP ์‚ฌ์šฉ์˜ ์ฃผ์š” ์š”์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • MCP๋Š” AI ๋ชจ๋ธ์ด ๋„๊ตฌ ๋ฐ ๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ํ‘œ์ค€ํ™”
  • ํ™•์žฅ์„ฑ, ์ผ๊ด€์„ฑ, ์ƒํ˜ธ์šด์šฉ์„ฑ ์ด‰์ง„
  • MCP๋Š” ๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋‹จ์ถ•, ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ, ๋ชจ๋ธ ๊ธฐ๋Šฅ ํ™•์žฅ์— ๋„์›€
  • ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜๋Š” ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ€๋Šฅ์ผ€ ํ•จ
  • ๐Ÿง  ์—ฐ์Šต ๋ฌธ์ œ

    ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“ค๊ณ  ์‹ถ์€ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ๊ฐํ•ด๋ณด์„ธ์š”.

  • ์–ด๋–ค ์™ธ๋ถ€ ๋„๊ตฌ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?
  • MCP๊ฐ€ ํ†ตํ•ฉ์„ ์–ด๋–ป๊ฒŒ ๋” ์‰ฝ๊ณ  ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ์š”?
  • ์ถ”๊ฐ€ ์ž๋ฃŒ

  • MCP GitHub ์ €์žฅ์†Œ
  • ๋‹ค์Œ ๋‚ด์šฉ

    ๋‹ค์Œ: ์ฑ•ํ„ฐ 1: ํ•ต์‹ฌ ๊ฐœ๋…

    ---

    ๋ฉด์ฑ… ์กฐํ•ญ:

    ์ด ๋ฌธ์„œ๋Š” AI ๋ฒˆ์—ญ ์„œ๋น„์Šค Co-op Translator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ •ํ™•์„ฑ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜์˜€์œผ๋‚˜ ์ž๋™ ๋ฒˆ์—ญ์—๋Š” ์˜ค๋ฅ˜๋‚˜ ๋ถ€์ •ํ™•ํ•œ ์ ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ์›๋ณธ ๋ฌธ์„œ๊ฐ€ ๊ถŒ์œ„ ์žˆ๋Š” ์ž๋ฃŒ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ค‘์š”ํ•œ ์ •๋ณด์˜ ๊ฒฝ์šฐ, ์ „๋ฌธ์ ์ธ ์ธ๋ ฅ์— ์˜ํ•œ ๋ฒˆ์—ญ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ฒˆ์—ญ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜คํ•ด๋‚˜ ์ž˜๋ชป๋œ ํ•ด์„์— ๋Œ€ํ•ด์„œ ๋‹น์‚ฌ๋Š” ์ฑ…์ž„์„ ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    code Module 01

    Module 01 — ํ•ต์‹ฌ ๊ฐœ๋…

    MCP ํ•ต์‹ฌ ๊ฐœ๋…: AI ํ†ตํ•ฉ์„ ์œ„ํ•œ ๋ชจ๋ธ ์ปจํ…์ŠคํŠธ ํ”„๋กœํ† ์ฝœ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ

    _(์œ„ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ด ๊ฐ•์˜์˜ ์˜์ƒ์„ ์‹œ์ฒญํ•˜์„ธ์š”)_

    ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” MCP์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜, ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ, ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ ๊ตฌํ˜„ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋ช…์‹œ์  ์‚ฌ์šฉ์ž ๋™์˜: ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐ ์ž‘์—…์€ ์‹คํ–‰ ์ „์— ๋ช…ํ™•ํ•œ ์‚ฌ์šฉ์ž ์Šน์ธ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ ‘๊ทผ๋˜๋Š”์ง€, ์–ด๋–ค ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ๊ถŒํ•œ ๋ฐ ์ธ๊ฐ€์— ๋Œ€ํ•ด ์„ธ๋ถ„ํ™”๋œ ์ œ์–ด๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ํ”„๋ผ์ด๋ฒ„์‹œ ๋ณดํ˜ธ: ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋Š” ๋ช…์‹œ์  ๋™์˜๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ ๋…ธ์ถœ๋˜๋ฉฐ, ์ƒํ˜ธ ์ž‘์šฉ ์ „์ฒด ๋ผ์ดํ”„์‚ฌ์ดํด์— ๊ฑธ์ณ ๊ฐ•๋ ฅํ•œ ์ ‘๊ทผ ์ œ์–ด๋กœ ๋ณดํ˜ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด๋‹จ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์—„๊ฒฉํ•œ ํ”„๋ผ์ด๋ฒ„์‹œ ๊ฒฝ๊ณ„๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋„๊ตฌ ์‹คํ–‰ ์•ˆ์ „์„ฑ: ๋ชจ๋“  ๋„๊ตฌ ํ˜ธ์ถœ์€ ํ•ด๋‹น ๋„๊ตฌ์˜ ๊ธฐ๋Šฅ, ๋งค๊ฐœ๋ณ€์ˆ˜, ์ž ์žฌ์  ์˜ํ–ฅ์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๋ช…์‹œ์  ์‚ฌ์šฉ์ž ๋™์˜๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒฌ๊ณ ํ•œ ๋ณด์•ˆ ๊ฒฝ๊ณ„๋Š” ์˜๋„์น˜ ์•Š์€, ์•ˆ์ „ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์•…์˜์ ์ธ ๋„๊ตฌ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์†ก ๊ณ„์ธต ๋ณด์•ˆ: ๋ชจ๋“  ํ†ต์‹  ์ฑ„๋„์€ ์ ์ ˆํ•œ ์•”ํ˜ธํ™” ๋ฐ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ์—ฐ๊ฒฐ์€ ์•ˆ์ „ํ•œ ์ „์†ก ํ”„๋กœํ† ์ฝœ ๋ฐ ์ ์ ˆํ•œ ์ž๊ฒฉ ์ฆ๋ช… ๊ด€๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌํ˜„ ์ง€์นจ:
  • ๊ถŒํ•œ ๊ด€๋ฆฌ: ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„, ๋„๊ตฌ, ๋ฆฌ์†Œ์Šค๋ฅผ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ์‹œ์Šคํ…œ ๊ตฌํ˜„
  • ์ธ์ฆ ๋ฐ ์ธ๊ฐ€: ์•ˆ์ „ํ•œ ์ธ์ฆ ๋ฐฉ๋ฒ•(OAuth, API ํ‚ค)๊ณผ ์ ์ ˆํ•œ ํ† ํฐ ๊ด€๋ฆฌ ๋ฐ ๋งŒ๋ฃŒ ์ฒ˜๋ฆฌ
  • ์ž…๋ ฅ ๊ฒ€์ฆ: ์ •์˜๋œ ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๊ฒ€์ฆํ•˜์—ฌ ์ธ์ ์…˜ ๊ณต๊ฒฉ ๋ฐฉ์ง€
  • ๊ฐ์‚ฌ ๋กœ๊น…: ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ปดํ”Œ๋ผ์ด์–ธ์Šค๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ์ž‘์—…์˜ ํฌ๊ด„์  ๋กœ๊ทธ ์œ ์ง€
  • ๊ฐœ์š”

    ์ด ๊ฐ•์˜์—์„œ๋Š” Model Context Protocol(MCP) ์ƒํƒœ๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์•„ํ‚คํ…์ฒ˜์™€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค. MCP ์ƒํ˜ธ์ž‘์šฉ์„ ์ง€์›ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜, ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    ์ฃผ์š” ํ•™์Šต ๋ชฉํ‘œ

    ์ด ๊ฐ•์˜๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์Œ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • MCP ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜
  • ํ˜ธ์ŠคํŠธ, ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„์˜ ์—ญํ• ๊ณผ ์ฑ…์ž„ ์‹๋ณ„
  • MCP๋ฅผ ์œ ์—ฐํ•œ ํ†ตํ•ฉ ๊ณ„์ธต์œผ๋กœ ๋งŒ๋“œ๋Š” ํ•ต์‹ฌ ํŠน์ง• ๋ถ„์„
  • MCP ์ƒํƒœ๊ณ„ ๋‚ด ์ •๋ณด ํ๋ฆ„ ์ดํ•ด
  • .NET, Java, Python, JavaScript์˜ ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•œ ์‹ค์šฉ์  ํ†ต์ฐฐ ํš๋“
  • MCP ์•„ํ‚คํ…์ฒ˜: ์‹ฌ์ธต ๋ถ„์„

    MCP ์ƒํƒœ๊ณ„๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ๋กœ ๊ตฌ์ถ•๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์‹ ๊ตฌ์กฐ๋Š” AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋„๊ตฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API ๋ฐ ์ปจํ…์ŠคํŠธ ๋ฆฌ์†Œ์Šค์™€ ํšจ์œจ์ ์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๊ธฐ๋ณธ์ ์œผ๋กœ MCP๋Š” ํ•˜๋‚˜์˜ ํ˜ธ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

    
    flowchart LR
    
        subgraph "๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ"
    
            Host["MCP๊ฐ€ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ (Visual Studio, VS Code, IDE, ๋„๊ตฌ)"]
    
            S1["MCP ์„œ๋ฒ„ A"]
    
            S2["MCP ์„œ๋ฒ„ B"]
    
            S3["MCP ์„œ๋ฒ„ C"]
    
            Host <-->|"MCP ํ”„๋กœํ† ์ฝœ"| S1
    
            Host <-->|"MCP ํ”„๋กœํ† ์ฝœ"| S2
    
            Host <-->|"MCP ํ”„๋กœํ† ์ฝœ"| S3
    
            S1 <--> D1[("๋กœ์ปฌ\๋ฐ์ดํ„ฐ ์†Œ์Šค A")]
    
            S2 <--> D2[("๋กœ์ปฌ\๋ฐ์ดํ„ฐ ์†Œ์Šค B")]
    
        end
    
        subgraph "์ธํ„ฐ๋„ท"
    
            S3 <-->|"์›น API"| D3[("์›๊ฒฉ\์„œ๋น„์Šค")]
    
        end
    
    
  • MCP ํ˜ธ์ŠคํŠธ: VSCode, Claude Desktop, IDE ๋˜๋Š” MCP๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” AI ๋„๊ตฌ ํ”„๋กœ๊ทธ๋žจ
  • MCP ํด๋ผ์ด์–ธํŠธ: ์„œ๋ฒ„์™€ 1:1 ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ํด๋ผ์ด์–ธํŠธ
  • MCP ์„œ๋ฒ„: ํ‘œ์ค€ํ™”๋œ Model Context Protocol์„ ํ†ตํ•ด ํŠน์ • ๊ธฐ๋Šฅ์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ํ”„๋กœ๊ทธ๋žจ
  • ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์†Œ์Šค: MCP ์„œ๋ฒ„๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํ“จํ„ฐ ๋‚ด ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์„œ๋น„์Šค
  • ์›๊ฒฉ ์„œ๋น„์Šค: ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด MCP ์„œ๋ฒ„๊ฐ€ API๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ
  • MCP ํ”„๋กœํ† ์ฝœ์€ ๋‚ ์งœ ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ๊ด€๋ฆฌ(YYYY-MM-DD ํ˜•์‹)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ง„ํ™”ํ•˜๋Š” ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์€ 2025-11-25์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋Š” ํ”„๋กœํ† ์ฝœ ๋ช…์„ธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ํ˜ธ์ŠคํŠธ

    Model Context Protocol(MCP)์—์„œ ํ˜ธ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ† ์ฝœ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ฃผ์š” ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•˜๋Š” AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” ๊ฐ ์„œ๋ฒ„ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ์ „์šฉ MCP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์—ฌ๋Ÿฌ MCP ์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ์„ ์กฐ์œจํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ์˜ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: Claude Desktop, Visual Studio Code, Claude Code
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ: MCP ํ†ตํ•ฉ์ด ๋œ IDE ๋ฐ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ
  • ๋งž์ถคํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: ํŠน์ˆ˜ ๋ชฉ์ ์˜ AI ์—์ด์ „ํŠธ ๋ฐ ๋„๊ตฌ
  • ํ˜ธ์ŠคํŠธ๋Š” AI ๋ชจ๋ธ ์ƒํ˜ธ์ž‘์šฉ์„ ์กฐ์œจํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€:

  • AI ๋ชจ๋ธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜: LLM๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜์—ฌ ์‘๋‹ต ์ƒ์„ฑ ๋ฐ AI ์›Œํฌํ”Œ๋กœ ์กฐ์ •
  • ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ๊ด€๋ฆฌ: MCP ์„œ๋ฒ„ ์—ฐ๊ฒฐ๋งˆ๋‹ค ํ•˜๋‚˜์˜ MCP ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ ๋ฐ ์œ ์ง€
  • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ œ์–ด: ๋Œ€ํ™” ํ๋ฆ„, ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ, ์‘๋‹ต ํ‘œ์‹œ ๊ด€๋ฆฌ
  • ๋ณด์•ˆ ์ ์šฉ: ๊ถŒํ•œ, ๋ณด์•ˆ ์ œ์•ฝ ๋ฐ ์ธ์ฆ ์ œ์–ด
  • ์‚ฌ์šฉ์ž ๋™์˜ ์ฒ˜๋ฆฌ: ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ฐ ๋„๊ตฌ ์‹คํ–‰์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์Šน์ธ ๊ด€๋ฆฌ
  • 2. ํด๋ผ์ด์–ธํŠธ

    ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜ธ์ŠคํŠธ์™€ MCP ์„œ๋ฒ„ ๊ฐ„์˜ ์ „์šฉ 1:1 ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ฐ MCP ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜ธ์ŠคํŠธ์— ์˜ํ•ด ํŠน์ • MCP ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ธ์Šคํ„ด์Šคํ™”๋˜์–ด ์กฐ์ง์ ์ด๊ณ  ์•ˆ์ „ํ•œ ํ†ต์‹  ์ฑ„๋„์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜ธ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด ์—ฐ๊ฒฐ์ž ์—ญํ•  ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€:

  • ํ”„๋กœํ† ์ฝœ ํ†ต์‹ : ์š”์ฒญ๊ณผ ์ง€์นจ์„ JSON-RPC 2.0 ํ˜•์‹์œผ๋กœ ์„œ๋ฒ„์— ์ „์†ก
  • ๊ธฐ๋Šฅ ํ˜‘์ƒ: ์ดˆ๊ธฐํ™” ์‹œ ์„œ๋ฒ„์™€ ์ง€์› ๊ธฐ๋Šฅ ๋ฐ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์„ ํ˜‘์ƒ
  • ๋„๊ตฌ ์‹คํ–‰ ๊ด€๋ฆฌ: ๋ชจ๋ธ์˜ ๋„๊ตฌ ์‹คํ–‰ ์š”์ฒญ ๊ด€๋ฆฌ ๋ฐ ์‘๋‹ต ์ฒ˜๋ฆฌ
  • ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ์ฒ˜๋ฆฌ: ์„œ๋ฒ„์˜ ์•Œ๋ฆผ ๋ฐ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ์ฒ˜๋ฆฌ
  • ์‘๋‹ต ์ฒ˜๋ฆฌ: ์„œ๋ฒ„ ์‘๋‹ต์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•  ํ˜•์‹์œผ๋กœ ๊ฐ€๊ณต
  • 3. ์„œ๋ฒ„

    ์„œ๋ฒ„๋Š” MCP ํด๋ผ์ด์–ธํŠธ์— ์ปจํ…์ŠคํŠธ, ๋„๊ตฌ, ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ(ํ˜ธ์ŠคํŠธ์™€ ๊ฐ™์€ ๋จธ์‹ ) ๋˜๋Š” ์›๊ฒฉ(์™ธ๋ถ€ ํ”Œ๋žซํผ)์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ตฌ์กฐํ™”๋œ ์‘๋‹ต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ํ‘œ์ค€ํ™”๋œ Model Context Protocol์„ ํ†ตํ•ด ํŠน์ • ๊ธฐ๋Šฅ์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋Š” ์ปจํ…์ŠคํŠธ ๋ฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€:

  • ๊ธฐ๋Šฅ ๋“ฑ๋ก: ํด๋ผ์ด์–ธํŠธ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์›์‹œ ๊ธฐ๋Šฅ(๋ฆฌ์†Œ์Šค, ํ”„๋กฌํ”„ํŠธ, ๋„๊ตฌ) ๋“ฑ๋ก ๋ฐ ๋…ธ์ถœ
  • ์š”์ฒญ ์ฒ˜๋ฆฌ: ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋„๊ตฌ ํ˜ธ์ถœ, ๋ฆฌ์†Œ์Šค ์š”์ฒญ, ํ”„๋กฌํ”„ํŠธ ์š”์ฒญ ์ ‘์ˆ˜ ๋ฐ ์‹คํ–‰
  • ์ปจํ…์ŠคํŠธ ์ œ๊ณต: ๋ชจ๋ธ ์‘๋‹ต์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋งฅ๋ฝ ์ •๋ณด ๋ฐ ๋ฐ์ดํ„ฐ ์ œ๊ณต
  • ์ƒํƒœ ๊ด€๋ฆฌ: ์„ธ์…˜ ์ƒํƒœ ์œ ์ง€ ๋ฐ ์ƒํƒœ ๊ธฐ๋ฐ˜ ์ƒํ˜ธ์ž‘์šฉ ์ฒ˜๋ฆฌ
  • ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ: ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ๋ฐ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก
  • ์„œ๋ฒ„๋Š” ๋ˆ„๊ตฌ๋‚˜ ํŠนํ™”๋œ ๊ธฐ๋Šฅ์œผ๋กœ ๋ชจ๋ธ ์—ญ๋Ÿ‰์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋กœ์ปฌ ๋ฐ ์›๊ฒฉ ๋ฐฐํฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

    4. ์„œ๋ฒ„ ์›์‹œ ๊ธฐ๋Šฅ

    Model Context Protocol(MCP) ๋‚ด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ, ํ˜ธ์ŠคํŠธ ๋ฐ ์–ธ์–ด ๋ชจ๋ธ ๊ฐ„์˜ ํ’๋ถ€ํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์ธ ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ์›์‹œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์›์‹œ ๊ธฐ๋Šฅ์€ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ œ๊ณต๋˜๋Š” ์ปจํ…์ŠคํŠธ ์ •๋ณด์™€ ๊ฐ€๋Šฅํ•œ ๋™์ž‘ ์œ ํ˜•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    MCP ์„œ๋ฒ„๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ์›์‹œ ๊ธฐ๋Šฅ ์ค‘ ์ž„์˜์˜ ์กฐํ•ฉ์„ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

    ๋ฆฌ์†Œ์Šค

    ๋ฆฌ์†Œ์Šค๋Š” AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ์ •์  ๋˜๋Š” ๋™์  ์ฝ˜ํ…์ธ ๋กœ์„œ ๋ชจ๋ธ์˜ ์ดํ•ด๋ ฅ๊ณผ ์˜์‚ฌ๊ฒฐ์ •์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค:

  • ์ปจํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ: AI ๋ชจ๋ธ ์†Œ๋น„๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐํ™”๋œ ์ •๋ณด ๋ฐ ์ปจํ…์ŠคํŠธ
  • ์ง€์‹ ๋ฒ ์ด์Šค: ๋ฌธ์„œ ์ €์žฅ์†Œ, ๊ธฐ์‚ฌ, ๋งค๋‰ด์–ผ, ์—ฐ๊ตฌ ๋…ผ๋ฌธ
  • ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์†Œ์Šค: ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋กœ์ปฌ ์‹œ์Šคํ…œ ์ •๋ณด
  • ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ: API ์‘๋‹ต, ์›น ์„œ๋น„์Šค, ์›๊ฒฉ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ
  • ๋™์  ์ฝ˜ํ…์ธ : ์™ธ๋ถ€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐ์ดํ„ฐ
  • ๋ฆฌ์†Œ์Šค๋Š” URI๋กœ ์‹๋ณ„๋˜๋ฉฐ resources/list๋ฅผ ํ†ตํ•œ ๊ฒ€์ƒ‰ ๋ฐ resources/read๋ฅผ ํ†ตํ•œ ์กฐํšŒ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

    
    file://documents/project-spec.md
    
    database://production/users/schema
    
    api://weather/current
    
    
    ํ”„๋กฌํ”„ํŠธ

    ํ”„๋กฌํ”„ํŠธ๋Š” ์–ธ์–ด ๋ชจ๋ธ๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ตฌ์กฐํ™”ํ•˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€ํ™”๋œ ์ƒํ˜ธ์ž‘์šฉ ํŒจํ„ด๊ณผ ํ…œํ”Œ๋ฆฟํ™”๋œ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ์ƒํ˜ธ์ž‘์šฉ: ์‚ฌ์ „ ๊ตฌ์กฐํ™”๋œ ๋ฉ”์‹œ์ง€์™€ ๋Œ€ํ™” ์‹œ์ž‘ ๋ฌธ๊ตฌ
  • ์›Œํฌํ”Œ๋กœ ํ…œํ”Œ๋ฆฟ: ๊ณตํ†ต ์ž‘์—…๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ํ‘œ์ค€ํ™”๋œ ์‹œํ€€์Šค
  • ์†Œ์ˆ˜ ์˜ˆ์‹œ(Few-shot) ์˜ˆ์ œ: ๋ชจ๋ธ ์ง€์‹œ๋ฅผ ์œ„ํ•œ ์˜ˆ์ œ ๊ธฐ๋ฐ˜ ํ…œํ”Œ๋ฆฟ
  • ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ: ๋ชจ๋ธ ๋™์ž‘ ๋ฐ ์ปจํ…์ŠคํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ธฐ๋ณธ ํ”„๋กฌํ”„ํŠธ
  • ๋™์  ํ…œํ”Œ๋ฆฟ: ํŠน์ • ์ปจํ…์ŠคํŠธ์— ๋งž์ถฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ์ •ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ
  • ํ”„๋กฌํ”„ํŠธ๋Š” ๋ณ€์ˆ˜ ์น˜ํ™˜์„ ์ง€์›ํ•˜๋ฉฐ prompts/list๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰, prompts/get์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

    
    Generate a {{task_type}} for {{product}} targeting {{audience}} with the following requirements: {{requirements}}
    
    
    ๋„๊ตฌ

    ๋„๊ตฌ๋Š” AI ๋ชจ๋ธ์ด ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. MCP ์ƒํƒœ๊ณ„ ๋‚ด "๋™์‚ฌ" ์—ญํ• ์„ ํ•˜๋ฉฐ ๋ชจ๋ธ์ด ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

  • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜: ๋ชจ๋ธ์ด ํŠน์ • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ณ„ ์ž‘์—…
  • ์™ธ๋ถ€ ์‹œ์Šคํ…œ ํ†ตํ•ฉ: API ํ˜ธ์ถœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ, ํŒŒ์ผ ์ž‘์—…, ๊ณ„์‚ฐ
  • ๊ณ ์œ  ์‹๋ณ„์ž: ๊ฐ ๋„๊ตฌ๋Š” ๋…ํŠนํ•œ ์ด๋ฆ„, ์„ค๋ช…, ๋งค๊ฐœ๋ณ€์ˆ˜ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ง
  • ๊ตฌ์กฐํ™”๋œ ์ž…์ถœ๋ ฅ: ๋„๊ตฌ๋Š” ๊ฒ€์ฆ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๊ณ  ๊ตฌ์กฐํ™”๋˜๊ณ  ํƒ€์ž…์ด ๋ช…ํ™•ํ•œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜
  • ํ–‰๋™ ๊ฐ€๋Šฅ ๋Šฅ๋ ฅ: ๋ชจ๋ธ์ด ์‹ค์ œ ์„ธ๊ณ„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • ๋„๊ตฌ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฒ€์ฆ์„ ์œ„ํ•œ JSON Schema๋กœ ์ •์˜๋˜๋ฉฐ tools/list๋กœ ๊ฒ€์ƒ‰, tools/call๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    ๋„๊ตฌ๋Š” UI ํ‘œํ˜„ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด ์•„์ด์ฝ˜์„ ๋ถ€๊ฐ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋„๊ตฌ ์ฃผ์„: ๋„๊ตฌ๋Š” ์ฝ๊ธฐ ์ „์šฉ(readOnlyHint), ํŒŒ๊ดด์ (destructiveHint) ๋“ฑ ํ–‰ํƒœ ์ฃผ์„์„ ์ง€์›ํ•˜์—ฌ ๋„๊ตฌ ์‹คํ–‰์— ๊ด€ํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด ๊ธฐ๋ฐ˜ ํŒ๋‹จ์„ ๋•์Šต๋‹ˆ๋‹ค.

    ๋„๊ตฌ ์ •์˜ ์˜ˆ์‹œ:

    
    server.tool(
    
      "search_products", 
    
      {
    
        query: z.string().describe("Search query for products"),
    
        category: z.string().optional().describe("Product category filter"),
    
        max_results: z.number().default(10).describe("Maximum results to return")
    
      }, 
    
      async (params) => {
    
        // ๊ฒ€์ƒ‰์„ ์‹คํ–‰ํ•˜๊ณ  ๊ตฌ์กฐํ™”๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค
    
        return await productService.search(params);
    
      }
    
    );
    
    

    ํด๋ผ์ด์–ธํŠธ ์›์‹œ ๊ธฐ๋Šฅ

    Model Context Protocol(MCP)์—์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ํ˜ธ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์›์‹œ ๊ธฐ๋Šฅ์„ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํด๋ผ์ด์–ธํŠธ ์ธก ์›์‹œ ๊ธฐ๋Šฅ์€ AI ๋ชจ๋ธ ๊ธฐ๋Šฅ ๋ฐ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์— ์ ‘๊ทผํ•˜๋Š” ๋” ํ’๋ถ€ํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉ์ ์ธ ์„œ๋ฒ„ ๊ตฌํ˜„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    ์ƒ˜ํ”Œ๋ง

    ์ƒ˜ํ”Œ๋ง์€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์–ธ์–ด ๋ชจ๋ธ ์™„์„ฑ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์›์‹œ ๊ธฐ๋Šฅ์€ ์„œ๋ฒ„๊ฐ€ ์ž์ฒด ๋ชจ๋ธ ์ข…์†์„ฑ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ ๋„ LLM ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

  • ๋ชจ๋ธ ๋…๋ฆฝ์  ์ ‘๊ทผ: ์„œ๋ฒ„๊ฐ€ LLM SDK ํฌํ•จ ์—†์ด ์™„์„ฑ ์š”์ฒญ ๊ฐ€๋Šฅ
  • ์„œ๋ฒ„ ์ฃผ๋„ AI: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ AI ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์œจ์ ์œผ๋กœ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • ์žฌ๊ท€์  LLM ์ƒํ˜ธ์ž‘์šฉ: ์„œ๋ฒ„๊ฐ€ AI ์ง€์›์ด ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค ์ง€์›
  • ๋™์  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ: ์„œ๋ฒ„๊ฐ€ ํ˜ธ์ŠคํŠธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ์ปจํ…์ŠคํŠธ ์‘๋‹ต ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • ๋„๊ตฌ ํ˜ธ์ถœ ์ง€์›: ์„œ๋ฒ„๊ฐ€ ์ƒ˜ํ”Œ๋ง ๋„์ค‘ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์˜ ๋„๊ตฌ ํ˜ธ์ถœ์„ ์œ„ํ•ด tools ๋ฐ toolChoice ๋งค๊ฐœ๋ณ€์ˆ˜ ํฌํ•จ ๊ฐ€๋Šฅ
  • ์ƒ˜ํ”Œ๋ง์€ sampling/complete ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์™„์„ฑ ์š”์ฒญ์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

    ๋ฃจํŠธ

    ๋ฃจํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„๋ฅผ ์„œ๋ฒ„์— ๋…ธ์ถœํ•˜๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ ํŒŒ์ผ ๋ฒ”์œ„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„ ์ง€์ •: ์„œ๋ฒ„๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์ž‘๋™ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๊ณ„ ์ •์˜
  • ์ ‘๊ทผ ์ œ์–ด ํŒŒ์•…: ์„œ๋ฒ„๊ฐ€ ์–ด๋А ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ ํŒŒ์ผ์— ์ ‘๊ทผ ๊ถŒํ•œ ์žˆ๋Š”์ง€ ์ธ์ง€
  • ๋™์  ์—…๋ฐ์ดํŠธ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฃจํŠธ ๋ชฉ๋ก ๋ณ€๊ฒฝ ์‹œ ์„œ๋ฒ„์— ์•Œ๋ฆผ ์ „์†ก
  • URI ๊ธฐ๋ฐ˜ ์‹๋ณ„: file:// URI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ ํŒŒ์ผ ์‹๋ณ„
  • ๋ฃจํŠธ๋Š” roots/list๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฃจํŠธ ๋ณ€๊ฒฝ ์‹œ notifications/roots/list_changed๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    ์ •๋ณด ์š”์ฒญ (Elicitation)

    ์ •๋ณด ์š”์ฒญ์€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ถ”๊ฐ€ ์ •๋ณด๋‚˜ ํ™•์ธ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์š”์ฒญ: ๋„๊ตฌ ์‹คํ–‰์— ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์ •๋ณด ์š”์ฒญ
  • ํ™•์ธ ๋Œ€ํ™”์ƒ์ž: ๋ฏผ๊ฐํ•˜๊ฑฐ๋‚˜ ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์Šน์ธ ์š”์ฒญ
  • ์ƒํ˜ธ์ž‘์šฉ ์›Œํฌํ”Œ๋กœ: ๋‹จ๊ณ„๋ณ„ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ๊ตฌํ˜„ ์ง€์›
  • ๋™์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜์ง‘: ๋„๊ตฌ ์‹คํ–‰ ์ค‘ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜์ง‘
  • ์ •๋ณด ์š”์ฒญ์€ ํด๋ผ์ด์–ธํŠธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ˆ˜์ง‘ํ•˜๋Š” elicitation/request ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    URL ๋ชจ๋“œ ์ •๋ณด ์š”์ฒญ: ์„œ๋ฒ„๋Š” URL ๊ธฐ๋ฐ˜ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ๋„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์–ด, ์ธ์ฆ, ์Šน์ธ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์™ธ๋ถ€ ์›นํŽ˜์ด์ง€๋กœ ์•ˆ๋‚ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋กœ๊น…

    ๋กœ๊น…์€ ์„œ๋ฒ„๊ฐ€ ๋””๋ฒ„๊น…, ๋ชจ๋‹ˆํ„ฐ๋ง, ์šด์˜ ํˆฌ๋ช…์„ฑ์„ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์— ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

  • ๋””๋ฒ„๊น… ์ง€์›: ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ƒ์„ธ ์‹คํ–‰ ๋กœ๊ทธ ์ œ๊ณต
  • ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง: ์ƒํƒœ ์—…๋ฐ์ดํŠธ ๋ฐ ์„ฑ๋Šฅ ์ง€ํ‘œ ์ „์†ก
  • ์˜ค๋ฅ˜ ๋ณด๊ณ : ์ƒ์„ธ ์˜ค๋ฅ˜ ๋งฅ๋ฝ ๋ฐ ์ง„๋‹จ ์ •๋ณด ์ œ๊ณต
  • ๊ฐ์‚ฌ ์ถ”์ : ์„œ๋ฒ„ ์ž‘์—… ๋ฐ ๊ฒฐ์ •์— ๋Œ€ํ•œ ํฌ๊ด„์  ๋กœ๊ทธ ์ƒ์„ฑ
  • ๋กœ๊น… ๋ฉ”์‹œ์ง€๋Š” ์„œ๋ฒ„ ์šด์˜์˜ ํˆฌ๋ช…์„ฑ์„ ์ œ๊ณตํ•˜๊ณ  ๋””๋ฒ„๊น…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

    MCP ๋‚ด ์ •๋ณด ํ๋ฆ„

    Model Context Protocol(MCP)์€ ํ˜ธ์ŠคํŠธ, ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„, ๋ชจ๋ธ ๊ฐ„์— ๊ตฌ์กฐํ™”๋œ ์ •๋ณด ํ๋ฆ„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ํ๋ฆ„์„ ์ดํ•ดํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹๊ณผ ์™ธ๋ถ€ ๋„๊ตฌ ๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋ธ ์‘๋‹ต์— ํ†ตํ•ฉ๋˜๋Š” ๋ฐฉ์‹์„ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ˜ธ์ŠคํŠธ๊ฐ€ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•จ
  • ํ˜ธ์ŠคํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(IDE๋‚˜ ์ฑ„ํŒ… ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ)์ด ๋ณดํ†ต STDIO, WebSocket ๋˜๋Š” ๊ธฐํƒ€ ์ง€์›๋˜๋Š” ์ „์†ก ๋ฐฉ์‹์„ ํ†ตํ•ด MCP ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋Šฅ ํ˜‘์ƒ
  • ํด๋ผ์ด์–ธํŠธ(ํ˜ธ์ŠคํŠธ์— ๋‚ด์žฅ๋จ)์™€ ์„œ๋ฒ„๋Š” ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ, ๋„๊ตฌ, ๋ฆฌ์†Œ์Šค ๋ฐ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์–‘์ธก์ด ์„ธ์…˜์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ํ™•์‹คํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ์š”์ฒญ
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ŠคํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ํ”„๋กฌํ”„ํŠธ๋‚˜ ๋ช…๋ น์–ด ์ž…๋ ฅ). ํ˜ธ์ŠคํŠธ๋Š” ์ด ์ž…๋ ฅ์„ ์ˆ˜์ง‘ํ•˜์—ฌ ์ฒ˜๋ฆฌ์šฉ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฆฌ์†Œ์Šค ๋˜๋Š” ๋„๊ตฌ ์‚ฌ์šฉ
  • - ํด๋ผ์ด์–ธํŠธ๋Š” ๋ชจ๋ธ์˜ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ๋‚˜ ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ•ญ๋ชฉ, ์ง€์‹๋ฒ ์ด์Šค ๋ฌธ์„œ ๋“ฑ)๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    - ๋ชจ๋ธ์ด ๋„๊ตฌ ์‚ฌ์šฉ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉด(์˜ˆ: ๋ฐ์ดํ„ฐ ์กฐํšŒ, ๊ณ„์‚ฐ ์ˆ˜ํ–‰, API ํ˜ธ์ถœ) ํด๋ผ์ด์–ธํŠธ๋Š” ๋„๊ตฌ ์ด๋ฆ„๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ช…์‹œํ•˜์—ฌ ๋„๊ตฌ ํ˜ธ์ถœ ์š”์ฒญ์„ ์„œ๋ฒ„์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ ์‹คํ–‰
  • ์„œ๋ฒ„๋Š” ๋ฆฌ์†Œ์Šค๋‚˜ ๋„๊ตฌ ์š”์ฒญ์„ ๋ฐ›๊ณ  ํ•„์š”ํ•œ ์ž‘์—…(ํ•จ์ˆ˜ ์‹คํ–‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ, ํŒŒ์ผ ์กฐํšŒ ๋“ฑ)์„ ์ˆ˜ํ–‰ํ•œ ๋’ค ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์กฐํ™”๋œ ํ˜•์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ์‘๋‹ต ์ƒ์„ฑ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต(๋ฆฌ์†Œ์Šค ๋ฐ์ดํ„ฐ, ๋„๊ตฌ ์ถœ๋ ฅ ๋“ฑ)์„ ๋ชจ๋ธ ์ƒํ˜ธ์ž‘์šฉ์— ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ์ด ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ํฌ๊ด„์ ์ด๊ณ  ๋ฌธ๋งฅ์— ๋งž๋Š” ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฒฐ๊ณผ ํ‘œ์‹œ
  • ํ˜ธ์ŠคํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ตœ์ข… ์ถœ๋ ฅ์„ ๋ฐ›์•„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ชจ๋ธ์ด ์ƒ์„ฑํ•œ ํ…์ŠคํŠธ์™€ ๋„๊ตฌ ์‹คํ–‰ ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด ํ๋ฆ„์€ ๋ชจ๋ธ๊ณผ ์™ธ๋ถ€ ๋„๊ตฌ ๋ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์›ํ™œํžˆ ์—ฐ๊ฒฐํ•˜์—ฌ MCP๊ฐ€ ๊ณ ๊ธ‰ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ, ์ปจํ…์ŠคํŠธ ์ธ์ง€ AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋กœํ† ์ฝœ ์•„ํ‚คํ…์ฒ˜ & ๊ณ„์ธต

    MCP๋Š” ์™„์ „ํ•œ ํ†ต์‹  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋šœ๋ ทํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

    ๋ฐ์ดํ„ฐ ๊ณ„์ธต

    ๋ฐ์ดํ„ฐ ๊ณ„์ธต์€ JSON-RPC 2.0์„ ๊ธฐ๋ฐ˜์œผ๋กœ MCP ํ”„๋กœํ† ์ฝœ์˜ ํ•ต์‹ฌ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณ„์ธต์€ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ, ์˜๋ฏธ๋ก , ์ƒํ˜ธ์ž‘์šฉ ํŒจํ„ด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค:

    ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ:
  • JSON-RPC 2.0 ํ”„๋กœํ† ์ฝœ: ๋ชจ๋“  ํ†ต์‹ ์ด ํ‘œ์ค€ํ™”๋œ JSON-RPC 2.0 ๋ฉ”์‹œ์ง€ ํ˜•์‹(๋ฉ”์„œ๋“œ ํ˜ธ์ถœ, ์‘๋‹ต, ์•Œ๋ฆผ) ์‚ฌ์šฉ
  • ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์—ฐ๊ฒฐ ์ดˆ๊ธฐํ™”, ๊ธฐ๋Šฅ ํ˜‘์ƒ, ์„ธ์…˜ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ
  • ์„œ๋ฒ„ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ: ๋„๊ตฌ, ๋ฆฌ์†Œ์Šค, ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
  • ํด๋ผ์ด์–ธํŠธ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ: ์„œ๋ฒ„๊ฐ€ LLM ์ƒ˜ํ”Œ๋ง ์š”์ฒญ, ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์š”์ฒญ, ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ์ „์†ก ๊ฐ€๋Šฅ
  • ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ: ํด๋ง ์—†์ด ๋™์  ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ๋น„๋™๊ธฐ ์•Œ๋ฆผ ์ง€์›
  • ์ฃผ์š” ํŠน์ง•:
  • ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ ํ˜‘์ƒ: YYYY-MM-DD ํ˜•์‹์˜ ๋‚ ์งœ ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ํ˜ธํ™˜์„ฑ ๋ณด์žฅ
  • ๊ธฐ๋Šฅ ํƒ์ƒ‰: ์ดˆ๊ธฐํ™” ์‹œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ ์ •๋ณด๋ฅผ ๊ตํ™˜
  • ์ƒํƒœ ์œ ์ง€ ์„ธ์…˜: ๋‹ค์ค‘ ์ƒํ˜ธ์ž‘์šฉ ๊ฐ„ ์—ฐ๊ฒฐ ์ƒํƒœ ์œ ์ง€๋กœ ๋ฌธ๋งฅ ์—ฐ์†์„ฑ ๋ณด์žฅ
  • ์ „์†ก ๊ณ„์ธต

    ์ „์†ก ๊ณ„์ธต์€ MCP ์ฐธ๊ฐ€์ž ๊ฐ„ ํ†ต์‹  ์ฑ„๋„, ๋ฉ”์‹œ์ง€ ํ”„๋ ˆ์ด๋ฐ, ์ธ์ฆ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค:

    ์ง€์›๋˜๋Š” ์ „์†ก ๋ฐฉ์‹:

    1. STDIO ์ „์†ก:

    - ํ‘œ์ค€ ์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•ด ์ง์ ‘ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ 

    - ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๋Š” ๋™์ผ ๋จธ์‹ ์˜ ๋กœ์ปฌ ํ”„๋กœ์„ธ์Šค์— ์ตœ์ ํ™”

    - ๋กœ์ปฌ MCP ์„œ๋ฒ„ ๊ตฌํ˜„์—์„œ ํ”ํžˆ ์‚ฌ์šฉ๋จ

    2. ์ŠคํŠธ๋ฆฌ๋ฐ HTTP ์ „์†ก:

    - ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ HTTP POST ๋ฐฉ์‹ ์‚ฌ์šฉ

    - ์„ ํƒ์  ์„œ๋ฒ„-๋ฐœํ–‰ ์ด๋ฒคํŠธ(SSE)๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ฐ€๋Šฅ

    - ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ์›๊ฒฉ ์„œ๋ฒ„ ํ†ต์‹  ์ง€์›

    - ํ‘œ์ค€ HTTP ์ธ์ฆ(Bearer ํ† ํฐ, API ํ‚ค, ์ปค์Šคํ…€ ํ—ค๋”) ์ง€์›

    - MCP๋Š” ๋ณด์•ˆ ํ† ํฐ ์ธ์ฆ์„ ์œ„ํ•ด OAuth ์‚ฌ์šฉ ๊ถŒ์žฅ

    ์ „์†ก ์ถ”์ƒํ™”:

    ์ „์†ก ๊ณ„์ธต์€ ๋ฐ์ดํ„ฐ ๊ณ„์ธต๊ณผ ๋ณ„๊ฐœ๋กœ ํ†ต์‹  ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๋ชจ๋“  ์ „์†ก ๋ฐฉ์‹์—์„œ ๋™์ผํ•œ JSON-RPC 2.0 ๋ฉ”์‹œ์ง€ ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋กœ์ปฌ๊ณผ ์›๊ฒฉ ์„œ๋ฒ„ ๊ฐ„ ์ „ํ™˜์„ ์›ํ™œํžˆ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ

    MCP ๊ตฌํ˜„์ฒด๋Š” ๋ชจ๋“  ํ”„๋กœํ† ์ฝœ ์ž‘์—…์—์„œ ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์ค‘์š”ํ•œ ๋ณด์•ˆ ์›์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž ๋™์˜ ๋ฐ ์ œ์–ด: ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค๋‚˜ ์ž‘์—… ์ˆ˜ํ–‰ ์ „์— ๋ช…ํ™•ํ•œ ์‚ฌ์šฉ์ž ๋™์˜๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ๊ณต์œ ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ์Šน์ธ๋œ ์ž‘์—…์„ ์ง๊ด€์ ์ธ UI๋ฅผ ํ†ตํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ํ†ต์ œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ํ”„๋ผ์ด๋ฒ„์‹œ: ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋Š” ๋ช…์‹œ์  ๋™์˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋…ธ์ถœ๋˜๋ฉฐ ์ ์ ˆํ•œ ์ ‘๊ทผ ์ œ์–ด๋กœ ๋ณดํ˜ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. MCP ๊ตฌํ˜„์ฒด๋Š” ๋ฌด๋‹จ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์—์„œ ํ”„๋ผ์ด๋ฒ„์‹œ๊ฐ€ ์œ ์ง€๋˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋„๊ตฌ ์•ˆ์ „์„ฑ: ๋„๊ตฌ ํ˜ธ์ถœ ์ „ ๋ช…๋ฐฑํ•œ ์‚ฌ์šฉ์ž ๋™์˜๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๊ฐ ๋„๊ตฌ ๊ธฐ๋Šฅ์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•ด์•ผ ํ•˜๋ฉฐ, ์˜๋„ํ•˜์ง€ ์•Š์€ ํ˜น์€ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋„๊ตฌ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๊ฒฝ๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ณด์•ˆ ์›์น™์„ ์ค€์ˆ˜ํ•จ์œผ๋กœ์จ MCP๋Š” ๊ฐ•๋ ฅํ•œ AI ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ์‚ฌ์šฉ์ž ์‹ ๋ขฐ, ํ”„๋ผ์ด๋ฒ„์‹œ, ์•ˆ์ „์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ฝ”๋“œ ์˜ˆ์ œ: ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

    ์•„๋ž˜๋Š” ์—ฌ๋Ÿฌ ์ธ๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ MCP ์„œ๋ฒ„ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์™€ ๋„๊ตฌ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

    .NET ์˜ˆ์ œ: ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋œ ๊ฐ„๋‹จํ•œ MCP ์„œ๋ฒ„ ์ƒ์„ฑ

    ์•„๋ž˜๋Š” ๋งž์ถค ๋„๊ตฌ ์ •์˜, ๋“ฑ๋ก, ์š”์ฒญ ์ฒ˜๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  Model Context Protocol์„ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„๋‹จํ•œ MCP ์„œ๋ฒ„ ๊ตฌํ˜„ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

    
    using System;
    
    using System.Threading.Tasks;
    
    using ModelContextProtocol.Server;
    
    using ModelContextProtocol.Server.Transport;
    
    using ModelContextProtocol.Server.Tools;
    
    
    
    public class WeatherServer
    
    {
    
        public static async Task Main(string[] args)
    
        {
    
            // Create an MCP server
    
            var server = new McpServer(
    
                name: "Weather MCP Server",
    
                version: "1.0.0"
    
            );
    
            
    
            // Register our custom weather tool
    
            server.AddTool<string, WeatherData>("weatherTool", 
    
                description: "Gets current weather for a location",
    
                execute: async (location) => {
    
                    // Call weather API (simplified)
    
                    var weatherData = await GetWeatherDataAsync(location);
    
                    return weatherData;
    
                });
    
            
    
            // Connect the server using stdio transport
    
            var transport = new StdioServerTransport();
    
            await server.ConnectAsync(transport);
    
            
    
            Console.WriteLine("Weather MCP Server started");
    
            
    
            // Keep the server running until process is terminated
    
            await Task.Delay(-1);
    
        }
    
        
    
        private static async Task<WeatherData> GetWeatherDataAsync(string location)
    
        {
    
            // This would normally call a weather API
    
            // Simplified for demonstration
    
            await Task.Delay(100); // Simulate API call
    
            return new WeatherData { 
    
                Temperature = 72.5,
    
                Conditions = "Sunny",
    
                Location = location
    
            };
    
        }
    
    }
    
    
    
    public class WeatherData
    
    {
    
        public double Temperature { get; set; }
    
        public string Conditions { get; set; }
    
        public string Location { get; set; }
    
    }
    
    

    Java ์˜ˆ์ œ: MCP ์„œ๋ฒ„ ๊ตฌ์„ฑ ์š”์†Œ

    ์ด ์˜ˆ์ œ๋Š” ์œ„ .NET ์˜ˆ์ œ์™€ ๋™์ผํ•œ MCP ์„œ๋ฒ„ ๋ฐ ๋„๊ตฌ ๋“ฑ๋ก์„ Java๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    
    import io.modelcontextprotocol.server.McpServer;
    
    import io.modelcontextprotocol.server.McpToolDefinition;
    
    import io.modelcontextprotocol.server.transport.StdioServerTransport;
    
    import io.modelcontextprotocol.server.tool.ToolExecutionContext;
    
    import io.modelcontextprotocol.server.tool.ToolResponse;
    
    
    
    public class WeatherMcpServer {
    
        public static void main(String[] args) throws Exception {
    
            // MCP ์„œ๋ฒ„ ์ƒ์„ฑ
    
            McpServer server = McpServer.builder()
    
                .name("Weather MCP Server")
    
                .version("1.0.0")
    
                .build();
    
                
    
            // ๋‚ ์”จ ๋„๊ตฌ ๋“ฑ๋ก
    
            server.registerTool(McpToolDefinition.builder("weatherTool")
    
                .description("Gets current weather for a location")
    
                .parameter("location", String.class)
    
                .execute((ToolExecutionContext ctx) -> {
    
                    String location = ctx.getParameter("location", String.class);
    
                    
    
                    // ๋‚ ์”จ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ (๋‹จ์ˆœํ™”๋จ)
    
                    WeatherData data = getWeatherData(location);
    
                    
    
                    // ํ˜•์‹ํ™”๋œ ์‘๋‹ต ๋ฐ˜ํ™˜
    
                    return ToolResponse.content(
    
                        String.format("Temperature: %.1fยฐF, Conditions: %s, Location: %s", 
    
                        data.getTemperature(), 
    
                        data.getConditions(), 
    
                        data.getLocation())
    
                    );
    
                })
    
                .build());
    
            
    
            // stdio ์ „์†ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ
    
            try (StdioServerTransport transport = new StdioServerTransport()) {
    
                server.connect(transport);
    
                System.out.println("Weather MCP Server started");
    
                // ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์„œ๋ฒ„ ์‹คํ–‰ ์œ ์ง€
    
                Thread.currentThread().join();
    
            }
    
        }
    
        
    
        private static WeatherData getWeatherData(String location) {
    
            // ๊ตฌํ˜„ ์‹œ ๋‚ ์”จ API ํ˜ธ์ถœ
    
            // ์˜ˆ์ œ ๋ชฉ์ ์œผ๋กœ ๋‹จ์ˆœํ™”๋จ
    
            return new WeatherData(72.5, "Sunny", location);
    
        }
    
    }
    
    
    
    class WeatherData {
    
        private double temperature;
    
        private String conditions;
    
        private String location;
    
        
    
        public WeatherData(double temperature, String conditions, String location) {
    
            this.temperature = temperature;
    
            this.conditions = conditions;
    
            this.location = location;
    
        }
    
        
    
        public double getTemperature() {
    
            return temperature;
    
        }
    
        
    
        public String getConditions() {
    
            return conditions;
    
        }
    
        
    
        public String getLocation() {
    
            return location;
    
        }
    
    }
    
    

    Python ์˜ˆ์ œ: MCP ์„œ๋ฒ„ ๊ตฌ์ถ•

    ์ด ์˜ˆ์ œ๋Š” fastmcp๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋จผ์ € ์„ค์น˜ํ•ด ์ฃผ์„ธ์š”:

    
    pip install fastmcp
    
    

    ์ฝ”๋“œ ์ƒ˜ํ”Œ:

    
    #!/usr/bin/env python3
    
    import asyncio
    
    from fastmcp import FastMCP
    
    from fastmcp.transports.stdio import serve_stdio
    
    
    
    # FastMCP ์„œ๋ฒ„ ์ƒ์„ฑ
    
    mcp = FastMCP(
    
        name="Weather MCP Server",
    
        version="1.0.0"
    
    )
    
    
    
    @mcp.tool()
    
    def get_weather(location: str) -> dict:
    
        """Gets current weather for a location."""
    
        return {
    
            "temperature": 72.5,
    
            "conditions": "Sunny",
    
            "location": location
    
        }
    
    
    
    # ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์ฒด ๋ฐฉ๋ฒ•
    
    class WeatherTools:
    
        @mcp.tool()
    
        def forecast(self, location: str, days: int = 1) -> dict:
    
            """Gets weather forecast for a location for the specified number of days."""
    
            return {
    
                "location": location,
    
                "forecast": [
    
                    {"day": i+1, "temperature": 70 + i, "conditions": "Partly Cloudy"}
    
                    for i in range(days)
    
                ]
    
            }
    
    
    
    # ํด๋ž˜์Šค ๋„๊ตฌ ๋“ฑ๋ก
    
    weather_tools = WeatherTools()
    
    
    
    # ์„œ๋ฒ„ ์‹œ์ž‘
    
    if __name__ == "__main__":
    
        asyncio.run(serve_stdio(mcp))
    
    

    JavaScript ์˜ˆ์ œ: MCP ์„œ๋ฒ„ ์ƒ์„ฑ

    ์ด ์˜ˆ์ œ๋Š” JavaScript๋กœ MCP ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‘ ๊ฐœ์˜ ๋‚ ์”จ ๊ด€๋ จ ๋„๊ตฌ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    
    // ๊ณต์‹ ๋ชจ๋ธ ์ปจํ…์ŠคํŠธ ํ”„๋กœํ† ์ฝœ SDK ์‚ฌ์šฉ
    
    import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
    
    import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
    
    import { z } from "zod"; // ๋งค๊ฐœ๋ณ€์ˆ˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์šฉ
    
    
    
    // MCP ์„œ๋ฒ„ ์ƒ์„ฑ
    
    const server = new McpServer({
    
      name: "Weather MCP Server",
    
      version: "1.0.0"
    
    });
    
    
    
    // ๋‚ ์”จ ๋„๊ตฌ ์ •์˜
    
    server.tool(
    
      "weatherTool",
    
      {
    
        location: z.string().describe("The location to get weather for")
    
      },
    
      async ({ location }) => {
    
        // ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ ์”จ API๋ฅผ ํ˜ธ์ถœํ•จ
    
        // ๋ฐ๋ชจ๋ฅผ ์œ„ํ•ด ๋‹จ์ˆœํ™”๋จ
    
        const weatherData = await getWeatherData(location);
    
        
    
        return {
    
          content: [
    
            { 
    
              type: "text", 
    
              text: `Temperature: ${weatherData.temperature}ยฐF, Conditions: ${weatherData.conditions}, Location: ${weatherData.location}` 
    
            }
    
          ]
    
        };
    
      }
    
    );
    
    
    
    // ์˜ˆ๋ณด ๋„๊ตฌ ์ •์˜
    
    server.tool(
    
      "forecastTool",
    
      {
    
        location: z.string(),
    
        days: z.number().default(3).describe("Number of days for forecast")
    
      },
    
      async ({ location, days }) => {
    
        // ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ ์”จ API๋ฅผ ํ˜ธ์ถœํ•จ
    
        // ๋ฐ๋ชจ๋ฅผ ์œ„ํ•ด ๋‹จ์ˆœํ™”๋จ
    
        const forecast = await getForecastData(location, days);
    
        
    
        return {
    
          content: [
    
            { 
    
              type: "text", 
    
              text: `${days}-day forecast for ${location}: ${JSON.stringify(forecast)}` 
    
            }
    
          ]
    
        };
    
      }
    
    );
    
    
    
    // ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๋“ค
    
    async function getWeatherData(location) {
    
      // API ํ˜ธ์ถœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    
      return {
    
        temperature: 72.5,
    
        conditions: "Sunny",
    
        location: location
    
      };
    
    }
    
    
    
    async function getForecastData(location, days) {
    
      // API ํ˜ธ์ถœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    
      return Array.from({ length: days }, (_, i) => ({
    
        day: i + 1,
    
        temperature: 70 + Math.floor(Math.random() * 10),
    
        conditions: i % 2 === 0 ? "Sunny" : "Partly Cloudy"
    
      }));
    
    }
    
    
    
    // stdio ์ „์†ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์—ฐ๊ฒฐ
    
    const transport = new StdioServerTransport();
    
    server.connect(transport).catch(console.error);
    
    
    
    console.log("Weather MCP Server started");
    
    

    ์ด JavaScript ์˜ˆ์ œ๋Š” Model Context Protocol SDK๋ฅผ ์‚ฌ์šฉํ•ด MCP ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. weatherTool๊ณผ forecastTool์ด๋ผ๋Š” ๋‘ ๋„๊ตฌ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  StdioServerTransport๋ฅผ ํ†ตํ•ด MCP ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•˜๋Š” ๊ณผ์ •์ด ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ณด์•ˆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ

    MCP๋Š” ํ”„๋กœํ† ์ฝœ ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ณด์•ˆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ์šฉ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

    1. ๋„๊ตฌ ๊ถŒํ•œ ์ œ์–ด

    ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜ ๋™์•ˆ ๋ชจ๋ธ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ๊ฐ€๋œ ๋„๊ตฌ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ์˜๋„ํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ž‘์—… ์œ„ํ—˜์„ ์ค„์ž…๋‹ˆ๋‹ค. ๊ถŒํ•œ์€ ์‚ฌ์šฉ์ž ์„ค์ •, ์กฐ์ง ์ •์ฑ… ๋˜๋Š” ์ƒํ˜ธ์ž‘์šฉ ๋ฌธ๋งฅ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    2. ์ธ์ฆ

    ์„œ๋ฒ„๋Š” ๋„๊ตฌ, ๋ฆฌ์†Œ์Šค, ๋ฏผ๊ฐํ•œ ์ž‘์—… ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ ์ „์— ์ธ์ฆ์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API ํ‚ค, OAuth ํ† ํฐ, ๊ธฐํƒ€ ์ธ์ฆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ธ์ฆ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์‚ฌ์šฉ์ž๋งŒ ์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

    3. ๊ฒ€์ฆ

    ๋ชจ๋“  ๋„๊ตฌ ํ˜ธ์ถœ์— ๋Œ€ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋„๊ตฌ๋Š” ์˜ˆ์ƒ ํƒ€์ž…, ํ˜•์‹, ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•˜๋ฉฐ ์„œ๋ฒ„๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ์ด์— ๋งž๊ฒŒ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž˜๋ชป๋˜๊ฑฐ๋‚˜ ์•…์˜์ ์ธ ์ž…๋ ฅ์ด ๋„๊ตฌ ๊ตฌํ˜„์— ๋„๋‹ฌํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  ์ž‘์—… ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    4. ์š”์œจ ์ œํ•œ

    ์˜ค์šฉ ๋ฐฉ์ง€์™€ ๊ณต์ •ํ•œ ์„œ๋ฒ„ ์ž์› ์‚ฌ์šฉ์„ ์œ„ํ•ด MCP ์„œ๋ฒ„๋Š” ๋„๊ตฌ ํ˜ธ์ถœ ๋ฐ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์— ๋Œ€ํ•ด ์š”์œจ ์ œํ•œ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋ณ„, ์„ธ์…˜๋ณ„, ์ „์ฒด ๋‹จ์œ„๋กœ ์ œํ•œ์„ ์ ์šฉํ•˜๋ฉฐ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ์ด๋‚˜ ๊ณผ๋„ํ•œ ์ž์› ์†Œ๋น„๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ฉํ•ด MCP๋Š” ์–ธ์–ด ๋ชจ๋ธ๊ณผ ์™ธ๋ถ€ ๋„๊ตฌ ๋ฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ†ตํ•ฉ์„ ์œ„ํ•œ ์•ˆ์ „ํ•œ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ ‘๊ทผ ๋ฐ ์‚ฌ์šฉ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋กœํ† ์ฝœ ๋ฉ”์‹œ์ง€ & ํ†ต์‹  ํ๋ฆ„

    MCP ํ†ต์‹ ์€ ๋ช…ํ™•ํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•ด ๊ตฌ์กฐํ™”๋œ JSON-RPC 2.0 ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์€ ๋‹ค์–‘ํ•œ ์ž‘์—… ์œ ํ˜•๋ณ„๋กœ ํŠน์ • ๋ฉ”์‹œ์ง€ ํŒจํ„ด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค:

    ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ ์œ ํ˜•:

    ์ดˆ๊ธฐํ™” ๋ฉ”์‹œ์ง€
  • initialize ์š”์ฒญ: ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๋ฐ ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „๊ณผ ๊ธฐ๋Šฅ ํ˜‘์ƒ
  • initialize ์‘๋‹ต: ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ ๋ฐ ์„œ๋ฒ„ ์ •๋ณด ํ™•์ธ
  • notifications/initialized: ์ดˆ๊ธฐํ™” ์™„๋ฃŒ ๋ฐ ์„ธ์…˜ ์ค€๋น„ ์™„๋ฃŒ ์‹ ํ˜ธ
  • ํƒ์ƒ‰ ๋ฉ”์‹œ์ง€
  • tools/list ์š”์ฒญ: ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ์กฐํšŒ
  • resources/list ์š”์ฒญ: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค(๋ฐ์ดํ„ฐ ์†Œ์Šค) ๋ชฉ๋ก ์š”์ฒญ
  • prompts/list ์š”์ฒญ: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ ์กฐํšŒ
  • ์‹คํ–‰ ๋ฉ”์‹œ์ง€
  • tools/call ์š”์ฒญ: ํŠน์ • ๋„๊ตฌ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์‹คํ–‰
  • resources/read ์š”์ฒญ: ํŠน์ • ๋ฆฌ์†Œ์Šค์˜ ๋‚ด์šฉ ์กฐํšŒ
  • prompts/get ์š”์ฒญ: ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฉ”์‹œ์ง€
  • sampling/complete ์š”์ฒญ: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— LLM ์™„๋ฃŒ๋ฅผ ์š”์ฒญ
  • elicitation/request: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์š”์ฒญ
  • ๋กœ๊น… ๋ฉ”์‹œ์ง€: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก
  • ์•Œ๋ฆผ ๋ฉ”์‹œ์ง€
  • notifications/tools/list_changed: ์„œ๋ฒ„๊ฐ€ ๋„๊ตฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ฆผ
  • notifications/resources/list_changed: ์„œ๋ฒ„๊ฐ€ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ฆผ
  • notifications/prompts/list_changed: ์„œ๋ฒ„๊ฐ€ ํ”„๋กฌํ”„ํŠธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ฆผ
  • ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ:

    ๋ชจ๋“  MCP ๋ฉ”์‹œ์ง€๋Š” JSON-RPC 2.0 ํ˜•์‹์„ ๋”ฐ๋ฅด๋ฉฐ:

  • ์š”์ฒญ ๋ฉ”์‹œ์ง€: id, method, ์„ ํƒ์  params ํฌํ•จ
  • ์‘๋‹ต ๋ฉ”์‹œ์ง€: id ๋ฐ result ๋˜๋Š” error ํฌํ•จ
  • ์•Œ๋ฆผ ๋ฉ”์‹œ์ง€: method ๋ฐ ์„ ํƒ์  params ํฌํ•จ(id ์—†์Œ, ์‘๋‹ต ๊ธฐ๋Œ€ ์•ˆํ•จ)
  • ์ด ๊ตฌ์กฐํ™”๋œ ํ†ต์‹ ์€ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ, ๋„๊ตฌ ์ฒด์ธ, ๊ฒฌ๊ณ ํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋“ฑ ๊ณ ๊ธ‰ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ง€์›ํ•˜๋ฉด์„œ ์‹ ๋ขฐ์„ฑ ์žˆ๊ณ  ์ถ”์  ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ž‘์—…(์‹คํ—˜์ )

    ์ž‘์—…(tasks)์€ MCP ์š”์ฒญ์— ๋Œ€ํ•ด ๊ฒฐ๊ณผ ์ง€์—ฐ ์ˆ˜๋ น๊ณผ ์ƒํƒœ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•œ ์ง€์†์  ์‹คํ–‰ ๋ž˜ํผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‹คํ—˜์  ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค:

  • ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—…: ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๊ณ„์‚ฐ, ์ž‘์—… ํ๋ฆ„ ์ž๋™ํ™”, ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ์ถ”์ 
  • ๊ฒฐ๊ณผ ์ง€์—ฐ ์ˆ˜๋ น: ์ž‘์—… ์ƒํƒœ๋ฅผ ํด๋งํ•˜๊ณ  ์™„๋ฃŒ ์‹œ ๊ฒฐ๊ณผ ์ˆ˜์‹ 
  • ์ƒํƒœ ์ถ”์ : ์ •์˜๋œ ๋ผ์ดํ”„์‚ฌ์ดํด ์ƒํƒœ๋ฅผ ํ†ตํ•ด ์ž‘์—… ์ง„ํ–‰ ์ƒํ™ฉ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋‹ค๋‹จ๊ณ„ ์ž‘์—…: ๋‹ค์ˆ˜ ์ƒํ˜ธ์ž‘์šฉ์— ๊ฑธ์นœ ๋ณต์žกํ•œ ์ž‘์—… ํ๋ฆ„ ์ง€์›
  • ์ž‘์—…์€ ์ฆ‰์‹œ ์™„๋ฃŒ๋˜์ง€ ์•Š๋Š” ์ž‘์—…์— ๋Œ€ํ•ด ๋น„๋™๊ธฐ ์‹คํ–‰ ํŒจํ„ด์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋„๋ก ํ‘œ์ค€ MCP ์š”์ฒญ์„ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์š” ์š”์ 

  • ์•„ํ‚คํ…์ฒ˜: MCP๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ๋‹ค์ˆ˜ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ์„œ๋ฒ„์— ๊ด€๋ฆฌํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜
  • ์ฐธ๊ฐ€์ž: ํ˜ธ์ŠคํŠธ(AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜), ํด๋ผ์ด์–ธํŠธ(ํ”„๋กœํ† ์ฝœ ์ปค๋„ฅํ„ฐ), ์„œ๋ฒ„(๊ธฐ๋Šฅ ์ œ๊ณต์ž) ํฌํ•จ
  • ์ „์†ก ๋ฐฉ์‹: STDIO(๋กœ์ปฌ) ๋ฐ ์ŠคํŠธ๋ฆฌ๋ฐ HTTP + ์„ ํƒ์  SSE(์›๊ฒฉ) ์ง€์›
  • ํ•ต์‹ฌ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ: ์„œ๋ฒ„๋Š” ๋„๊ตฌ(์‹คํ–‰ ํ•จ์ˆ˜), ๋ฆฌ์†Œ์Šค(๋ฐ์ดํ„ฐ ์†Œ์Šค), ํ”„๋กฌํ”„ํŠธ(ํ…œํ”Œ๋ฆฟ)๋ฅผ ๋…ธ์ถœ
  • ํด๋ผ์ด์–ธํŠธ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ: ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ƒ˜ํ”Œ๋ง(๋„๊ตฌ ํ˜ธ์ถœ ํฌํ•จ LLM ์™„๋ฃŒ), ์‚ฌ์šฉ์ž ์ž…๋ ฅ, ๋ฃจํŠธ(ํŒŒ์ผ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„), ๋กœ๊น… ์š”์ฒญ ๊ฐ€๋Šฅ
  • ์‹คํ—˜ ๊ธฐ๋Šฅ: ์ž‘์—… ๊ธฐ๋Šฅ์€ ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—…์— ๋Œ€ํ•œ ์ง€์† ์‹คํ–‰ ๋ž˜ํผ ์ œ๊ณต
  • ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜: JSON-RPC 2.0๊ณผ ๋‚ ์งœ ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ๊ด€๋ฆฌ(ํ˜„์žฌ ๋ฒ„์ „: 2025-11-25)
  • ์‹ค์‹œ๊ฐ„ ๊ธฐ๋Šฅ: ๋™์  ์—…๋ฐ์ดํŠธ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์•Œ๋ฆผ ์ง€์›
  • ๋ณด์•ˆ ์ตœ์šฐ์„ : ๋ช…ํ™•ํ•œ ์‚ฌ์šฉ์ž ๋™์˜, ๋ฐ์ดํ„ฐ ํ”„๋ผ์ด๋ฒ„์‹œ ๋ณดํ˜ธ, ์•ˆ์ „ํ•œ ์ „์†ก์ด ํ•ต์‹ฌ ์š”๊ตฌ์‚ฌํ•ญ
  • ์‹ค์Šต

    ๋‹น์‹ ์˜ ์˜์—ญ์—์„œ ์œ ์šฉํ•  ๊ฐ„๋‹จํ•œ MCP ๋„๊ตฌ๋ฅผ ์„ค๊ณ„ํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ •์˜ํ•  ๋‚ด์šฉ:

    1. ๋„๊ตฌ ์ด๋ฆ„

    2. ์ˆ˜๋ฝํ•  ๋งค๊ฐœ๋ณ€์ˆ˜

    3. ๋ฐ˜ํ™˜ํ•  ์ถœ๋ ฅ

    4. ๋ชจ๋ธ์ด ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

    ---

    ๋‹ค์Œ ๋‚ด์šฉ

    ๋‹ค์Œ: 2์žฅ: ๋ณด์•ˆ

    ---

    ๋ฉด์ฑ… ์กฐํ•ญ:

    ์ด ๋ฌธ์„œ๋Š” AI ๋ฒˆ์—ญ ์„œ๋น„์Šค Co-op Translator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ •ํ™•์„ฑ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋‚˜, ์ž๋™ ๋ฒˆ์—ญ์—๋Š” ์˜ค๋ฅ˜๋‚˜ ๋ถ€์ •ํ™•ํ•œ ๋‚ด์šฉ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ์„ ์œ ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ์›๋ณธ ๋ฌธ์„œ์˜ ์›์–ด ๋ฒ„์ „์„ ๊ถŒ์œ„ ์žˆ๋Š” ์ž๋ฃŒ๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ค‘์š”ํ•œ ์ •๋ณด์˜ ๊ฒฝ์šฐ ์ „๋ฌธ ์ธ๋ ฅ์— ์˜ํ•œ ๋ฒˆ์—ญ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ๋ณธ ๋ฒˆ์—ญ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์˜คํ•ด๋‚˜ ์ž˜๋ชป๋œ ํ•ด์„์— ๋Œ€ํ•ด์„œ๋Š” ์ฑ…์ž„์„ ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    code Module 02

    Module 02 — ๋ณด์•ˆ

    MCP ๋ณด์•ˆ: AI ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์ข…ํ•ฉ ๋ณดํ˜ธ

    _(์œ„ ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ด ์ˆ˜์—…์˜ ๋™์˜์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)_

    ๋ณด์•ˆ์€ AI ์‹œ์Šคํ…œ ์„ค๊ณ„์˜ ๊ธฐ๋ณธ์ด๋ฏ€๋กœ ๋‘ ๋ฒˆ์งธ ์„น์…˜์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘ก๋‹ˆ๋‹ค.

    ์ด๋Š” Microsoft์˜ Secure Future Initiative์— ๋ช…์‹œ๋œ Secure by Design ์›์น™๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋ธ ์ปจํ…์ŠคํŠธ ํ”„๋กœํ† ์ฝœ(MCP)์€ AI ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์— ์ „ํ†ต์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์œ„ํ—˜์„ ๋„˜์–ด์„  ๋…ํŠนํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. MCP ์‹œ์Šคํ…œ์€ ๊ฒ€์ฆ๋œ ๋ณด์•ˆ ๋ฌธ์ œ(์•ˆ์ „ํ•œ ์ฝ”๋”ฉ, ์ตœ์†Œ ๊ถŒํ•œ, ๊ณต๊ธ‰๋ง ๋ณด์•ˆ)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…, ๋„๊ตฌ ์˜ค์—ผ, ์„ธ์…˜ ํƒˆ์ทจ, ํ˜ผ๋™๋œ ๋Œ€๋ฆฌ์ธ ๊ณต๊ฒฉ, ํ† ํฐ ์ „๋‹ฌ ์ทจ์•ฝ์„ฑ, ๋™์  ๊ถŒํ•œ ์ˆ˜์ • ๊ฐ™์€ AI ํŠน์œ  ์œ„ํ˜‘์—๋„ ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์ˆ˜์—…์—์„œ๋Š” MCP ๊ตฌํ˜„์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณด์•ˆ ์œ„ํ—˜๋“ค์„ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹คโ€”์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ, ๊ณผ๋„ํ•œ ๊ถŒํ•œ, ๊ฐ„์ ‘ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…, ์„ธ์…˜ ๋ณด์•ˆ, ํ˜ผ๋™๋œ ๋Œ€๋ฆฌ์ธ ๋ฌธ์ œ, ํ† ํฐ ๊ด€๋ฆฌ, ๊ณต๊ธ‰๋ง ์ทจ์•ฝ์„ฑ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋˜ํ•œ Microsoft์˜ Prompt Shields, Azure Content Safety, GitHub Advanced Security์™€ ๊ฐ™์€ ์†”๋ฃจ์…˜์„ ํ™œ์šฉํ•˜์—ฌ MCP ๋ฐฐํฌ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ œ์–ด ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋ฐฐ์›๋‹ˆ๋‹ค.

    ํ•™์Šต ๋ชฉํ‘œ

    ์ด ์ˆ˜์—…์„ ๋งˆ์น˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • MCP ํŠน์œ  ์œ„ํ˜‘ ์‹๋ณ„: ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…, ๋„๊ตฌ ์˜ค์—ผ, ๊ณผ๋„ํ•œ ๊ถŒํ•œ, ์„ธ์…˜ ํƒˆ์ทจ, ํ˜ผ๋™๋œ ๋Œ€๋ฆฌ์ธ ๋ฌธ์ œ, ํ† ํฐ ์ „๋‹ฌ ์ทจ์•ฝ์„ฑ, ๊ณต๊ธ‰๋ง ์œ„ํ—˜ ๋“ฑ MCP ์‹œ์Šคํ…œ ๊ณ ์œ  ๋ณด์•ˆ ์œ„ํ—˜์„ ์ธ์‹
  • ๋ณด์•ˆ ์ œ์–ด ์ ์šฉ: ๊ฐ•๋ ฅํ•œ ์ธ์ฆ, ์ตœ์†Œ ๊ถŒํ•œ ์ ‘๊ทผ, ์•ˆ์ „ํ•œ ํ† ํฐ ๊ด€๋ฆฌ, ์„ธ์…˜ ๋ณด์•ˆ ์ œ์–ด, ๊ณต๊ธ‰๋ง ๊ฒ€์ฆ ๋“ฑ ํšจ๊ณผ์ ์ธ ์™„ํ™”์ฑ… ๊ตฌํ˜„
  • Microsoft ๋ณด์•ˆ ์†”๋ฃจ์…˜ ํ™œ์šฉ: MCP ์ž‘์—… ๋ถ€ํ•˜ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ Microsoft Prompt Shields, Azure Content Safety, GitHub Advanced Security ์ดํ•ด ๋ฐ ๋ฐฐํฌ
  • ๋„๊ตฌ ๋ณด์•ˆ ๊ฒ€์ฆ: ๋„๊ตฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ์ค‘์š”์„ฑ ์ธ์‹, ๋™์  ๋ณ€๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋ง, ๊ฐ„์ ‘ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… ๊ณต๊ฒฉ ๋ฐฉ์–ด
  • ๋ชจ๋ฒ” ์‚ฌ๋ก€ ํ†ตํ•ฉ: ๊ฒ€์ฆ๋œ ๋ณด์•ˆ ๊ธฐ๋ณธ ์›์น™(์•ˆ์ „ํ•œ ์ฝ”๋”ฉ, ์„œ๋ฒ„ ๊ฐ•ํ™”, ์ œ๋กœ ํŠธ๋Ÿฌ์ŠคํŠธ)๊ณผ MCP ํŠนํ™” ์ œ์–ด๋ฅผ ๊ฒฐํ•ฉํ•œ ์ข…ํ•ฉ ๋ณดํ˜ธ ๊ตฌํ˜„
  • MCP ๋ณด์•ˆ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์ œ์–ด

    ์ตœ์‹  MCP ๊ตฌํ˜„์€ ์ „ํ†ต์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ๊ณผ AI ํŠนํ™” ์œ„ํ˜‘์„ ๋ชจ๋‘ ํ•ด๊ฒฐํ•˜๋Š” ๋‹ค์ธต ๋ณด์•ˆ ์ ‘๊ทผ๋ฒ•์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ์ง„ํ™”ํ•˜๋Š” MCP ๋ช…์„ธ๋Š” ๋ณด์•ˆ ์ œ์–ด๋ฅผ ์ง€์†์ ์œผ๋กœ ์„ฑ์ˆ™์‹œ์ผœ ๊ธฐ์—… ๋ณด์•ˆ ์•„ํ‚คํ…์ฒ˜์™€ ๊ฒ€์ฆ๋œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์™€์˜ ํ†ตํ•ฉ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

    ํ˜„์žฌ ๋ณด์•ˆ ํ™˜๊ฒฝ

    > ์ฐธ๊ณ : ์ด ์ •๋ณด๋Š” 2026๋…„ 2์›” 5์ผ ๊ธฐ์ค€ MCP ๋ณด์•ˆ ํ‘œ์ค€์„ ๋ฐ˜์˜ํ•˜๋ฉฐ, MCP Specification 2025-11-25์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

    MCP ํ”„๋กœํ† ์ฝœ์€ ๋น ๋ฅด๊ฒŒ ์ง„ํ™”ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ–ฅํ›„ ๊ตฌํ˜„์—์„œ๋Š” ์ƒˆ๋กœ์šด ์ธ์ฆ ํŒจํ„ด๊ณผ ๊ฐ•ํ™”๋œ ์ œ์–ด๊ฐ€ ๋„์ž…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ•ญ์ƒ ์ตœ์‹  ์ง€์นจ์€ MCP Specification, MCP GitHub ์ €์žฅ์†Œ, ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๐Ÿ”๏ธ MCP ๋ณด์•ˆ ์ •์ƒ ํšŒ์˜ ์›Œํฌ์ˆ (Sherpa)

    ์‹ค๋ฌดํ˜• ๋ณด์•ˆ ๊ต์œก์„ ์œ„ํ•ด์„œ๋Š” Microsoft Azure์—์„œ MCP ์„œ๋ฒ„ ๋ณด์•ˆ์„ ์œ„ํ•œ ํฌ๊ด„์  ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๋Š” MCP Security Summit Workshop (Sherpa)๋ฅผ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์›Œํฌ์ˆ ๊ฐœ์š”

  • ๋ฌธ์ œ ํ•ด๊ฒฐ ํ•™์Šต: ๊ณ ์˜๋กœ ์ทจ์•ฝํ•œ ์„œ๋ฒ„๋ฅผ ๊ณต๊ฒฉํ•˜์—ฌ ์ทจ์•ฝ์  ์ง์ ‘ ๊ฒฝํ—˜
  • Azure ๋„ค์ดํ‹ฐ๋ธŒ ๋ณด์•ˆ ํ™œ์šฉ: Azure Entra ID, Key Vault, API Management, AI Content Safety ํ™œ์šฉ
  • ๋ฐฉ์–ด ์‹ฌ์ธต ์ „๋žต ์ ์šฉ: ์บ ํ”„๋ณ„ ๋‹จ๊ณ„์  ๋ณด์•ˆ ๊ณ„์ธต ๊ตฌ์ถ•
  • OWASP ํ‘œ์ค€ ๋”ฐ๋ฅด๊ธฐ: ๋ชจ๋“  ๊ธฐ๋ฒ•์€ OWASP MCP Azure Security Guide์— ๋งคํ•‘
  • ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ํš๋“: ํ…Œ์ŠคํŠธ๋œ ์‹ค๋ฌด ๊ตฌํ˜„ ์ฝ”๋“œ ์ œ๊ณต
  • ํƒํ—˜ ๊ฒฝ๋กœ

    ์บ ํ”„ ์ง‘์ค‘ ๋‚ด์šฉ ๋‹ค๋ฃจ๋Š” OWASP ์œ„ํ—˜ ------ ---------- ------------------- Base Camp MCP ๊ธฐ๋ณธ ์›๋ฆฌ ๋ฐ ์ธ์ฆ ์ทจ์•ฝ์  MCP01, MCP07 Camp 1: Identity OAuth 2.1, Azure Managed Identity, Key Vault MCP01, MCP02, MCP07 Camp 2: Gateway API Management, Private Endpoints, ๊ฑฐ๋ฒ„๋„Œ์Šค MCP02, MCP07, MCP09 Camp 3: I/O Security ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…, PII ๋ณดํ˜ธ, ์ฝ˜ํ…์ธ  ์•ˆ์ „ MCP03, MCP05, MCP06 Camp 4: Monitoring ๋กœ๊ทธ ๋ถ„์„, ๋Œ€์‹œ๋ณด๋“œ, ์œ„ํ˜‘ ํƒ์ง€ MCP08 ์ •์ƒ ํšŒ์˜ ๋ ˆ๋“œ ํŒ€ / ๋ธ”๋ฃจ ํŒ€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ „์ฒด

    ์‹œ์ž‘ํ•˜๊ธฐ: https://azure-samples.github.io/sherpa/

    OWASP MCP Top 10 ๋ณด์•ˆ ์œ„ํ—˜

    ์œ„ํ—˜ ์„ค๋ช… Azure ์™„ํ™”์ฑ… ------ --------- -------------- MCP01 ํ† ํฐ ๊ด€๋ฆฌ ์˜ค๋ฅ˜ ๋ฐ ๋น„๋ฐ€ ๋…ธ์ถœ Azure Key Vault, Managed Identity MCP02 ๊ถŒํ•œ ์ƒ์Šน(์Šค์ฝ”ํ”„ ํ™•๋Œ€) RBAC, Conditional Access MCP03 ๋„๊ตฌ ์˜ค์—ผ ๋„๊ตฌ ๊ฒ€์ฆ, ๋ฌด๊ฒฐ์„ฑ ํ™•์ธ MCP04 ๊ณต๊ธ‰๋ง ๊ณต๊ฒฉ GitHub Advanced Security, ์ข…์†์„ฑ ์Šค์บ” MCP05 ๋ช…๋ น ์ฃผ์ž… ๋ฐ ์‹คํ–‰ ์ž…๋ ฅ ๊ฒ€์ฆ, ์ƒŒ๋“œ๋ฐ•์‹ฑ MCP06 ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… Azure AI Content Safety, Prompt Shields MCP07 ๋ฏธํกํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ Azure Entra ID, PKCE ํฌํ•จ OAuth 2.1 MCP08 ๊ฐ์‚ฌ ๋ฐ ์›๊ฒฉ ์ธก์ • ๋ถ€์กฑ Azure Monitor, Application Insights MCP09 ์„€๋„์šฐ MCP ์„œ๋ฒ„ API ์„ผํ„ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค, ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ MCP10 ์ปจํ…์ŠคํŠธ ์ฃผ์ž… ๋ฐ ๊ณผ๋‹ค ๋…ธ์ถœ ๋ฐ์ดํ„ฐ ๋ถ„๋ฅ˜, ์ตœ์†Œ ๋…ธ์ถœ

    MCP ์ธ์ฆ ์ง„ํ™”

    MCP ๋ช…์„ธ๋Š” ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ์ ‘๊ทผ๋ฒ•์—์„œ ์ƒ๋‹นํ•œ ์ง„ํ™”๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค:

  • ์ดˆ๊ธฐ ์ ‘๊ทผ ๋ฐฉ์‹: ์ดˆ๊ธฐ ๋ช…์„ธ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปค์Šคํ…€ ์ธ์ฆ ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์š”๊ตฌํ–ˆ์œผ๋ฉฐ, MCP ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” OAuth 2.0 ๊ถŒํ•œ ์„œ๋ฒ„ ์—ญํ•  ์ˆ˜ํ–‰
  • ํ˜„์žฌ ํ‘œ์ค€ (2025-11-25): ์—…๋ฐ์ดํŠธ๋œ ๋ช…์„ธ๋Š” MCP ์„œ๋ฒ„๊ฐ€ ์™ธ๋ถ€ ID ๊ณต๊ธ‰์ž(์˜ˆ: Microsoft Entra ID)์—๊ฒŒ ์ธ์ฆ์„ ์œ„์ž„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ๋ณด์•ˆ ์ž์„ธ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ๊ตฌํ˜„ ๋ณต์žก์„ฑ ๊ฐ์†Œ
  • ์ „์†ก ๊ณ„์ธต ๋ณด์•ˆ: ๋กœ์ปฌ(STDIO) ๋ฐ ์›๊ฒฉ(Streamable HTTP) ์—ฐ๊ฒฐ ๋ชจ๋‘์— ์ ํ•ฉํ•œ ์ธ์ฆ ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ๊ฐ•ํ™”๋œ ๋ณด์•ˆ ์ „์†ก ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ง€์›
  • ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ณด์•ˆ

    ํ˜„์žฌ ๋ณด์•ˆ ๋ฌธ์ œ

    ํ˜„๋Œ€ MCP ๊ตฌํ˜„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฌธ์ œ์— ์ง๋ฉดํ•ด ์žˆ์Šต๋‹ˆ๋‹ค:

    ์œ„ํ—˜ ๋ฐ ์œ„ํ˜‘ ๋ฒกํ„ฐ

  • ์ž˜๋ชป๋œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋…ผ๋ฆฌ: MCP ์„œ๋ฒ„์˜ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ถŒํ•œ ๋ถ€์—ฌ ๊ตฌํ˜„์€ ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ๋…ธ์ถœ์ด๋‚˜ ์ž˜๋ชป๋œ ์ ‘๊ทผ ํ†ต์ œ ์ ์šฉ ๊ฐ€๋Šฅ์„ฑ
  • OAuth ํ† ํฐ ํƒˆ์ทจ: ๋กœ์ปฌ MCP ์„œ๋ฒ„ ํ† ํฐ ๋„๋‚œ ์‹œ ๊ณต๊ฒฉ์ž๊ฐ€ ์„œ๋ฒ„๋ฅผ ๊ฐ€์žฅํ•ด ํ•˜์œ„ ์„œ๋น„์Šค์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ํ† ํฐ ์ „๋‹ฌ ์ทจ์•ฝ์ : ๋ถ€์ ์ ˆํ•œ ํ† ํฐ ์ฒ˜๋ฆฌ๋กœ ๋ณด์•ˆ ์ œ์–ด ์šฐํšŒ ๋ฐ ์ฑ…์ž„ ์ถ”์  ์–ด๋ ค์›€ ๋ฐœ์ƒ
  • ๊ณผ๋„ํ•œ ๊ถŒํ•œ: ๊ณผ๋„ ๊ถŒํ•œ ๋ถ€์—ฌ๋œ MCP ์„œ๋ฒ„๋Š” ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ ์œ„๋ฐ˜ ๋ฐ ๊ณต๊ฒฉ ๋ฒ”์œ„ ํ™•์žฅ
  • ํ† ํฐ ์ „๋‹ฌ: ์‹ฌ๊ฐํ•œ ์•ˆํ‹ฐ ํŒจํ„ด

    ํ˜„์žฌ MCP ๊ถŒํ•œ ๋ถ€์—ฌ ๋ช…์„ธ์—์„œ๋Š” ํ† ํฐ ์ „๋‹ฌ์ด ๋ช…๋ฐฑํžˆ ๊ธˆ์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค:

    ##### ๋ณด์•ˆ ์ œ์–ด ์šฐํšŒ

  • MCP ์„œ๋ฒ„์™€ ํ•˜์œ„ API๋“ค์€ ์ ์ ˆํ•œ ํ† ํฐ ๊ฒ€์ฆ์— ์˜์กดํ•˜๋Š” ์ค‘์š”ํ•œ ๋ณด์•ˆ ์ œ์–ด(์†๋„ ์ œํ•œ, ์š”์ฒญ ๊ฒ€์ฆ, ํŠธ๋ž˜ํ”ฝ ๋ชจ๋‹ˆํ„ฐ๋ง)๋ฅผ ๊ตฌํ˜„
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ API ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ด ํ•ต์‹ฌ ๋ณดํ˜ธ์žฅ์น˜๋ฅผ ์šฐํšŒ, ๋ณด์•ˆ ๊ตฌ์กฐ๋ฅผ ํ›ผ์†
  • ##### ์ฑ…์ž„ ์ถ”์  ๋ฐ ๊ฐ์‚ฌ ๋ฌธ์ œ

  • MCP ์„œ๋ฒ„๋Š” ์ƒ๋ฅ˜์—์„œ ๋ฐœํ–‰๋œ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์–ด ๊ฐ์‚ฌ ์ถ”์  ํ๋ฆ„ ํŒŒ๊ดด
  • ํ•˜์œ„ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„ ๋กœ๊ทธ๋Š” ์‹ค์ œ MCP ์„œ๋ฒ„ ์ค‘๊ณ„์ž ๋Œ€์‹  ์ž˜๋ชป๋œ ์š”์ฒญ ์ถœ์ฒ˜ ํ‘œ์‹œ
  • ์‚ฌ๊ณ  ์กฐ์‚ฌ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ ๊ฐ์‚ฌ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์›Œ์ง
  • ##### ๋ฐ์ดํ„ฐ ์œ ์ถœ ์œ„ํ—˜

  • ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ ํ† ํฐ ์ฒญ๊ตฌ๋Š” ํ† ํฐ ํƒˆ์ทจ์ž๊ฐ€ MCP ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋นผ๋Œ๋ฆฌ๋Š” ํ”„๋ก์‹œ๋กœ ์•…์šฉ ๊ฐ€๋Šฅ
  • ์‹ ๋ขฐ ๊ฒฝ๊ณ„ ์œ„๋ฐ˜์œผ๋กœ ์˜๋„๋œ ๋ณด์•ˆ ์ œ์–ด๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฌด๋‹จ ์ ‘๊ทผ ํŒจํ„ด ํ—ˆ์šฉ
  • ##### ๋‹ค์ค‘ ์„œ๋น„์Šค ๊ณต๊ฒฉ ๋ฒกํ„ฐ

  • ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ๋™์ผํ•œ ํ† ํฐ์„ ์‹ ๋ขฐํ•˜๋ฉด ๊ฐ€๋กœ ์›€์ง์ž„์ด ๊ฐ€๋Šฅ
  • ํ† ํฐ ์ถœ์ฒ˜ ํ™•์ธ ๋ถˆ๊ฐ€๋Šฅ ์‹œ ์„œ๋น„์Šค ๊ฐ„ ์‹ ๋ขฐ ๊ฐ€์ • ์œ„๋ฐฐ ๊ฐ€๋Šฅ
  • ๋ณด์•ˆ ์ œ์–ด ๋ฐ ์™„ํ™”์ฑ…

    ์ค‘์š” ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ:

    > ์˜๋ฌด ์‚ฌํ•ญ: MCP ์„œ๋ฒ„๋Š” ๋ช…์‹œ์ ์œผ๋กœ MCP ์„œ๋ฒ„๋ฅผ ์œ„ํ•ด ๋ฐœํ–‰๋œ ํ† ํฐ๋งŒ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

    ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ์ œ์–ด
  • ์—„๊ฒฉํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๊ฒ€ํ† : MCP ์„œ๋ฒ„ ๊ถŒํ•œ ๋กœ์ง์„ ์ฒ ์ €ํžˆ ์ ๊ฒ€ํ•ด ๋ฏผ๊ฐ ์ž์›์— ๋Œ€ํ•ด ์˜๋„๋œ ์‚ฌ์šฉ์ž์™€ ํด๋ผ์ด์–ธํŠธ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณด์žฅ
  • - ๊ตฌํ˜„ ๊ฐ€์ด๋“œ: Azure API Management๋ฅผ MCP ์„œ๋ฒ„ ์ธ์ฆ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์‚ฌ์šฉ

    - ID ํ†ตํ•ฉ: Microsoft Entra ID๋ฅผ MCP ์„œ๋ฒ„ ์ธ์ฆ์— ์‚ฌ์šฉํ•˜๊ธฐ

  • ์•ˆ์ „ํ•œ ํ† ํฐ ๊ด€๋ฆฌ: Microsoft ํ† ํฐ ๊ฒ€์ฆ ๋ฐ ์ˆ˜๋ช…์ฃผ๊ธฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์ ์šฉ
  • - ํ† ํฐ ๋Œ€์ƒ ์ฒญ๊ตฌ๊ฐ€ MCP ์„œ๋ฒ„ ID์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ

    - ์ ์ ˆํ•œ ํ† ํฐ ๊ฐฑ์‹  ๋ฐ ๋งŒ๋ฃŒ ์ •์ฑ… ๊ตฌํ˜„

    - ์žฌ์‚ฌ์šฉ ๊ณต๊ฒฉ ๋ฐ ๋ฌด๋‹จ ์‚ฌ์šฉ ๋ฐฉ์ง€

  • ๋ณดํ˜ธ๋œ ํ† ํฐ ์ €์žฅ: ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•œ ์ €์žฅ(ํœด์ง€ ๋ฐ ์ „์†ก ์ค‘ ๋ชจ๋‘)
  • - ๋ชจ๋ฒ” ์‚ฌ๋ก€: ํ† ํฐ ์ €์žฅ ๋ฐ ์•”ํ˜ธํ™” ๊ฐ€์ด๋“œ๋ผ์ธ

    ์ ‘๊ทผ ์ œ์–ด ๊ตฌํ˜„
  • ์ตœ์†Œ ๊ถŒํ•œ ์›์น™: MCP ์„œ๋ฒ„์— ๊ธฐ๋Šฅ์— ํ•„์š”ํ•œ ์ตœ์†Œ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌ
  • - ์ •๊ธฐ์  ๊ถŒํ•œ ๊ฒ€ํ†  ๋ฐ ๊ถŒํ•œ ์ƒ์Šน ๋ฐฉ์ง€

    - Microsoft ๋ฌธ์„œ: ์•ˆ์ „ํ•œ ์ตœ์†Œ ๊ถŒํ•œ ์ ‘๊ทผ

  • ์—ญํ•  ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด(RBAC): ์„ธ๋ฐ€ํ•œ ์—ญํ•  ํ• ๋‹น ๊ตฌํ˜„
  • - ์—ญํ• ์„ ํŠน์ • ์ž์› ๋ฐ ์ž‘์—…์— ์—„๊ฒฉํžˆ ์ œํ•œ

    - ๊ณต๊ฒฉ ๋ฒ”์œ„๋ฅผ ํ™•๋Œ€ํ•˜๋Š” ๊ณผ๋„ํ•˜๊ฑฐ๋‚˜ ๋ถˆํ•„์š”ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๊ธˆ์ง€

  • ์ง€์†์  ๊ถŒํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง: ์ ‘๊ทผ ๊ฐ์‚ฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™œ์„ฑํ™”
  • - ๋น„์ •์ƒ ๊ถŒํ•œ ์‚ฌ์šฉ ํŒจํ„ด ๊ฐ์‹œ

    - ๊ณผ๋„ํ•˜๊ฑฐ๋‚˜ ๋ฏธ์‚ฌ์šฉ ๊ถŒํ•œ ์‹ ์† ๋ณด์™„

    AI ํŠนํ™” ๋ณด์•ˆ ์œ„ํ˜‘

    ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… ๋ฐ ๋„๊ตฌ ์กฐ์ž‘ ๊ณต๊ฒฉ

    ์ตœ์‹  MCP ๊ตฌํ˜„์€ ์ „ํ†ต ๋ณด์•ˆ ์กฐ์น˜๋กœ๋Š” ์™„์ „ํžˆ ๋ฐฉ์–ด ๋ชป ํ•˜๋Š” ์ •๊ตํ•œ AI ํŠน์œ  ๊ณต๊ฒฉ ๋ฒกํ„ฐ์— ์ง๋ฉดํ•ด ์žˆ์Šต๋‹ˆ๋‹ค:

    ๊ฐ„์ ‘ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… (ํฌ๋กœ์Šค ๋„๋ฉ”์ธ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…)

    ๊ฐ„์ ‘ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…์€ MCP ๊ธฐ๋ฐ˜ AI ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ์‹ฌ๊ฐํ•œ ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๋ฌธ์„œ, ์›น ํŽ˜์ด์ง€, ์ด๋ฉ”์ผ, ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋“ฑ ์™ธ๋ถ€ ์ฝ˜ํ…์ธ ์— ์•…์„ฑ ๋ช…๋ น์„ ์ˆจ๊ธฐ๊ณ  AI ์‹œ์Šคํ…œ์ด ์ด๋ฅผ ํ•ฉ๋ฒ• ๋ช…๋ น์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค.

    ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค:

  • ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ฃผ์ž…: ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฌธ์„œ์— ์ˆจ๊ฒจ์ง„ ์•…์„ฑ ๋ช…๋ น์ด ์˜๋„์น˜ ์•Š์€ AI ๋™์ž‘ ์œ ๋ฐœ
  • ์›น ์ฝ˜ํ…์ธ  ์•…์šฉ: ์Šคํฌ๋ž˜ํ•‘ ์‹œ AI ํ–‰๋™์„ ์กฐ์ž‘ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํฌํ•จ๋œ ์†์ƒ๋œ ์›น ํŽ˜์ด์ง€
  • ์ด๋ฉ”์ผ ๊ณต๊ฒฉ: AI ๋ณด์กฐ ์‹œ์Šคํ…œ์ด ์ •๋ณด ์œ ์ถœ ๋˜๋Š” ๋ฌด๋‹จ ์ž‘์—… ์‹คํ–‰ํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ์•…์„ฑ ์ด๋ฉ”์ผ ํ”„๋กฌํ”„ํŠธ
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ์˜ค์—ผ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ API๊ฐ€ ์กฐ์ž‘๋œ ๋‚ด์šฉ์„ AI์— ์ œ๊ณต
  • ์‹ค์ œ ์˜ํ–ฅ: ๋ฐ์ดํ„ฐ ์œ ์ถœ, ๊ฐœ์ธ์ •๋ณด ์นจํ•ด, ์œ ํ•ด ์ฝ˜ํ…์ธ  ์ƒ์„ฑ, ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ์กฐ์ž‘ ๋“ฑ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋ถ„์„์€ Prompt Injection in MCP (Simon Willison) ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

    ๋„๊ตฌ ์˜ค์—ผ ๊ณต๊ฒฉ

    ๋„๊ตฌ ์˜ค์—ผ์€ MCP ๋„๊ตฌ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํƒ€๊ฒŸ์œผ๋กœ ํ•˜๋ฉฐ, LLM์ด ๋„๊ตฌ ์„ค๋ช…๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•ด์„ํ•ด ์‹คํ–‰ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋ฐฉ์‹์„ ์•…์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๊ณต๊ฒฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜:

  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์กฐ์ž‘: ๊ณต๊ฒฉ์ž๊ฐ€ ๋„๊ตฌ ์„ค๋ช…, ๋งค๊ฐœ๋ณ€์ˆ˜ ์ •์˜, ์‚ฌ์šฉ ์˜ˆ์‹œ ๋“ฑ์— ์•…์„ฑ ๋ช…๋ น ์‚ฝ์ž…
  • ์ˆจ๊ฒจ์ง„ ๋ช…๋ น์–ด: ์ธ๊ฐ„ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋ณด์ด์ง€ ์•Š์ง€๋งŒ AI ๋ชจ๋ธ์ด ์ฒ˜๋ฆฌํ•˜๋Š” ์€๋ฐ€ํ•œ ํ”„๋กฌํ”„ํŠธ
  • ๋™์  ๋„๊ตฌ ๋ณ€๊ฒฝ("๋Ÿฌ๊ทธ ํ’€"): ์‚ฌ์šฉ์ž๊ฐ€ ์Šน์ธํ•œ ๋„๊ตฌ๊ฐ€ ์ดํ›„ ์•…์„ฑ ์ž‘์—… ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋ชฐ๋ž˜ ๋ณ€๊ฒฝ
  • ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฝ์ž…: ๋„๊ตฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์Šคํ‚ค๋งˆ์— ์•…์„ฑ ์ฝ˜ํ…์ธ  ํฌํ•จ, ๋ชจ๋ธ ํ–‰๋™์— ์˜ํ–ฅ
  • ํ˜ธ์ŠคํŒ… ์„œ๋ฒ„ ์œ„ํ—˜: ์›๊ฒฉ MCP ์„œ๋ฒ„๋Š” ๋„๊ตฌ ์ •์˜๋ฅผ ์ดˆ๊ธฐ ์Šน์ธ ํ›„์—๋„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด, ์ด์ „์— ์•ˆ์ „ํ–ˆ๋˜ ๋„๊ตฌ๊ฐ€ ์•…์„ฑ์œผ๋กœ ๋ณ€ํ•  ์œ„ํ—˜ ์กด์žฌ.

    ์ž์„ธํ•œ ๋ถ„์„์€ Tool Poisoning Attacks (Invariant Labs) ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

    ์ถ”๊ฐ€ AI ๊ณต๊ฒฉ ๋ฒกํ„ฐ
  • ํฌ๋กœ์Šค ๋„๋ฉ”์ธ ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… (XPIA): ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ์ฝ˜ํ…์ธ ๋ฅผ ํ™œ์šฉํ•ด ๋ณด์•ˆ ์ œ์–ด๋ฅผ ์šฐํšŒํ•˜๋Š” ์ •๊ตํ•œ ๊ณต๊ฒฉ
  • ๋™์  ๊ธฐ๋Šฅ ์ˆ˜์ •: ์ดˆ๊ธฐ ๋ณด์•ˆ ํ‰๊ฐ€๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋„๊ตฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ๋ณ€๊ฒฝ
  • ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ ๋ณ€์กฐ ๊ณต๊ฒฉ: ์•…์˜์ ์ธ ๋ช…๋ น์„ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ํฐ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ณต๊ฒฉ
  • ๋ชจ๋ธ ํ˜ผ๋ž€ ๊ณต๊ฒฉ: ๋ชจ๋ธ์˜ ํ•œ๊ณ„๋ฅผ ์ด์šฉํ•ด ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋™์ž‘์„ ์œ ๋ฐœํ•˜๋Š” ๊ณต๊ฒฉ
  • AI ๋ณด์•ˆ ์œ„ํ—˜ ์˜ํ–ฅ

    ๋†’์€ ์˜ํ–ฅ์˜ ๊ฒฐ๊ณผ:

  • ๋ฐ์ดํ„ฐ ์œ ์ถœ: ๊ถŒํ•œ ์—†๋Š” ๋ฏผ๊ฐํ•œ ๊ธฐ์—… ๋˜๋Š” ๊ฐœ์ธ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐ ๋„๋‚œ
  • ๊ฐœ์ธ์ •๋ณด ์นจํ•ด: ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด(PII) ๋ฐ ๊ธฐ๋ฐ€ ์‚ฌ์—… ๋ฐ์ดํ„ฐ ๋…ธ์ถœ
  • ์‹œ์Šคํ…œ ์กฐ์ž‘: ์ค‘์š” ์‹œ์Šคํ…œ ๋ฐ ์›Œํฌํ”Œ๋กœ์˜ ์˜๋„์น˜ ์•Š์€ ์ˆ˜์ •
  • ์ธ์ฆ ์ •๋ณด ๋„๋‚œ: ์ธ์ฆ ํ† ํฐ ๋ฐ ์„œ๋น„์Šค ์ž๊ฒฉ ์ฆ๋ช… ์†์ƒ
  • ์ธก๋ฉด ์ด๋™ ๊ณต๊ฒฉ: ์†์ƒ๋œ AI ์‹œ์Šคํ…œ์„ ๋„“์€ ๋„คํŠธ์›Œํฌ ๊ณต๊ฒฉ์„ ์œ„ํ•œ ๊ต์ฐจ ์ง€์ ์œผ๋กœ ์‚ฌ์šฉ
  • Microsoft AI ๋ณด์•ˆ ์†”๋ฃจ์…˜

    AI ํ”„๋กฌํ”„ํŠธ ์‰ด๋“œ: ์ฃผ์ž… ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ๋ฐฉ์–ด

    Microsoft AI ํ”„๋กฌํ”„ํŠธ ์‰ด๋“œ๋Š” ์ง์ ‘์  ๋ฐ ๊ฐ„์ ‘์  ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž… ๊ณต๊ฒฉ์— ๋Œ€ํ•ด ๋‹ค์ค‘ ๋ณด์•ˆ ๊ณ„์ธต์„ ํ†ตํ•œ ํฌ๊ด„์ ์ธ ๋ฐฉ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

    ##### ํ•ต์‹ฌ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜:

    1. ๊ณ ๊ธ‰ ํƒ์ง€ ๋ฐ ํ•„ํ„ฐ๋ง

    - ๋จธ์‹  ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ๋กœ ์™ธ๋ถ€ ์ปจํ…์ธ  ๋‚ด ์•…์˜์  ๋ช…๋ น ํƒ์ง€

    - ๋ฌธ์„œ, ์›น ํŽ˜์ด์ง€, ์ด๋ฉ”์ผ, ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ๋‚ด์žฅ ์œ„ํ˜‘์„ ์‹ค์‹œ๊ฐ„ ๋ถ„์„

    - ์ •์ƒ์  ํ”„๋กฌํ”„ํŠธ ํŒจํ„ด๊ณผ ์•…์˜์  ํŒจํ„ด์˜ ๋งฅ๋ฝ์  ์ดํ•ด

    2. ์ŠคํฌํŠธ๋ผ์ดํŒ… ๊ธฐ๋ฒ•

    - ์‹ ๋ขฐ๋œ ์‹œ์Šคํ…œ ๋ช…๋ น๊ณผ ์ž ์žฌ์ ์œผ๋กœ ์†์ƒ๋œ ์™ธ๋ถ€ ์ž…๋ ฅ ๊ตฌ๋ถ„

    - ๋ชจ๋ธ ์ ํ•ฉ๋„๋ฅผ ๋†’์ด๋ฉด์„œ ์•…์„ฑ ์ปจํ…์ธ ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ํ…์ŠคํŠธ ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•

    - AI ์‹œ์Šคํ…œ์ด ๋ช…๋ น ๊ณ„์ธต์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ์ฃผ์ž…๋œ ๋ช…๋ น ๋ฌด์‹œ ์ง€์›

    3. ๊ตฌ๋ถ„์ž ๋ฐ ๋ฐ์ดํ„ฐ๋งˆํ‚น ์‹œ์Šคํ…œ

    - ์‹ ๋ขฐ๋œ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€์™€ ์™ธ๋ถ€ ์ž…๋ ฅ ํ…์ŠคํŠธ ๊ฐ„ ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„ ์ •์˜

    - ์‹ ๋ขฐ๋œ ์†Œ์Šค์™€ ์‹ ๋ขฐ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค ๊ฐ„ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ํŠน์ˆ˜ ๋งˆ์ปค

    - ๋ช…๋ น ํ˜ผ๋™๊ณผ ๋ฌด๋‹จ ๋ช…๋ น ์‹คํ–‰ ๋ฐฉ์ง€ ์œ„ํ•œ ๋ช…ํ™•ํ•œ ๋ถ„๋ฆฌ

    4. ์ง€์†์ ์ธ ์œ„ํ˜‘ ์ธํ…”๋ฆฌ์ „์Šค

    - Microsoft๋Š” ์ง€์†์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ ํŒจํ„ด์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ฐฉ์–ด์ฑ…์„ ์—…๋ฐ์ดํŠธ

    - ์ƒˆ๋กœ์šด ์ฃผ์ž… ๊ธฐ๋ฒ• ๋ฐ ๊ณต๊ฒฉ ๋ฒกํ„ฐ์— ๋Œ€ํ•œ ์„ ์ œ์  ์œ„ํ˜‘ ํƒ์ƒ‰

    - ์ง„ํ™”ํ•˜๋Š” ์œ„ํ˜‘์— ๋Œ€์‘ํ•˜๋Š” ๋ณด์•ˆ ๋ชจ๋ธ ์ •๊ธฐ ์—…๋ฐ์ดํŠธ

    5. Azure ์ฝ˜ํ…์ธ  ์•ˆ์ „ ํ†ตํ•ฉ

    - ์ข…ํ•ฉ Azure AI ์ฝ˜ํ…์ธ  ์•ˆ์ „ ์ œํ’ˆ๊ตฐ์˜ ์ผ๋ถ€

    - ํƒˆ์˜ฅ ์‹œ๋„, ์œ ํ•ด ์ฝ˜ํ…์ธ  ๋ฐ ๋ณด์•ˆ ์ •์ฑ… ์œ„๋ฐ˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํƒ์ง€

    - AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ ์ „๋ฐ˜์— ๊ฑธ์นœ ํ†ตํ•ฉ ๋ณด์•ˆ ์ œ์–ด

    ๊ตฌํ˜„ ๋ฆฌ์†Œ์Šค: Microsoft Prompt Shields Documentation

    ๊ณ ๊ธ‰ MCP ๋ณด์•ˆ ์œ„ํ˜‘

    ์„ธ์…˜ ํ•˜์ด์žฌํ‚น ์ทจ์•ฝ์ 

    ์„ธ์…˜ ํ•˜์ด์žฌํ‚น์€ ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ MCP ๊ตฌํ˜„์—์„œ ์ค‘์š”ํ•œ ๊ณต๊ฒฉ ๋ฒกํ„ฐ๋กœ, ๊ถŒํ•œ ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋‹นํ•œ ์„ธ์…˜ ์‹๋ณ„์ž๋ฅผ ํš๋“ํ•ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐ€์žฅํ•˜๊ณ  ๋ฌด๋‹จ ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ–‰์œ„์ž…๋‹ˆ๋‹ค.

    ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฐ ์œ„ํ—˜
  • ์„ธ์…˜ ํ•˜์ด์žฌํ‚น ํ”„๋กฌํ”„ํŠธ ์ฃผ์ž…: ๋„๋‚œ๋‹นํ•œ ์„ธ์…˜ ID๋กœ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์„œ๋ฒ„์— ์•…์˜์ ์ธ ์ด๋ฒคํŠธ๋ฅผ ์ฃผ์ž…ํ•ด ์œ ํ•ด ๋™์ž‘ ์œ ๋ฐœ ๋˜๋Š” ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ
  • ์ง์ ‘ ๊ฐ€์žฅ ๊ณต๊ฒฉ: ๋„๋‚œ๋œ ์„ธ์…˜ ID๋กœ ์ธ์ฆ ์šฐํšŒ MCP ์„œ๋ฒ„ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•ด ๊ณต๊ฒฉ์ž๋ฅผ ์ •๋‹น ์‚ฌ์šฉ์ž๋กœ ์ฒ˜๋ฆฌ
  • ์†์ƒ๋œ ์žฌ๊ฐœ ๊ฐ€๋Šฅ ์ŠคํŠธ๋ฆผ: ๊ณต๊ฒฉ์ž๊ฐ€ ์š”์ฒญ์„ ์กฐ๊ธฐ ์ข…๋ฃŒํ•˜์—ฌ ์ •์ƒ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•…์„ฑ ์ปจํ…์ธ ๋กœ ์žฌ๊ฐœํ•˜๊ฒŒ ๋งŒ๋“ฆ
  • ์„ธ์…˜ ๊ด€๋ฆฌ ๋ณด์•ˆ ์ œ์–ด

    ์ค‘์š” ์š”๊ตฌ์‚ฌํ•ญ:

  • ๊ถŒํ•œ ํ™•์ธ: ๊ถŒํ•œ ํ™•์ธ์„ ๊ตฌํ˜„ํ•˜๋Š” MCP ์„œ๋ฒ„๋Š” ๋ชจ๋“  ์ˆ˜์‹  ์š”์ฒญ์„ ๊ฒ€์ฆํ•ด์•ผ ํ•˜๋ฉฐ, ์„ธ์…˜์— ์˜์กดํ•ด ์ธ์ฆํ•ด์„œ๋Š” ์•ˆ ๋จ
  • ๋ณด์•ˆ ์„ธ์…˜ ์ƒ์„ฑ: ์•”ํ˜ธํ•™์ ์œผ๋กœ ์•ˆ์ „ํ•œ ๋žœ๋ค ๋ฒˆํ˜ธ ์ƒ์„ฑ๊ธฐ๋กœ ๋น„๊ฒฐ์ •๋ก ์  ์„ธ์…˜ ID ์ƒ์„ฑ
  • ์‚ฌ์šฉ์ž๋ณ„ ๋ฐ”์ธ๋”ฉ: ๊ต์ฐจ ์‚ฌ์šฉ์ž ์„ธ์…˜ ์˜ค์šฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด : ๊ฐ™์€ ํฌ๋งท์œผ๋กœ ์‚ฌ์šฉ์ž๋ณ„๋กœ ์„ธ์…˜ ID ๋ฐ”์ธ๋”ฉ
  • ์„ธ์…˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ: ์ ์ ˆํ•œ ๋งŒ๋ฃŒ, ๊ฐฑ์‹ , ๋ฌดํšจํ™”๋กœ ์ทจ์•ฝ์  ๋…ธ์ถœ ์‹œ๊ฐ„ ์ œํ•œ
  • ์ „์†ก ๋ณด์•ˆ: ์„ธ์…˜ ID ํƒˆ์ทจ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ํ†ต์‹  HTTPS ํ•„์ˆ˜
  • ํ˜ผ๋ž€๋œ ๋Œ€๋ฆฌ์ธ ๋ฌธ์ œ

    ํ˜ผ๋ž€๋œ ๋Œ€๋ฆฌ์ธ ๋ฌธ์ œ๋Š” MCP ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ์ œ3์ž ์„œ๋น„์Šค ์‚ฌ์ด ์ธ์ฆ ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ •์  ํด๋ผ์ด์–ธํŠธ ID ์•…์šฉ์„ ํ†ตํ•œ ๊ถŒํ•œ ์šฐํšŒ ๊ธฐํšŒ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ๊ณต๊ฒฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ ์œ„ํ—˜
  • ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ๋™์˜ ์šฐํšŒ: ์ด์ „ ์‚ฌ์šฉ์ž ์ธ์ฆ์ด ์ƒ์„ฑํ•œ ๋™์˜ ์ฟ ํ‚ค๋ฅผ ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์„ฑ ๊ถŒํ•œ ์š”์ฒญ๊ณผ ์กฐ์ž‘๋œ ๋ฆฌ๋””๋ ‰์…˜ URI๋กœ ์•…์šฉ
  • ๊ถŒํ•œ ์ฝ”๋“œ ๋„๋‚œ: ๊ธฐ์กด ๋™์˜ ์ฟ ํ‚ค๋กœ ์ธํ•ด ๊ถŒํ•œ ์„œ๋ฒ„๊ฐ€ ๋™์˜ ํ™”๋ฉด์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๊ณต๊ฒฉ์ž ์ œ์–ด ์—”๋“œํฌ์ธํŠธ๋กœ ์ฝ”๋“œ ๋ฆฌ๋””๋ ‰์…˜
  • ๋ฌด๋‹จ API ์ ‘๊ทผ: ๋„๋‚œ๋œ ๊ถŒํ•œ ์ฝ”๋“œ๋กœ ํ† ํฐ ๊ตํ™˜ ๋ฐ ์‚ฌ์šฉ์ž ๊ฐ€์žฅ ๊ฐ€๋Šฅ, ๋ช…์‹œ์  ์Šน์ธ ์—†์ด ์ˆ˜ํ–‰
  • ์™„ํ™” ์ „๋žต

    ํ•„์ˆ˜ ์ œ์–ด:

  • ๋ช…์‹œ์  ๋™์˜ ์š”๊ตฌ: ์ •์  ํด๋ผ์ด์–ธํŠธ ID๋ฅผ ์‚ฌ์šฉํ•˜๋Š” MCP ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ๋™์ ์œผ๋กœ ๋“ฑ๋ก๋œ ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ๋™์˜ ํ™•๋ณด ํ•„์ˆ˜
  • OAuth 2.1 ๋ณด์•ˆ ๊ตฌํ˜„: ๋ชจ๋“  ๊ถŒํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด PKCE(Proof Key for Code Exchange)๋ฅผ ํฌํ•จํ•œ ์ตœ์‹  OAuth ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์ค€์ˆ˜
  • ์—„๊ฒฉํ•œ ํด๋ผ์ด์–ธํŠธ ๊ฒ€์ฆ: ๋ฆฌ๋””๋ ‰์…˜ URI ๋ฐ ํด๋ผ์ด์–ธํŠธ ID์— ๋Œ€ํ•œ ์—„๋ฐ€ํ•œ ๊ฒ€์ฆ์œผ๋กœ ์•…์šฉ ๋ฐฉ์ง€
  • ํ† ํฐ ์ „๋‹ฌ ์ทจ์•ฝ์ 

    ํ† ํฐ ์ „๋‹ฌ์€ MCP ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ํ† ํฐ์„ ์ ์ ˆํ•œ ๊ฒ€์ฆ ์—†์ด ์ˆ˜๋ฝํ•˜๊ณ  ํ•˜์œ„ API์— ์ „๋‹ฌํ•˜๋Š” ๋ช…๋ฐฑํ•œ ๋ฐ˜ํŒจํ„ด์œผ๋กœ, MCP ๊ถŒํ•œ ์‚ฌ์–‘์„ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

    ๋ณด์•ˆ ์˜ํ–ฅ
  • ํ†ต์ œ ํšŒํ”ผ: ํด๋ผ์ด์–ธํŠธ์—์„œ API๋กœ ์ง์ ‘ ํ† ํฐ ์‚ฌ์šฉ ์‹œ ํ•ต์‹ฌ ์†๋„ ์ œํ•œ, ๊ฒ€์ฆ, ๋ชจ๋‹ˆํ„ฐ๋ง ์šฐํšŒ
  • ๊ฐ์‚ฌ ์ถ”์  ๋ฌด๊ฒฐ์„ฑ ํ›ผ์†: ์ƒ์œ„ ๋ฐœ๊ธ‰ ํ† ํฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„ ๋ถˆ๊ฐ€๋Šฅ, ์‚ฌ๊ณ  ์กฐ์‚ฌ ๋ถˆ๊ฐ€
  • ํ”„๋ก์‹œ ๋ฐ์ดํ„ฐ ์œ ์ถœ: ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ ํ† ํฐ์œผ๋กœ ์•…์„ฑ ํ–‰์œ„์ž๊ฐ€ ์„œ๋ฒ„๋ฅผ ๋ถˆ๋ฒ• ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉ
  • ์‹ ๋ขฐ ๊ฒฝ๊ณ„ ์œ„๋ฐ˜: ํ† ํฐ ์ถœ์ฒ˜ ํ™•์ธ ๋ถˆ๊ฐ€ ์‹œ ํ•˜์œ„ ์„œ๋น„์Šค ์‹ ๋ขฐ ๊ฐ€์ • ๋ถ•๊ดด
  • ๋‹ค์ค‘ ์„œ๋น„์Šค ๊ณต๊ฒฉ ํ™•์‚ฐ: ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์—์„œ ์ˆ˜๋ฝ๋œ ์†์ƒ๋œ ํ† ํฐ์œผ๋กœ ์ธก๋ฉด ์ด๋™ ๊ฐ€๋Šฅ
  • ํ•„์ˆ˜ ๋ณด์•ˆ ์ œ์–ด

    ๋น„ํ˜‘์ƒ ์š”๊ตฌ์‚ฌํ•ญ:

  • ํ† ํฐ ๊ฒ€์ฆ: MCP ์„œ๋ฒ„๋Š” MCP ์„œ๋ฒ„ ๋Œ€์ƒ์ด ์•„๋‹Œ ํ† ํฐ์„ ์ ˆ๋Œ€ ์ˆ˜๋ฝํ•˜์ง€ ๋ง์•„์•ผ ํ•จ
  • ๋Œ€์ƒ ๊ฒ€์ฆ: ํ† ํฐ์˜ audience ํด๋ ˆ์ž„์ด MCP ์„œ๋ฒ„ ์‹ ์›๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ•ญ์ƒ ํ™•์ธ
  • ์ ์ ˆํ•œ ํ† ํฐ ์ˆ˜๋ช… ๊ด€๋ฆฌ: ์งง์€ ์ˆ˜๋ช…์˜ ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ์•ˆ์ „ํ•œ ๊ฐฑ์‹  ๊ด€ํ–‰ ๊ตฌํ˜„
  • AI ์‹œ์Šคํ…œ ๊ณต๊ธ‰๋ง ๋ณด์•ˆ

    ๊ณต๊ธ‰๋ง ๋ณด์•ˆ์€ ์ „ํ†ต์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์ข…์†์„ฑ์„ ๋„˜์–ด AI ์ƒํƒœ๊ณ„ ์ „์ฒด๋ฅผ ํฌ๊ด„ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  MCP ๊ตฌํ˜„์€ AI ๊ด€๋ จ ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์—„๊ฒฉํžˆ ๊ฒ€์ฆ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ ์š”์†Œ๋Š” ์‹œ์Šคํ…œ ๋ฌด๊ฒฐ์„ฑ์„ ์†์ƒ์‹œํ‚ฌ ์ž ์žฌ์  ์ทจ์•ฝ์ ์„ ๋‚ดํฌํ•ฉ๋‹ˆ๋‹ค.

    ํ™•๋Œ€๋œ AI ๊ณต๊ธ‰๋ง ๊ตฌ์„ฑ์š”์†Œ

    ์ „ํ†ต์  ์†Œํ”„ํŠธ์›จ์–ด ์ข…์†์„ฑ:

  • ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ฐ ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ
  • ๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ
  • ์ธํ”„๋ผ ๊ตฌ์„ฑ์š”์†Œ ๋ฐ ์„œ๋น„์Šค
  • AI ์ „์šฉ ๊ณต๊ธ‰๋ง ์š”์†Œ:

  • ๊ธฐ์ดˆ ๋ชจ๋ธ: ์—ฌ๋Ÿฌ ๊ณต๊ธ‰์ž์˜ ์‚ฌ์ „ ํ•™์Šต ๋ชจ๋ธ๋กœ ์ถœ์ฒ˜ ๊ฒ€์ฆ ํ•„์š”
  • ์ž„๋ฒ ๋”ฉ ์„œ๋น„์Šค: ์™ธ๋ถ€ ๋ฒกํ„ฐํ™” ๋ฐ ์˜๋ฏธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค
  • ์ปจํ…์ŠคํŠธ ์ œ๊ณต์ž: ๋ฐ์ดํ„ฐ ์†Œ์Šค, ์ง€์‹ ๋ฒ ์ด์Šค, ๋ฌธ์„œ ์ €์žฅ์†Œ
  • ์„œ๋“œํŒŒํ‹ฐ API: ์™ธ๋ถ€ AI ์„œ๋น„์Šค, ML ํŒŒ์ดํ”„๋ผ์ธ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—”๋“œํฌ์ธํŠธ
  • ๋ชจ๋ธ ์•„ํ‹ฐํŒฉํŠธ: ๊ฐ€์ค‘์น˜, ๊ตฌ์„ฑ, ์„ธ๋ฐ€ ํŠœ๋‹ ๋ชจ๋ธ ๋ณ€ํ˜•
  • ํ•™์Šต ๋ฐ์ดํ„ฐ ์†Œ์Šค: ๋ชจ๋ธ ํ›ˆ๋ จ ๋ฐ ์„ธ๋ฐ€ ์กฐ์ •์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์…‹
  • ํฌ๊ด„์ ์ธ ๊ณต๊ธ‰๋ง ๋ณด์•ˆ ์ „๋žต

    ๊ตฌ์„ฑ์š”์†Œ ๊ฒ€์ฆ ๋ฐ ์‹ ๋ขฐ
  • ์ถœ์ฒ˜ ๊ฒ€์ฆ: AI ๊ตฌ์„ฑ์š”์†Œ ํ†ตํ•ฉ ์ „ ์ถœ์ฒ˜, ๋ผ์ด์„ ์Šค, ๋ฌด๊ฒฐ์„ฑ ํ™•์ธ
  • ๋ณด์•ˆ ํ‰๊ฐ€: ๋ชจ๋ธ, ๋ฐ์ดํ„ฐ ์†Œ์Šค, AI ์„œ๋น„์Šค ์ทจ์•ฝ์  ์Šค์บ” ๋ฐ ๋ณด์•ˆ ๋ฆฌ๋ทฐ
  • ํ‰ํŒ ๋ถ„์„: AI ์„œ๋น„์Šค ๊ณต๊ธ‰์ž ๋ณด์•ˆ ์ด๋ ฅ ๋ฐ ๊ด€ํ–‰ ํ‰๊ฐ€
  • ์ค€์ˆ˜ ๊ฒ€์ฆ: ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์กฐ์ง ๋ณด์•ˆ ๋ฐ ๊ทœ์ œ ๊ธฐ์ค€ ์ถฉ์กฑ ํ™•์ธ
  • ์•ˆ์ „ํ•œ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ
  • ์ž๋™ํ™” CI/CD ๋ณด์•ˆ: ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ์ „๋ฐ˜์— ๋ณด์•ˆ ์Šค์บ” ํ†ตํ•ฉ
  • ์•„ํ‹ฐํŒฉํŠธ ๋ฌด๊ฒฐ์„ฑ: ๋ชจ๋“  ๋ฐฐํฌ ์•„ํ‹ฐํŒฉํŠธ(์ฝ”๋“œ, ๋ชจ๋ธ, ๊ตฌ์„ฑ)์— ๋Œ€ํ•œ ์•”ํ˜ธํ™” ๊ฒ€์ฆ
  • ์ ์ง„์  ๋ฐฐํฌ: ๊ฐ ๋‹จ๊ณ„์—์„œ ๋ณด์•ˆ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๋ณ„ ๋ฐฐํฌ ์ „๋žต ์‚ฌ์šฉ
  • ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ์•„ํ‹ฐํŒฉํŠธ ์ €์žฅ์†Œ: ๊ฒ€์ฆ๋œ ์•ˆ์ „ ์ €์žฅ์†Œ ๋ฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ๋งŒ ๋ฐฐํฌ
  • ์ง€์†์  ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋Œ€์‘
  • ์ข…์†์„ฑ ์Šค์บ”: ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ AI ๊ตฌ์„ฑ์š”์†Œ ์ข…์†์„ฑ์— ๋Œ€ํ•œ ์ทจ์•ฝ์  ์ง€์† ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋ชจ๋ธ ๋ชจ๋‹ˆํ„ฐ๋ง: ๋ชจ๋ธ ๋™์ž‘, ์„ฑ๋Šฅ ๋ณ€๋™, ๋ณด์•ˆ ์ด์ƒ ์ง€์† ํ‰๊ฐ€
  • ์„œ๋น„์Šค ์ƒํƒœ ์ถ”์ : ์™ธ๋ถ€ AI ์„œ๋น„์Šค์˜ ๊ฐ€์šฉ์„ฑ, ๋ณด์•ˆ ์‚ฌ๊ณ  ๋ฐ ์ •์ฑ… ๋ณ€๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์œ„ํ˜‘ ์ธํ…”๋ฆฌ์ „์Šค ํ†ตํ•ฉ: AI ๋ฐ ML ๋ณด์•ˆ ์œ„ํ—˜ ๊ด€๋ จ ์œ„ํ˜‘ ํ”ผ๋“œ ํ†ตํ•ฉ
  • ์ ‘๊ทผ ์ œ์–ด ๋ฐ ์ตœ์†Œ ๊ถŒํ•œ ์›์น™
  • ๊ตฌ์„ฑ์š”์†Œ๋ณ„ ๊ถŒํ•œ ์ œํ•œ: ๋น„์ฆˆ๋‹ˆ์Šค ํ•„์š”์— ๋”ฐ๋ฅธ ๋ชจ๋ธ, ๋ฐ์ดํ„ฐ, ์„œ๋น„์Šค ์ ‘๊ทผ ์ œํ•œ
  • ์„œ๋น„์Šค ๊ณ„์ • ๊ด€๋ฆฌ: ์ตœ์†Œ ๊ถŒํ•œ์ด ํ• ๋‹น๋œ ์ „์šฉ ์„œ๋น„์Šค ๊ณ„์ • ์šด์˜
  • ๋„คํŠธ์›Œํฌ ๋ถ„ํ• : AI ๊ตฌ์„ฑ์š”์†Œ ๊ฒฉ๋ฆฌ ๋ฐ ์„œ๋น„์Šค ๊ฐ„ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ ์ œํ•œ
  • API ๊ฒŒ์ดํŠธ์›จ์ด ์ œ์–ด: ์ค‘์•™ ์ง‘์ค‘์‹ API ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์™ธ๋ถ€ AI ์„œ๋น„์Šค ์ ‘๊ทผ ํ†ต์ œ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์‚ฌ๊ฑด ๋Œ€์‘ ๋ฐ ๋ณต๊ตฌ
  • ์‹ ์† ๋Œ€์‘ ์ ˆ์ฐจ: ์†์ƒ๋œ AI ๊ตฌ์„ฑ์š”์†Œ ํŒจ์น˜ ๋˜๋Š” ๊ต์ฒด๋ฅผ ์œ„ํ•œ ์ˆ˜๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค
  • ์ž๊ฒฉ ์ฆ๋ช… ๊ฐฑ์‹ : ๋น„๋ฐ€, API ํ‚ค, ์„œ๋น„์Šค ์ž๊ฒฉ์ฆ๋ช… ์ž๋™ ๊ฐฑ์‹  ์‹œ์Šคํ…œ
  • ๋กค๋ฐฑ ๊ธฐ๋Šฅ: ์•Œ๋ ค์ง„ ์ •์ƒ ๋ฒ„์ „์œผ๋กœ ์‹ ์† ๋ณต๊ท€ ๊ธฐ๋Šฅ
  • ๊ณต๊ธ‰๋ง ์นจํ•ด ๋ณต๊ตฌ: ์ƒ๋ฅ˜ AI ์„œ๋น„์Šค ์†์ƒ์— ๋Œ€์‘ํ•˜๋Š” ๊ตฌ์ฒด์  ์ ˆ์ฐจ
  • Microsoft ๋ณด์•ˆ ๋„๊ตฌ ๋ฐ ํ†ตํ•ฉ

    GitHub Advanced Security๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํฌ๊ด„์  ๊ณต๊ธ‰๋ง ๋ณดํ˜ธ ๊ธฐ๋Šฅ ์ œ๊ณต:

  • ๋น„๋ฐ€ ์Šค์บ๋‹: ์ €์žฅ์†Œ ๋‚ด ์ž๊ฒฉ ์ฆ๋ช…, API ํ‚ค, ํ† ํฐ ์ž๋™ ํƒ์ง€
  • ์ข…์†์„ฑ ์Šค์บ๋‹: ์˜คํ”ˆ์†Œ์Šค ์ข…์†์„ฑ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ทจ์•ฝ์  ํ‰๊ฐ€
  • CodeQL ๋ถ„์„: ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐ ์ฝ”๋“œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ •์  ์ฝ”๋“œ ๋ถ„์„
  • ๊ณต๊ธ‰๋ง ์ธ์‚ฌ์ดํŠธ: ์ข…์†์„ฑ ๊ฑด๊ฐ• ์ƒํƒœ ๋ฐ ๋ณด์•ˆ ํ˜„ํ™ฉ ๊ฐ€์‹œ์„ฑ
  • Azure DevOps ๋ฐ Azure Repos ํ†ตํ•ฉ:

  • Microsoft ๊ฐœ๋ฐœ ํ”Œ๋žซํผ ์ „๋ฐ˜์— ๊ฑธ์นœ ์›ํ™œํ•œ ๋ณด์•ˆ ์Šค์บ” ํ†ตํ•ฉ
  • AI ์›Œํฌ๋กœ๋“œ์šฉ Azure Pipelines ๋‚ด ์ž๋™ ๋ณด์•ˆ ๊ฒ€์‚ฌ
  • ์•ˆ์ „ํ•œ AI ๊ตฌ์„ฑ์š”์†Œ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ •์ฑ… ์‹œํ–‰
  • Microsoft ๋‚ด๋ถ€ ๊ด€ํ–‰:

    Microsoft๋Š” ๋ชจ๋“  ์ œํ’ˆ์—์„œ ๊ด‘๋ฒ”์œ„ํ•œ ๊ณต๊ธ‰๋ง ๋ณด์•ˆ ๊ด€ํ–‰์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ The Journey to Secure the Software Supply Chain at Microsoft์—์„œ ํ™•์ธํ•˜์„ธ์š”.

    ๊ธฐ์ดˆ ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€

    MCP ๊ตฌํ˜„์€ ์กฐ์ง์˜ ๊ธฐ์กด ๋ณด์•ˆ ํƒœ์„ธ๋ฅผ ์ƒ์† ๋ฐ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ดˆ ๋ณด์•ˆ ๊ด€ํ–‰์„ ๊ฐ•ํ™”ํ•˜๋ฉด AI ์‹œ์Šคํ…œ ๋ฐ MCP ๋ฐฐํฌ์˜ ์ „๋ฐ˜์  ๋ณด์•ˆ์„ ํฌ๊ฒŒ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ•ต์‹ฌ ๋ณด์•ˆ ๊ธฐ๋ณธ ์›์น™

    ์•ˆ์ „ํ•œ ๊ฐœ๋ฐœ ๊ด€ํ–‰
  • OWASP ์ค€์ˆ˜: OWASP Top 10 ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ทจ์•ฝ์  ๋Œ€๋น„
  • AI ํŠนํ™” ๋ณดํ˜ธ: OWASP LLMs Top 10์— ๋Œ€ํ•œ ์ œ์–ด ์ ์šฉ
  • ์•ˆ์ „ํ•œ ๋น„๋ฐ€ ๊ด€๋ฆฌ: ํ† ํฐ, API ํ‚ค, ๋ฏผ๊ฐ ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ ์ „์šฉ ๊ธˆ๊ณ  ์‚ฌ์šฉ
  • ์ข…๋‹จ ๊ฐ„ ์•”ํ˜ธํ™”: ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ์•ˆ์ „ํ•œ ํ†ต์‹  ๊ตฌํ˜„
  • ์ž…๋ ฅ ๊ฒ€์ฆ: ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ž…๋ ฅ, API ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ๊ฒ€์ฆ
  • ์ธํ”„๋ผ ๊ตฌ์กฐ ๊ฐ•ํ™”
  • ๋‹ค์ค‘ ์š”์†Œ ์ธ์ฆ: ๋ชจ๋“  ๊ด€๋ฆฌ์ž ๋ฐ ์„œ๋น„์Šค ๊ณ„์ •์— MFA ํ•„์ˆ˜
  • ํŒจ์น˜ ๊ด€๋ฆฌ: ์šด์˜์ฒด์ œ, ํ”„๋ ˆ์ž„์›Œํฌ, ์ข…์†์„ฑ์— ๋Œ€ํ•œ ์ž๋™ํ™”๋œ ์ ์‹œ ํŒจ์น˜
  • ID ๊ณต๊ธ‰์ž ํ†ตํ•ฉ: ๊ธฐ์—… ID ๊ณต๊ธ‰์ž(์˜ˆ: Microsoft Entra ID, Active Directory)๋ฅผ ํ†ตํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ID ๊ด€๋ฆฌ
  • ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ: MCP ๊ตฌ์„ฑ์š”์†Œ์˜ ๋…ผ๋ฆฌ์  ๋ถ„๋ฆฌ๋กœ ์ธก๋ฉด ์ด๋™ ๊ฐ€๋Šฅ์„ฑ ์ œํ•œ
  • ์ตœ์†Œ ๊ถŒํ•œ ์›์น™: ๋ชจ๋“  ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์š”์†Œ์™€ ๊ณ„์ •์— ์ตœ์†Œ ์š”๊ตฌ ๊ถŒํ•œ ์ ์šฉ
  • ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ํƒ์ง€
  • ํฌ๊ด„์  ๋กœ๊น…: AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™œ๋™ ๋ฐ MCP ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์ƒํ˜ธ์ž‘์šฉ ์ƒ์„ธ ๊ธฐ๋ก
  • SIEM ํ†ตํ•ฉ: ์ด์ƒ ํƒ์ง€๋ฅผ ์œ„ํ•œ ์ค‘์•™์ง‘์ค‘์‹ ๋ณด์•ˆ ์ •๋ณด ๋ฐ ์ด๋ฒคํŠธ ๊ด€๋ฆฌ
  • ํ–‰๋™ ๋ถ„์„: ์‹œ์Šคํ…œ ๋ฐ ์‚ฌ์šฉ์ž ํ–‰๋™์˜ ๋น„์ •์ƒ ํŒจํ„ด์„ ํƒ์ง€ํ•˜๋Š” AI ๊ธฐ๋ฐ˜ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์œ„ํ˜‘ ์ธํ…”๋ฆฌ์ „์Šค: ์™ธ๋ถ€ ์œ„ํ˜‘ ํ”ผ๋“œ ๋ฐ ์นจํ•ด ์ง€ํ‘œ(IOC) ํ†ตํ•ฉ
  • ์‚ฌ๊ฑด ๋Œ€์‘: ๋ณด์•ˆ ์‚ฌ๊ณ  ํƒ์ง€, ๋Œ€์‘, ๋ณต๊ตฌ๋ฅผ ์œ„ํ•œ ๋ช…ํ™•ํ•œ ์ ˆ์ฐจ
  • ์ œ๋กœ ํŠธ๋Ÿฌ์ŠคํŠธ ์•„ํ‚คํ…์ฒ˜
  • ์ ˆ๋Œ€ ์‹ ๋ขฐ ๊ธˆ์ง€, ํ•ญ์ƒ ๊ฒ€์ฆ: ์‚ฌ์šฉ์ž, ๋””๋ฐ”์ด์Šค, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ง€์† ๊ฒ€์ฆ
  • ๋งˆ์ดํฌ๋กœ ์„ธ๋ถ„ํ™”: ๊ฐœ๋ณ„ ์›Œํฌ๋กœ๋“œ ๋ฐ ์„œ๋น„์Šค ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•œ ์„ธ๋ถ„ํ™”๋œ ๋„คํŠธ์›Œํฌ ์ œ์–ด
  • ID ์ค‘์‹ฌ ๋ณด์•ˆ: ๋„คํŠธ์›Œํฌ ์œ„์น˜๋ณด๋‹ค ๊ฒ€์ฆ๋œ ID ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ์ •์ฑ…
  • ์ง€์†์  ์œ„ํ—˜ ํ‰๊ฐ€: ํ˜„์žฌ ๋งฅ๋ฝ๊ณผ ํ–‰๋™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋™์  ๋ณด์•ˆ ํƒœ์„ธ ํ‰๊ฐ€
  • ์กฐ๊ฑด๋ถ€ ์ ‘๊ทผ: ์œ„ํ—˜ ์š”์†Œ, ์œ„์น˜, ๋””๋ฐ”์ด์Šค ์‹ ๋ขฐ๋„์— ๋”ฐ๋ผ ์ ์‘ํ•˜๋Š” ์ ‘๊ทผ ์ œ์–ด
  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ†ตํ•ฉ ํŒจํ„ด

    Microsoft ๋ณด์•ˆ ์ƒํƒœ๊ณ„ ํ†ตํ•ฉ
  • Microsoft Defender for Cloud: ํฌ๊ด„์  ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ํƒœ์„ธ ๊ด€๋ฆฌ
  • Azure Sentinel: AI ์›Œํฌ๋กœ๋“œ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ SIEM ๋ฐ SOAR ๊ธฐ๋Šฅ
  • Microsoft Entra ID: ์กฐ๊ฑด๋ถ€ ์ ‘๊ทผ ์ •์ฑ…์„ ๊ฐ–์ถ˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ID ๋ฐ ์ ‘๊ทผ ๊ด€๋ฆฌ
  • Azure Key Vault: ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ๋ชจ๋“ˆ(HSM) ์ง€์› ์ค‘์•™ ๋น„๋ฐ€ ๊ด€๋ฆฌ
  • Microsoft Purview: AI ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฐ ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋ฐ ๊ทœ์ • ์ค€์ˆ˜
  • ์ค€์ˆ˜ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค
  • ๊ทœ์ œ ์ค€์ˆ˜ ๋งž์ถคํ™”: MCP ๊ตฌํ˜„์ด GDPR, HIPAA, SOC 2 ๋“ฑ ์‚ฐ์—…๋ณ„ ๊ทœ์ œ ์š”๊ฑด ์ถฉ์กฑ ๋ณด์žฅ
  • ๋ฐ์ดํ„ฐ ๋ถ„๋ฅ˜: AI ์‹œ์Šคํ…œ์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ์ ์ ˆ ๋ถ„๋ฅ˜ ๋ฐ ๊ด€๋ฆฌ
  • ๊ฐ์‚ฌ ์ถ”์ : ๊ทœ์ œ ์ค€์ˆ˜ ๋ฐ ํฌ๋ Œ์‹ ์กฐ์‚ฌ๋ฅผ ์œ„ํ•œ ํฌ๊ด„์  ๋กœ๊ทธ ๊ธฐ๋ก
  • ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ์ œ์–ด: AI ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์— ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ์„ค๊ณ„ ์›์น™ ๋„์ž…
  • ๋ณ€๊ฒฝ ๊ด€๋ฆฌ: AI ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€ํ† ๋ฅผ ์œ„ํ•œ ๊ณต์‹ ํ”„๋กœ์„ธ์Šค
  • ์ด๋Ÿฌํ•œ ๊ธฐ์ดˆ ๊ด€ํ–‰์€ MCP ํŠนํ™” ๋ณด์•ˆ ์ œ์–ด์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ  AI ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ํฌ๊ด„์  ๋ณดํ˜ธ ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ์š” ๋ณด์•ˆ ์‹œ์‚ฌ์ 

  • ๊ณ„์ธตํ™”๋œ ๋ณด์•ˆ ์ ‘๊ทผ๋ฒ•: ๊ธฐ๋ณธ์ ์ธ ๋ณด์•ˆ ๊ด€ํ–‰(์•ˆ์ „ํ•œ ์ฝ”๋”ฉ, ์ตœ์†Œ ๊ถŒํ•œ, ๊ณต๊ธ‰๋ง ๊ฒ€์ฆ, ์ง€์†์  ๋ชจ๋‹ˆํ„ฐ๋ง)๊ณผ AI ํŠน์ • ์ œ์–ด๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ํฌ๊ด„์ ์ธ ๋ณดํ˜ธ ์ œ๊ณต
  • AI ํŠน์œ ์˜ ์œ„ํ˜‘ ํ™˜๊ฒฝ: MCP ์‹œ์Šคํ…œ์€ ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜, ๋„๊ตฌ ์ค‘๋…, ์„ธ์…˜ ํƒˆ์ทจ, ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋Œ€๋ฆฌ ๋ฌธ์ œ, ํ† ํฐ ์ „๋‹ฌ ์ทจ์•ฝ์ , ๊ณผ๋„ํ•œ ๊ถŒํ•œ ๋“ฑ ํŠน์ˆ˜ํ•œ ์œ„ํ—˜์— ์ง๋ฉดํ•˜๋ฉฐ ์ด๋ฅผ ์œ„ํ•ด ์ „๋ฌธ์ ์ธ ์™„ํ™”์ฑ… ํ•„์š”
  • ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ์˜ ํƒ์›”์„ฑ: ์™ธ๋ถ€ ID ๊ณต๊ธ‰์ž(Microsoft Entra ID)๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ•๋ ฅํ•œ ์ธ์ฆ ๊ตฌํ˜„, ์ ์ ˆํ•œ ํ† ํฐ ๊ฒ€์ฆ ์ ์šฉ, MCP ์„œ๋ฒ„์šฉ์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐœ๊ธ‰๋˜์ง€ ์•Š์€ ํ† ํฐ์€ ์ ˆ๋Œ€ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์Œ
  • AI ๊ณต๊ฒฉ ๋ฐฉ์ง€: Microsoft Prompt Shields ๋ฐ Azure Content Safety๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ๊ฐ„์ ‘์ ์ธ ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜๊ณผ ๋„๊ตฌ ์ค‘๋… ๊ณต๊ฒฉ ๋ฐฉ์–ด, ๋„๊ตฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ๋ฐ ๋™์  ๋ณ€๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋ง ์ˆ˜ํ–‰
  • ์„ธ์…˜ ๋ฐ ์ „์†ก ๋ณด์•ˆ: ์‚ฌ์šฉ์ž ์‹ ์›์— ๋ฐ”์ธ๋”ฉ๋œ ์•”ํ˜ธํ•™์ ์œผ๋กœ ์•ˆ์ „ํ•˜๊ณ  ๋น„๊ฒฐ์ •์ ์ธ ์„ธ์…˜ ID ์‚ฌ์šฉ, ์ ์ ˆํ•œ ์„ธ์…˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ ๊ตฌํ˜„, ์ธ์ฆ์— ์„ธ์…˜ ์‚ฌ์šฉ ๊ธˆ์ง€
  • OAuth ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€: ๋™์  ๋“ฑ๋ก ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์ธ ์‚ฌ์šฉ์ž ๋™์˜๋ฅผ ํ†ตํ•ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋Œ€๋ฆฌ ๊ณต๊ฒฉ ๋ฐฉ์ง€, PKCE๊ฐ€ ํฌํ•จ๋œ ์ ์ ˆํ•œ OAuth 2.1 ๊ตฌํ˜„, ์—„๊ฒฉํ•œ ๋ฆฌ๋””๋ ‰์…˜ URI ๊ฒ€์ฆ ์‹ค์‹œ
  • ํ† ํฐ ๋ณด์•ˆ ์›์น™: ํ† ํฐ ์ „๋‹ฌ ๋ฐ˜ํŒจํ„ด ํšŒํ”ผ, ํ† ํฐ ์ˆ˜์‹ ์ž ํด๋ ˆ์ž„ ์ฒ ์ € ๊ฒ€์ฆ, ์งง์€ ์ˆ˜๋ช… ํ† ํฐ๊ณผ ๋ณด์•ˆ ํšŒ์ „ ๊ตฌํ˜„, ๋ช…ํ™•ํ•œ ์‹ ๋ขฐ ๊ฒฝ๊ณ„ ์œ ์ง€
  • ํฌ๊ด„์  ๊ณต๊ธ‰๋ง ๋ณด์•ˆ: ๋ชจ๋ธ, ์ž„๋ฒ ๋”ฉ, ์ปจํ…์ŠคํŠธ ์ œ๊ณต์ž, ์™ธ๋ถ€ API ๋“ฑ ๋ชจ๋“  AI ์ƒํƒœ๊ณ„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ „ํ†ต์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์˜์กด์„ฑ๊ณผ ๋™์ผํ•œ ๋ณด์•ˆ ์ˆ˜์ค€์œผ๋กœ ์ทจ๊ธ‰
  • ์ง€์†์  ์ง„ํ™”: ๊ธ‰๋ณ€ํ•˜๋Š” MCP ๋ช…์„ธ์— ์ตœ์‹  ์ƒํƒœ ์œ ์ง€, ๋ณด์•ˆ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ‘œ์ค€์— ๊ธฐ์—ฌ, ํ”„๋กœํ† ์ฝœ ์„ฑ์ˆ™์— ๋”ฐ๋ฅธ ์ ์‘ํ˜• ๋ณด์•ˆ ์ž์„ธ ์œ ์ง€
  • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๋ณด์•ˆ ํ†ตํ•ฉ: Microsoft์˜ ํฌ๊ด„์  ๋ณด์•ˆ ์ƒํƒœ๊ณ„(Prompt Shields, Azure Content Safety, GitHub Advanced Security, Entra ID)๋ฅผ ํ™œ์šฉํ•˜์—ฌ MCP ๋ฐฐํฌ ๋ณดํ˜ธ ๊ฐ•ํ™”
  • ํฌ๊ด„์  ์ž๋ฃŒ

    ๊ณต์‹ MCP ๋ณด์•ˆ ๋ฌธ์„œ

  • MCP ๋ช…์„ธ (ํ˜„์žฌ: 2025-11-25)
  • MCP ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€
  • MCP ๊ถŒํ•œ ๋ถ€์—ฌ ๋ช…์„ธ
  • MCP GitHub ์ €์žฅ์†Œ
  • OWASP MCP ๋ณด์•ˆ ์ž๋ฃŒ

  • OWASP MCP Azure ๋ณด์•ˆ ๊ฐ€์ด๋“œ - Azure ๊ตฌํ˜„ ๊ฐ€์ด๋“œ๊ฐ€ ํฌํ•จ๋œ ํฌ๊ด„์  OWASP MCP Top 10
  • OWASP MCP Top 10 - ๊ณต์‹ OWASP MCP ๋ณด์•ˆ ์œ„ํ—˜
  • MCP ๋ณด์•ˆ ์„œ๋ฐ‹ ์›Œํฌ์ˆ (Sherpa) - Azure์—์„œ MCP๋ฅผ ์œ„ํ•œ ์‹ค์Šต ๋ณด์•ˆ ๊ต์œก
  • ๋ณด์•ˆ ํ‘œ์ค€ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€

  • OAuth 2.0 ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€ (RFC 9700)
  • OWASP ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ Top 10
  • ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ์šฉ OWASP Top 10
  • Microsoft ๋””์ง€ํ„ธ ๋ฐฉ์–ด ๋ณด๊ณ ์„œ
  • AI ๋ณด์•ˆ ์—ฐ๊ตฌ ๋ฐ ๋ถ„์„

  • MCP์˜ ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜ (Simon Willison)
  • ๋„๊ตฌ ์ค‘๋… ๊ณต๊ฒฉ (Invariant Labs)
  • MCP ๋ณด์•ˆ ์—ฐ๊ตฌ ๋ธŒ๋ฆฌํ•‘ (Wiz Security)
  • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๋ณด์•ˆ ์†”๋ฃจ์…˜

  • Microsoft Prompt Shields ๋ฌธ์„œ
  • Azure Content Safety ์„œ๋น„์Šค
  • Microsoft Entra ID ๋ณด์•ˆ
  • Azure ํ† ํฐ ๊ด€๋ฆฌ ๋ชจ๋ฒ” ์‚ฌ๋ก€
  • GitHub ๊ณ ๊ธ‰ ๋ณด์•ˆ
  • ๊ตฌํ˜„ ๊ฐ€์ด๋“œ ๋ฐ ํŠœํ† ๋ฆฌ์–ผ

  • Azure API Management๋ฅผ MCP ์ธ์ฆ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์‚ฌ์šฉ
  • MCP ์„œ๋ฒ„์™€ Microsoft Entra ID ์ธ์ฆ
  • ์•ˆ์ „ํ•œ ํ† ํฐ ์ €์žฅ ๋ฐ ์•”ํ˜ธํ™” (๋น„๋””์˜ค)
  • DevOps ๋ฐ ๊ณต๊ธ‰๋ง ๋ณด์•ˆ

  • Azure DevOps ๋ณด์•ˆ
  • Azure Repos ๋ณด์•ˆ
  • Microsoft ๊ณต๊ธ‰๋ง ๋ณด์•ˆ ์—ฌ์ •
  • ์ถ”๊ฐ€ ๋ณด์•ˆ ๋ฌธ์„œ

    ํฌ๊ด„์  ๋ณด์•ˆ ์ง€์นจ์€ ๋ณธ ์„น์…˜์˜ ์ „๋ฌธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค:

  • MCP ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€ 2025 - MCP ๊ตฌํ˜„์„ ์œ„ํ•œ ์™„๋ฒฝํ•œ ๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€
  • Azure Content Safety ๊ตฌํ˜„ - Azure Content Safety ํ†ตํ•ฉ์— ๋Œ€ํ•œ ์‹ค์ „ ๊ตฌํ˜„ ์˜ˆ์ œ
  • MCP ๋ณด์•ˆ ์ œ์–ด 2025 - MCP ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ตœ์‹  ๋ณด์•ˆ ์ œ์–ด ๋ฐ ๊ธฐ๋ฒ•
  • MCP ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋น ๋ฅธ ์ฐธ์กฐ - ํ•„์ˆ˜ MCP ๋ณด์•ˆ ๊ด€ํ–‰์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ฐธ์กฐ ๊ฐ€์ด๋“œ
  • ์‹ค์Šต ๋ณด์•ˆ ๊ต์œก

  • MCP ๋ณด์•ˆ ์„œ๋ฐ‹ ์›Œํฌ์ˆ (Sherpa) - Base Camp๋ถ€ํ„ฐ Summit๊นŒ์ง€ ๋‹จ๊ณ„๋ณ„ ์บ ํ”„๋ฅผ ํฌํ•จํ•œ Azure์—์„œ MCP ์„œ๋ฒ„ ๋ณด์•ˆ์„ ์œ„ํ•œ ํฌ๊ด„์  ์‹ค์Šต ์›Œํฌ์ˆ
  • OWASP MCP Azure ๋ณด์•ˆ ๊ฐ€์ด๋“œ - ๋ชจ๋“  OWASP MCP Top 10 ์œ„ํ—˜์— ๋Œ€ํ•œ ์ฐธ์กฐ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๊ตฌํ˜„ ์ง€์นจ
  • ---

    ๋‹ค์Œ ๋‹จ๊ณ„

    ๋‹ค์Œ: 3์žฅ: ์‹œ์ž‘ํ•˜๊ธฐ

    ---

    ๋ฉด์ฑ… ์กฐํ•ญ:

    ์ด ๋ฌธ์„œ๋Š” AI ๋ฒˆ์—ญ ์„œ๋น„์Šค Co-op Translator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ •ํ™•์„ฑ์„ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ž๋™ ๋ฒˆ์—ญ์—๋Š” ์˜ค๋ฅ˜๋‚˜ ๋ถ€์ •ํ™•ํ•œ ๋‚ด์šฉ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ์„ ์œ ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    ์›๋ฌธ ๋ฌธ์„œ๋Š” ํ•ด๋‹น ์–ธ์–ด์˜ ๊ถŒ์œ„ ์žˆ๋Š” ์ถœ์ฒ˜๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ค‘์š”ํ•œ ์ •๋ณด์˜ ๊ฒฝ์šฐ ์ „๋ฌธ์ ์ธ ์ธ๊ฐ„ ๋ฒˆ์—ญ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ๋ณธ ๋ฒˆ์—ญ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜คํ•ด๋‚˜ ํ•ด์„์ƒ์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹น์‚ฌ๊ฐ€ ์ฑ…์ž„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.