# MCP 요청 (/ko/docs/requests/mcp-requests)

MCP 요청은 작업 공간의 [MCP 서버](/docs/mcp-servers) 하나에 대한 저장된 호출입니다. 도구 호출, 리소스 읽기, 프롬프트, 또는 임의의 JSON-RPC 메서드가 해당합니다.
자주 하는 호출을 저장하고 검사를 추가한 다음, 다른 요청과 마찬가지로 [실행](/docs/requests/runner)에서 실행하십시오.

<Shot id="requests-mcp-call" alt="Agent tools › search_catalog: Alpenglow MCP 서버 메뉴, 선택된 도구, JSON 인수와 그 아래 도구의 필드, 초록색 결과 배지가 있는 결과" />

## MCP 서버 페이지에서 호출해 보기 [#try-a-call-from-the-mcp-servers-page]

가장 빠른 시작 방법은 서버 자체에서 해 보는 것입니다.

1. **MCP 서버** 페이지를 열고 서버를 선택합니다. `https://demo.echolot.dev/mcp`를 가리키는 **Alpenglow MCP** 같은 것입니다.
2. 아직 확인하지 않았다면 **검사**를 선택합니다. 페이지에 서버의 **도구**, **리소스**, **프롬프트**가 나열됩니다.
3. 도구, 리소스 또는 프롬프트를 클릭합니다. 인수가 있는 시트가 열립니다.
4. 입력 스키마로 만든 **양식**이나 **JSON**으로 인수를 채우고 **호출**을 선택합니다.
5. 아래에 결과가 나타나며, **결과** 또는 **오류**와 걸린 시간이 함께 표시됩니다.
6. **요청으로 저장**을 선택하면 인수를 포함한 호출이 MCP 요청으로 보관됩니다.

<Shot id="requests-mcp-call-panel" alt="MCP 서버 페이지의 search_catalog 도구 호출 시트: query와 limit의 양식, 아래의 JSON 결과" />

## MCP 요청 만들기 [#create-an-mcp-request]

사이드바의 **요청** 옆 **+** 메뉴에서 **새로운 MCP 호출**을 선택합니다. 편집기의 막대에 호출이 들어 있습니다.

1. 맨 앞의 메뉴에서 서버를 고릅니다. 같은 메뉴의 <strong>MCP 서버…</strong>는 MCP 서버 페이지를 엽니다.
2. 무엇을 호출할지 고릅니다. **도구**, **리소스**, **프롬프트**, **메서드** 중 하나입니다.
3. 대상을 입력합니다. **도구 이름**, **리소스 URI**, **프롬프트 이름**, 또는 `ping` 같은 JSON-RPC 메서드입니다. 서버의 최신 검사에서 가져온 이름이 입력하는 동안
   **서버에서** 아래에 제안됩니다.
4. **호출**(<kbd>⌘</kbd><kbd>R</kbd>)을 선택합니다. 실행 중에는 **취소**(<kbd>⌘</kbd><kbd>.</kbd>)로 중단합니다.

| 작업 | 보내는 내용 | 인수의 의미 |
| --- | --- | --- |
| **도구** | 도구 이름을 담은 `tools/call` | 도구의 인수 |
| **리소스** | URI를 담은 `resources/read` | 사용하지 않음 |
| **프롬프트** | 프롬프트 이름을 담은 `prompts/get` | 프롬프트의 인수 |
| **메서드** | 임의의 JSON-RPC 메서드 | 메서드의 매개변수 |

편집기의 탭은 **문서**, **인수**, **변수**, **테스트**, **설정**입니다. MCP 요청에는 자체 헤더, 인증, 스크립트가 없습니다. 서버의 연결 설정, 헤더, 로그인은 MCP 서버
페이지에 있습니다. [서버 추가](/docs/mcp-servers/adding-servers)를 참고하십시오.

## 인수 [#arguments]

**인수** 탭에는 `{{variables}}`를 쓸 수 있는 JSON 객체가 들어 있습니다.

```json
{
  "query": "ultralight tent",
  "limit": 3
}
```

서버의 최신 검사에서 해당 도구를 알고 있으면 탭의 편집기 위에 도구 설명이, 아래에 `Fields: query*, limit` 같은 필드가 표시됩니다. 별표는 필수 필드를 뜻합니다.
**스키마로 채우기**는 인수를 도구 입력 스키마의 모든 필드로 바꿔 줍니다. 이를 출발점으로 삼을 수 있습니다.

Alpenglow 작업 공간에는 **Agent tools**에 호출이 두 개 있습니다. 위의 인수를 쓰는 **search_catalog**와, `{"order_id": "ord_7Hk2Lw"}`를 조회하는
**order_status**입니다.

## 결과 [#results]

응답 패널은 다른 [응답](/docs/requests/responses)과 마찬가지로 **본문** 탭에 결과를 JSON으로 보여 줍니다. 응답 요약의 배지에는 초록색 **결과** 또는 빨간색 **오류**와
서버가 사용하는 프로토콜 버전이 표시됩니다. 포인터를 올리면 누가 응답했는지, 또는 무엇이 잘못되었는지 볼 수 있습니다.

호출은 두 가지 방식으로 실패할 수 있으며 Echolot은 이 둘을 구분합니다.

- 서버가 오류로 응답합니다. 오류로 표시된 도구 결과이거나 JSON-RPC 오류입니다. 배지에 **오류**가 표시되고 본문에 서버가 한 말이 들어 있습니다.
- 호출이 응답을 전혀 받지 못합니다. 서버에 연결할 수 없거나, 시작하지 않거나, 프로토콜을 어깁니다. 응답 패널에 이유가 표시됩니다. MCP 서버 페이지에서 서버를
  검사하십시오. 메시지 로그에 마지막 검사의 모든 메시지가 있습니다.

모든 호출은 [기록](/docs/workspaces/history)에 보관됩니다.

## MCP 검사 [#checks-for-mcp]

**테스트** 탭에서 다음을 쓸 수 있습니다.

- **MCP 오류**가 `false`와 같음은 호출이 성공했을 때 통과합니다. 실패하면 서버의 메시지가 표시됩니다.
- **도구 출력 스키마**는 결과의 `structuredContent`를 도구가 선언한 `outputSchema`와 대조합니다. 도구가 선언하지 않았거나 결과에 `structuredContent`가 없으면
  실패합니다.
- **JSON 값**은 `$.structuredContent.results.length`가 `0` 초과, `$.content[0].type`이 `text`와 같음처럼 결과의 임의의 값을 검사합니다.

모든 검사와 비교는 [스크립트와 테스트](/docs/requests/scripts-and-tests)를 참고하십시오.

<Edition only="appstore">
  App Store 버전은 HTTP로 MCP 서버를 호출합니다. 로컬 프로그램(stdio)으로 실행되는 서버는 작업 공간에 남아 있지만, 그 서버를 호출하려면 직접 다운로드 버전이나
  명령줄 도구가 필요합니다.
</Edition>

## 명령줄에서 [#from-the-command-line]

`echolot run`은 저장된 MCP 요청을 검사와 함께 실행하고, `echolot mcp check`는 서버를 점검합니다. [echolot mcp](/docs/cli/mcp)를 참고하십시오.
