> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP 서버 설치: Claude, Cursor, VS Code, Windsurf

> Claude, Cursor, VS Code, Windsurf, Zed 등 모든 MCP 클라이언트에서 호스팅된 Didit MCP 서버를 설정하거나 오픈소스 서버를 직접 호스팅하세요. API 키가 필요 없습니다.

> [!TIP]
>
> **Claude를 사용하시나요?** [Claude 연결](https://docs.didit.me/ko/integration/mcp/claude.md) 페이지에는 원클릭 커넥터 링크가 있습니다. 이 링크를 클릭하면 이름과 URL이 미리 입력된 **Add custom connector** 대화상자가 열리므로, 확인하고 로그인하기만 하면 됩니다.

아래에서 사용하는 클라이언트를 선택하세요. **호스팅** 서버(`https://mcp.didit.me/mcp`)는 API 키가 필요하지 않습니다. 처음 연결할 때 클라이언트가 브라우저를 열며, 그곳에서 **[Didit으로 로그인](https://docs.didit.me/ko/integration/mcp/authentication.md)**을 진행하고 권한을 승인하면 됩니다.

> [!NOTE]
>
> 원격/HTTP MCP를 아직 지원하지 않는 클라이언트(Windsurf, Zed)는 `mcp-remote` 브리지를 통해 연결합니다. 이 브리지는 stdio를 호스팅 URL로 전달하고 OAuth 핸드셰이크를 대신 처리합니다.

***

## 호스팅 서버 (권장)

> [tab] Claude Code
>
> CLI로 서버를 추가한 다음 로그인을 시작합니다:
>
> ```bash theme={null}
> claude mcp add --transport http didit https://mcp.didit.me/mcp
> ```
>
> Claude Code를 시작하고 `/mcp`를 실행합니다. 그러면 **Didit으로 로그인**을 위해 브라우저가 열립니다. 승인하면 `didit` 도구를 사용할 수 있습니다.

> [tab] Claude 웹 및 Desktop
>
> 웹: [**Didit을 Claude에 추가 →**](https://claude.ai/customize/connectors?modal=add-custom-connector\&connectorName=Didit\&connectorUrl=https://mcp.didit.me/mcp)를 클릭하고 미리 입력된 대화상자를 확인합니다.
>
> Desktop: **Settings → Connectors → Add custom connector**로 이동해 이름을 `Didit`으로 지정하고, URL을 다음으로 설정합니다:
>
> ```text theme={null}
> https://mcp.didit.me/mcp
> ```
>
> **연결**을 클릭하고 브라우저에서 **Didit으로 로그인**을 완료합니다. 그러면 채팅의 도구 메뉴에 Didit 도구가 표시됩니다.

> [tab] Cursor
>
> `~/.cursor/mcp.json`(전역) 또는 `.cursor/mcp.json`(프로젝트별)에 추가합니다:
>
> ```json theme={null}
> {
>   "mcpServers": {
>     "didit": {
>       "url": "https://mcp.didit.me/mcp"
>     }
>   }
> }
> ```
>
> 또는 **Settings → Tools & Integrations → New MCP Server**를 사용합니다. Cursor는 Dynamic Client Registration을 통해 Didit에 자체 등록하며, 처음 사용할 때 로그인을 위해 브라우저를 엽니다.

> [tab] VS Code
>
> GitHub Copilot 에이전트 모드를 사용하는 경우 `.vscode/mcp.json`을 추가합니다:
>
> ```json theme={null}
> {
>   "servers": {
>     "didit": {
>       "type": "http",
>       "url": "https://mcp.didit.me/mcp"
>     }
>   }
> }
> ```
>
> 또는 명령 팔레트에서 **MCP: Add Server**를 실행하고 **HTTP**를 선택합니다. 요청되면 로그인합니다. VS Code가 전체 `/mcp` URL을 가리키도록 설정하세요. 서버는 해당 경로에 대한 OAuth 리소스 메타데이터를 게시합니다.

> [tab] Windsurf
>
> Windsurf는 `mcp-remote` 브리지를 통해 연결합니다. `~/.codeium/windsurf/mcp_config.json`에 추가합니다:
>
> ```json theme={null}
> {
>   "mcpServers": {
>     "didit": {
>       "command": "npx",
>       "args": ["-y", "mcp-remote@latest", "https://mcp.didit.me/mcp"]
>     }
>   }
> }
> ```
>
> **Settings → Cascade → MCP Servers → Manage**를 열어 서버가 로드되었는지 확인한 다음, 브라우저에서 로그인합니다.

> [tab] Zed
>
> Zed의 `settings.json`에 컨텍스트 서버를 추가합니다:
>
> ```json theme={null}
> {
>   "context_servers": {
>     "didit": {
>       "source": "custom",
>       "command": "npx",
>       "args": ["-y", "mcp-remote@latest", "https://mcp.didit.me/mcp"]
>     }
>   }
> }
> ```
>
> Zed가 브리지를 실행하고 **Didit으로 로그인**을 위해 브라우저를 엽니다.

> [tab] 기타 클라이언트
>
> **Streamable HTTP**와 **OAuth 2.1**로 MCP를 구현한 클라이언트는 `https://mcp.didit.me/mcp`에 직접 연결할 수 있습니다. 클라이언트는 `https://mcp.didit.me/.well-known/oauth-protected-resource/mcp`에서 인증 서버를 찾고, Dynamic Client Registration으로 자신을 등록한 다음 PKCE 흐름을 실행합니다. 서버는 `/mcp`에서 `POST`만 허용합니다. 서버는 상태를 저장하지 않고 서버가 시작하는 스트림을 유지하지 않으므로, `GET`과 `DELETE`는 `405`를 반환합니다.
>
> stdio만 지원하는 클라이언트는 Windsurf 및 Zed와 같은 `mcp-remote` 브리지를 사용할 수 있습니다:
>
> ```bash theme={null}
> npx -y mcp-remote@latest https://mcp.didit.me/mcp
> ```
>
> 클라이언트 없이 서버를 테스트하려면 [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector)가 같은 URL에 연결하고 로그인 과정을 안내합니다.

> [!NOTE]
>
> **설정에 API 키가 없습니다.** 호스팅 서버는 브라우저에서 사용자를 인증하고 **사용자 본인으로** 동작합니다. 즉 사용자가 소속된 모든 조직에서 사용자의 역할에 따른 권한으로 동작합니다. [인증](https://docs.didit.me/ko/integration/mcp/authentication.md)을 참조하세요.

호스팅 서버는 `GET https://mcp.didit.me/healthz` 요청에 버전으로 응답합니다.

***

## 연결 확인

로그인한 후 클라이언트에 다음과 같이 요청합니다:

```text theme={null}
Use the Didit MCP server to call didit_context_get and list my organizations and applications.
```

에이전트는 `didit_context_get`을 호출하고 본인의 조직과 각 조직의 애플리케이션을 표시해야 합니다.
에이전트가 Didit 도구가 없다고 응답하면, 서버가 연결되지 않았거나 로그인이 완료되지 않은 것입니다. [문제 해결](https://docs.didit.me/ko/integration/mcp/advanced.md#문제-해결)을 참조하세요.

## 셀프 호스팅

호스팅 서버는 오픈 소스 저장소 [github.com/didit-protocol/mcp](https://github.com/didit-protocol/mcp)(MIT)에서 빌드됩니다. 모든 릴리스는 npm에도 [`@didit-protocol/mcp-server`](https://www.npmjs.com/package/@didit-protocol/mcp-server)로 게시되므로, npm에서 stdio 서버를 바로 실행하거나 클론한 저장소에서 두 진입점 중 하나를 빌드할 수 있습니다. 하나의 코드베이스에서 두 개의 진입점을 제공합니다:

| 진입점 | 모드 | 전송 방식 | 인증 |
| - | - | - | - |
| `dist/http.js` | 호스팅 | `MCP_PORT`(기본값 3000)의 Streamable HTTP, `POST /mcp`, `GET /healthz` | OAuth 2.1 Bearer, 토큰 인트로스펙션으로 검증 |
| `dist/index.js` | stdio(헤드리스) | MCP stdio | `DIDIT_ACCESS_TOKEN`에 담긴 사용자 액세스 토큰 |

두 모드 모두 Didit **사용자**로 동작합니다. 애플리케이션 API 키 모드는 없습니다.

**1. 클론 및 빌드**

```bash theme={null}
git clone https://github.com/didit-protocol/mcp.git && cd mcp
npm install && npm run build
```

또는 컨테이너를 빌드합니다: `docker build -t didit-mcp .`. 이미지는 `dist/http.js`를 루트가 아닌 사용자로 실행하고, 포트 3000을 노출하며, `/healthz`에 대한 상태 확인을 제공합니다.

**2. HTTP 서버 실행(OAuth)**

`.env.example`을 `.env`로 복사한 뒤 호스팅 모드 값을 입력하고 다음을 실행합니다:

```bash theme={null}
node dist/http.js
# or
docker run -p 3000:3000 --env-file .env didit-mcp
```

이 서버는 OAuth 리소스 서버 역할만 합니다. `MCP_RESOURCE_URI`에 전송 방식의 전체 공개 URL을 설정해야 합니다(예: 기본 origin이 아닌 `https://mcp.example.com/mcp`). 또한 토큰 인트로스펙션을 위해 Didit 인증 서버에 접근할 때 사용하는 자격 증명(`MCP_OAUTH_CLIENT_ID`, `MCP_OAUTH_CLIENT_SECRET`)이 필요합니다. 전체 변수 목록은 [고급 → 셀프 호스팅](https://docs.didit.me/ko/integration/mcp/advanced.md#셀프-호스팅)에 있습니다.

**3. 또는 stdio로 실행(헤드리스)**

OAuth 흐름을 실행할 수 없는 로컬 에이전트에서는 게시된 패키지를 실행하고(클론이 필요 없습니다), 환경 변수로 사용자 액세스 토큰을 전달합니다:

```bash theme={null}
DIDIT_ACCESS_TOKEN=<user-access-token> npx -y @didit-protocol/mcp-server
```

클론한 저장소에서는 `DIDIT_ACCESS_TOKEN=<user-access-token> node dist/index.js`로 같은 결과를 얻을 수 있습니다. 토큰이 없으면 에이전트는 `didit_account_login`으로 로그인할 수 있으며, 계정에 2단계 인증이 설정되어 있으면 이어서 `didit_account_verify_2fa`를 사용합니다.

단일 테넌트 환경에서는 선택 사항인 `MCP_DEFAULT_ORG`와 `MCP_DEFAULT_APP`으로 범위를 고정할 수 있습니다. Claude Code에는 다음 명령으로 등록합니다:

```bash theme={null}
claude mcp add didit-local -e DIDIT_ACCESS_TOKEN=<user-access-token> -- npx -y @didit-protocol/mcp-server
```

Cursor의 `mcp.json`에는 다음과 같이 등록합니다:

```json theme={null}
{
  "mcpServers": {
    "didit-local": {
      "command": "npx",
      "args": ["-y", "@didit-protocol/mcp-server"],
      "env": { "DIDIT_ACCESS_TOKEN": "<user-access-token>" }
    }
  }
}
```

오픈 소스 stdio 서버에는 호스팅 서버의 Travel Rule, 마켓플레이스, 사기 네트워크, 거래 SDK token 도구가 포함되지 않습니다. 워크플로 빌드를 제외한 컴플라이언스 도구도 포함되지 않습니다.
대신 `didit_org_top_up`, `didit_org_reveal_application_api_key`와 다섯 개의 계정 설정 도구(`didit_account_register`, `didit_account_verify_email`, `didit_account_resend_otp`, `didit_account_login`, `didit_account_verify_2fa`)가 추가됩니다. 이 도구들은 자격 증명을 인수로 받으므로 원격 커넥터에서는 제공되지 않습니다. stdio에서는 서버가 사용자의 파일 시스템을 공유하므로, 파일을 받는 도구도 `*_path` 인수를 허용합니다.

***

## 다음 단계

> [card] [인증](https://docs.didit.me/ko/integration/mcp/authentication.md)
>
> 로그인, 범위, 역할.

> [card] [도구 레퍼런스](https://docs.didit.me/ko/integration/mcp/tools.md)
>
> 에이전트가 호출할 수 있는 모든 도구.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.