# MCP 서버

> Claude Code·Cursor 같은 바깥 에이전트가 MCP 로 내 에이전트를 찾아보고 일을 시키게 합니다. 실행은 내가 켠 에이전트만 됩니다.

**MCP 서버**는 Claude Code·Cursor 같은 바깥 에이전트가 MCP 로 내 endue 에이전트를 찾아보고 일을 시키는 주소입니다. [대화](/ko/docs/work/conversations/)·[채널](/ko/docs/automate/channels/)·[에이전트 API](/ko/docs/build/agent-api/)에 이은 네 번째 진입로이고, 이쪽은 다른 에이전트용입니다.

```
https://platform.endue.ai/mcp
```

## 언제 쓰는가

이미 쓰고 있는 코딩 에이전트가 일하다가 내 endue 에이전트의 도움이 필요할 때입니다. Claude Code 가 코드를 고치는 중에, 고객 문의를 맡은 내 에이전트에게 지난주 환불 문의를 요약해 달라고 묻는 식입니다.

부르는 쪽이 직접 짠 코드라면 [에이전트 API](/ko/docs/build/agent-api/)가 맞습니다. 그쪽은 답을 스트림으로 받습니다.

## 연결하기

<Steps>

1. **설정 → 계정 → MCP 연결**에서 **연결 만들기**를 누릅니다. [에이전트 빌더](/ko/docs/build/agent-builder/)의 **MCP** 섹션에도 같은 버튼이 있습니다.

2. **키를 만듭니다.** 이름과 만료를 정합니다. 권한은 **조회**와 **MCP 실행**으로 정해져 있습니다.

3. **설정을 붙여 넣습니다.** 쓰는 클라이언트를 고르면 키가 채워진 설정이 나옵니다. 복사해서 안내된 자리에 넣으세요. 키는 이 창을 닫으면 다시 볼 수 없습니다.

4. **연결을 확인합니다.** 바깥 에이전트가 첫 요청을 보내면 창이 **연결됐습니다**로 바뀝니다.

5. **실행할 에이전트에서 MCP 를 켭니다.** 에이전트 빌더의 **MCP** 섹션에서 **MCP 로 이 에이전트 실행**을 켭니다. 켜지 않은 에이전트는 정보만 읽힙니다.

</Steps>

연결 창이 보여 주는 설정은 아래와 같습니다. `sk_...` 자리에 발급한 키가 들어갑니다.

<Tabs syncKey="mcp-client">
  <TabItem label="Claude Code">
    터미널에서 실행합니다.

    ```bash
    claude mcp add --transport http endue https://platform.endue.ai/mcp --header "Authorization: Bearer sk_..."
    ```
  </TabItem>
  <TabItem label="Cursor">
    `~/.cursor/mcp.json` 에 넣습니다.

    ```json
    {
      "mcpServers": {
        "endue": {
          "url": "https://platform.endue.ai/mcp",
          "headers": { "Authorization": "Bearer sk_..." }
        }
      }
    }
    ```
  </TabItem>
  <TabItem label="VS Code">
    `.vscode/mcp.json` 에 넣습니다.

    ```json
    {
      "servers": {
        "endue": {
          "type": "http",
          "url": "https://platform.endue.ai/mcp",
          "headers": { "Authorization": "Bearer sk_..." }
        }
      }
    }
    ```
  </TabItem>
  <TabItem label="그 밖의 클라이언트">
    서버 주소와 헤더를 직접 넣습니다. 전송 방식은 HTTP 입니다.

    ```
    https://platform.endue.ai/mcp
    Authorization: Bearer sk_...
    ```
  </TabItem>
</Tabs>

키를 설정 파일에 적고 싶지 않으면 연결 창에서 **환경변수로 보기**를 누르세요. 키를 `ENDUE_API_KEY` 에 두고 쓰는 설정으로 바뀝니다.

<Aside type="note" title="이미 가진 키로 붙이려면">
  **설정 → 계정 → API 키**에서 용도를 **MCP 연결**로 골라 만든 키도 똑같이 통합니다. 권한을 고르는
  기능이 생기기 전에 만든 키는 **모든 권한**으로 표시되고, MCP 에도 통합니다.
</Aside>

## 바깥 에이전트가 쓰는 툴

| 툴 | 하는 일 | 필요한 것 |
| --- | --- | --- |
| `list_agents` | 내 에이전트의 이름·소개와, MCP 로 실행할 수 있는지를 돌려줍니다. | **조회** 권한 |
| `get_agent` | 에이전트 하나의 구성을 요약해 돌려줍니다. 모델, 스킬, 커넥터, 채널이 들어갑니다. | **조회** 권한 |
| `invoke_agent` | 에이전트에게 일을 시키고 답을 받습니다. | **MCP 실행** 권한과 그 에이전트의 MCP 스위치 |
| `get_session` | 앞서 시킨 일의 상태와 답을 다시 받습니다. | **MCP 실행** 권한 |

`get_agent` 는 이름과 요약만 줍니다. 시스템 프롬프트와 메모리의 내용, 커넥터에 연결한 계정은 나가지 않습니다.

`invoke_agent` 의 답에는 세션 id 가 함께 옵니다. 다음 호출에 그 id 를 보내면 같은 대화에서 이어집니다. 실행이 약 50초 안에 끝나지 않으면 `running` 상태와 세션 id 가 먼저 가고, 바깥 에이전트가 `get_session` 으로 답을 받아 갑니다. 바깥 에이전트가 먼저 연결을 끊어도 실행은 끝까지 돕니다.

## 에이전트마다 정하는 것

에이전트 빌더의 **MCP** 섹션에 스위치가 둘 있습니다. 둘 다 처음에는 꺼져 있습니다.

- **MCP 로 이 에이전트 실행.** 켜야 `invoke_agent` 가 통합니다. 꺼져 있어도 이름·소개 같은 정보는 읽힙니다.
- **커넥터 · 아웃풋도 쓰게 하기.** 꺼 두면 MCP 로 들어온 일에는 [커넥터](/ko/docs/connect/overview/)와 [아웃풋](/ko/docs/capabilities/outputs/)을 쓰지 않습니다. 켜도 보내기·지우기는 매번 [승인](/ko/docs/work/approvals/)을 받고, **항상 허용**은 여기에 적용되지 않습니다.

같은 섹션의 **최근 호출**에 이 에이전트로 들어온 MCP 호출이 남습니다. 거절된 호출도 **권한 없음**, **꺼져 있음** 같은 이유와 함께 보입니다.

## 들어온 일 확인하기

- **알림.** 바깥 에이전트가 새 대화를 시작하면 알림이 한 번 옵니다. 같은 대화가 이어지는 동안에는 다시 오지 않습니다.
- **대화.** 사이드바에서 그 에이전트의 **MCP** 구획에 모입니다. 대화를 열면 어느 키와 어느 클라이언트가 불렀는지 위쪽에 보입니다.
- **승인.** 승인이 필요한 행동에서 실행이 멈추고 내게 요청이 옵니다. 승인하면 실행이 이어지고, 바깥 에이전트는 `get_session` 으로 답을 받습니다.

MCP 대화는 읽기 전용입니다. MCP 호출로만 이어집니다.

## 한계

- 헤더에 토큰을 넣을 수 없는 클라이언트(OAuth 로만 붙는 것)는 연결하지 못합니다.
- MCP 로 들어온 일에는 [디바이스](/ko/docs/build/devices/)를 쓰지 않습니다. 스위치로도 열 수 없습니다.
- 바깥 에이전트는 모델이나 단계 수를 정하지 못합니다. 에이전트에 정해 둔 대로 돕니다.
- 에이전트의 [질문](/ko/docs/work/questions/) 카드는 바깥으로 나가지 않습니다. 물을 것이 있으면 에이전트가 답 안에 글로 묻습니다.
- 바깥 호출자는 에이전트의 [메모리](/ko/docs/capabilities/memory/)에 쓰지 못합니다.
- MCP 로 시작한 세션은 MCP 로만 잇고 읽습니다. 에이전트 API 의 세션과 섞이지 않습니다.
- `list_agents` 는 에이전트 50개까지 돌려줍니다.
- 키의 권한은 발급한 뒤 바꿀 수 없습니다. 다른 권한이 필요하면 새 키를 만드세요.
- 실행과 과금은 키를 만든 계정으로 됩니다.

## 관련 문서

<CardGrid>
  <LinkCard
    title="에이전트 API"
    href="/ko/docs/build/agent-api/"
    description="부르는 쪽이 에이전트가 아니라 코드일 때."
  />
  <LinkCard
    title="승인"
    href="/ko/docs/work/approvals/"
    description="보내기·지우기가 왜 내 확인을 기다리는가."
  />
  <LinkCard
    title="직접 연결"
    href="/ko/docs/connect/direct-connections/"
    description="반대 방향: 내 에이전트가 바깥 MCP 서버를 씁니다."
  />
  <LinkCard
    title="보안과 권한"
    href="/ko/docs/account/security/"
    description="키가 닿는 범위와 거두는 법."
  />
</CardGrid>
