# MCP 서버

> Claude, ChatGPT, Codex, Cursor, VS Code 및 기타 클라이언트를 Skynet에 연결합니다.

Skynet MCP 서버를 사용하면 AI 에이전트가 사용자를 대신해 Skynet을 사용할 수 있습니다. Claude, ChatGPT, Codex, Cursor 및 기타 MCP 클라이언트는 실행 설정을 검사하고, 실행을 시작하고, 지켜보고, 중지할 수 있습니다. 연결은 브라우저에서 한 번만 승인하면 됩니다. 에이전트는 실행마다 지출 한도를 설정합니다.

## 서버 URL

모든 클라이언트가 같은 URL을 사용합니다.

```text
https://mcp.skynetml.com/mcp
```

서버는 Streamable HTTP를 사용합니다. 로그인은 OAuth 2.1을 사용합니다. 토큰이나 API 키를 클라이언트에 복사할 필요가 없습니다.

## 클라이언트 연결하기

사용하는 클라이언트를 선택하세요. 해당 단계를 따른 다음 [연결 승인하기](#연결-승인하기)로 이동하세요.

```skynet-mcp-clients

```

## 연결 승인하기

에이전트가 처음 Skynet을 호출하면 브라우저에서 Skynet 페이지가 열립니다.

1. 로그인되어 있지 않다면 Skynet에 로그인합니다.
2. 페이지를 읽습니다. 페이지에는 에이전트 이름, 돌아갈 사이트, 내 계정이 표시됩니다.
3. 에이전트가 할 수 있는 일을 읽습니다.
   - 내 최적화 실행과 그 결과를 봅니다.
   - 내 잔액에서 비용을 지불해 최적화 실행을 시작하고 중지합니다.
4. 연결하려면 **Allow**를 클릭합니다. 중단하려면 **Deny**를 클릭합니다.

**Allow**를 클릭하면 브라우저가 에이전트로 돌아갑니다. 이제 에이전트가 아래 도구를 호출할 수 있습니다.

> [!NOTE]
> 에이전트는 실행마다 지출 한도를 설정합니다. 에이전트는 충전할 수 없습니다.

## 도구

| 도구        | 하는 일                                                                         | 권한 |
| ----------- | ------------------------------------------------------------------------------- | ---- |
| `check_run` | 실행하거나 비용을 청구하지 않고 실행 설정을 검사합니다. 지출 한도를 제안합니다. | 읽기 |
| `start_run` | 지출 한도를 두고 실행을 시작합니다.                                             | 쓰기 |
| `get_run`   | 상태, 지출, 그리고 실행이 끝나면 결과를 반환합니다.                             | 읽기 |
| `list_runs` | 내 실행을 최신순으로 나열합니다. 상태로 필터링할 수 있습니다.                   | 읽기 |
| `stop_run`  | 실행을 중지합니다. 두 번째 호출은 실행이 이미 끝났다는 오류를 반환합니다.       | 쓰기 |

읽기 권한은 `runs:read` 스코프를 사용합니다. 쓰기 권한은 `runs:write` 스코프를 사용합니다.

어떤 도구도 충전하거나, 잔액을 바꾸거나, 청구 설정을 바꾸지 않습니다.

## 에이전트가 최적화를 실행하는 방식

1. 에이전트가 실행 설정과 함께 `check_run`을 호출합니다. Skynet은 정적 검사를 실행하고 다음을 반환합니다.
   - 각 검사의 결과.
   - 실행을 시작할 수 있는 가장 낮은 지출 한도.
   - 제안 지출 한도. 최소 $5.00입니다.
   - 가격이 알려지지 않은 모델.
   - 지금 지출할 수 있는 금액.
2. 에이전트가 지출 한도(`max_cost_cents`, 1~1,000,000 미국 센트)와 함께 `start_run`을 호출합니다. 재시도 때 두 번째 실행이 시작되지 않도록 `idempotency_key`를 보낼 수도 있습니다.
3. 설정 검사가 아직 진행 중이면 `start_run`은 `in_progress`와 `retry_after_seconds`를 반환합니다. 에이전트는 그 시간이 지난 뒤 같은 입력으로 `start_run`을 다시 호출합니다.
4. 에이전트는 실행이 끝날 때까지 `get_run`을 호출합니다. 최종 상태는 `success`, `failed`, `cancelled`, `stopped`입니다.

> [!TIP]
> 프롬프트에서 에이전트에게 지출 한도를 알려 주세요. 예: "이 프롬프트를 최적화해. 최대 $10까지만 써." 그러면 에이전트가 그 한도를 `start_run`에 사용합니다.

실행은 지출 한도에 도달하면 멈춥니다. Skynet이 실행 비용을 청구하는 방식은 [예산과 결제](/docs/ko/concepts/billing)를 읽어 보세요.

## 보안

- 각 클라이언트는 자체 권한 부여(grant)를 받습니다. 클라이언트는 비밀번호를 절대 보지 못합니다.
- 로그인은 PKCE(S256)를 사용합니다. 클라이언트는 동적 클라이언트 등록 또는 클라이언트 ID 메타데이터 문서로 스스로를 등록합니다.
- 액세스 토큰은 1시간 후 만료됩니다. 클라이언트는 리프레시 토큰으로 이를 갱신합니다.
- 리프레시 토큰은 30일 동안 사용하지 않으면 만료됩니다. 권한 부여는 최대 90일 동안 유지됩니다. 그 후에는 연결을 다시 승인해야 합니다.
- 각 리프레시 토큰은 한 번만 작동합니다. 누군가 이전 리프레시 토큰을 다시 사용하면 Skynet은 해당 권한 부여를 종료합니다.
- 에이전트는 내 실행만 보고 변경할 수 있습니다.

Skynet이 계정과 데이터를 보호하는 방식은 [보안](/docs/ko/security)을 읽어 보세요.

## 연결 해제

에이전트의 연결을 해제하려면 클라이언트에서 Skynet 서버를 제거합니다. 대부분의 클라이언트는 그때 토큰을 해지합니다. 클라이언트가 토큰을 해지하지 않으면, 리프레시 토큰은 30일 동안 사용하지 않은 뒤 만료됩니다.

## 문제 해결

| 문제                                    | 해결 방법                                                                      |
| --------------------------------------- | ------------------------------------------------------------------------------ |
| 연결이 바로 실패합니다                  | 서버 URL을 확인하세요. 정확히 `https://mcp.skynetml.com/mcp`여야 합니다.       |
| "This agent can't connect"              | 클라이언트에서 연결을 다시 시작하세요.                                         |
| "Too many attempts"                     | 몇 분 기다린 다음 다시 시도하세요.                                             |
| 클라이언트가 브라우저를 열지 않습니다   | 클라이언트를 업데이트하세요. OAuth를 지원하는 원격 MCP 서버를 지원해야 합니다. |
| `start_run`이 잔액 오류로 실패합니다    | Skynet에서 충전하거나, 더 낮은 지출 한도로 실행을 시작하세요.           |
| 몇 주 후 도구가 작동하지 않습니다       | 권한 부여가 만료되었습니다. 서버를 제거하고 다시 연결하세요.                   |

에이전트 없이 HTTP로 직접 접근하려면 [API](/docs/ko/api)를 읽어 보세요.

---

Source: https://staging.skynetml.com/docs/ko/mcp
