MCP 서버

Model Context Protocol (MCP)는 AI 에이전트가 외부 도구 및 데이터 소스와 통신하게 해주는 개방형 표준입니다. DynoTable은 MCP 서버 역할을 할 수 있습니다 — 그래서 터미널이나 편집기에서 실행되는 에이전트(Claude Code, Cursor, Codex 등)가 스키마와 결과를 채팅으로 주고받으며 복사하는 대신, 사용자의 DynamoDB 테이블을 직접 다룰 수 있습니다.

연결되면 에이전트는 내장 어시스턴트가 사용하는 것과 동일한 게이팅된 도구 모음을 — 스키마 읽기, 쿼리와 단일 항목 읽기 실행, 검토를 위한 변경 스테이징, 뷰 열기, 내보내기 — 로컬의 루프백 전용 HTTP 엔드포인트를 통해 얻습니다. 에이전트는 AWS 자격 증명을 결코 보유하지 않은 채로 테이블을 발견하고, 쿼리하며, 편집을 제안합니다.

이 기능은 기본적으로 꺼져 있습니다. 켜는 것과 모든 개별 연결은 명시적으로 사용자의 통제 아래 있습니다 — 아래 보안을 참고하세요.

서버 켜기

Settings → MCP Server를 열고 켭니다. DynoTable은 127.0.0.1에 바인딩된 서버(루프백 전용 — 다른 컴퓨터에서는 절대 접근 불가)를 시작하고, 연결 명령을 보여줍니다.

Settings → MCP Server: 로컬 루프백 포트에서 실행 중인 서버, 연결된 클라이언트 목록과 각 액세스 레벨.
Settings → MCP Server: 로컬 루프백 포트에서 실행 중인 서버, 연결된 클라이언트 목록과 각 액세스 레벨.

프로필 노출

서버가 켜졌지만, 프로필을 노출하기 전까지는 어떤 에이전트도 연결할 수 없습니다. Settings에서 프로필의 MCP 섹션을 열고 Expose via MCP를 켭니다. 노출된 각 프로필은 자체 연결 명령을 가집니다 — 그래서 프로필당 하나의 연결을 구성할 수 있고(예: dynotable-devdynotable-prod), 각각은 그 프로필의 자격 증명과 리전에 하드 격리됩니다. 연결은 자신이 바인딩된 프로필의 데이터만 봅니다.

AWS 기반 프로필과 로컬(DynamoDB-Local) 프로필 모두 노출할 수 있습니다. 로컬 프로필을 노출하면 에이전트가 MCP를 통해 사용자의 로컬 시드 테이블을 다룰 수 있습니다 — 개발에 유용합니다. (같은 포트의 두 로컬 프로필은 동일한 로컬 데이터베이스를 공유하므로, 같은 테이블을 봅니다.)

Expose via MCP가 켜진 프로필의 MCP 섹션 — 프로필별 연결 블록이 클라이언트에 추가할 엔드포인트를 보여줍니다.
Expose via MCP가 켜진 프로필의 MCP 섹션 — 프로필별 연결 블록이 클라이언트에 추가할 엔드포인트를 보여줍니다.

클라이언트 연결

DynoTable은 streamable HTTP로 MCP를 구사하므로, MCP를 지원하는 모든 에이전트가 연결할 수 있습니다. 노출된 각 프로필은 자체 MCP 섹션에 자신의 연결 명령을 보여줍니다 — 거기서 복사하세요. 명령은 http://127.0.0.1:<port>/mcp?profile=<slug>를 가리킵니다: ?profile=<slug>는 사용자가 원하는 프로필을 DynoTable에 알려주고 승인 프롬프트에서 그것을 미리 선택합니다(힌트일 뿐이며 — 사용자는 여전히 확인합니다). 서버 이름에 프로필 슬러그를 사용하면(예: dynotable-prod) 두 프로필의 연결이 구분된 채로 유지됩니다.

아래 예시는 슬러그로 prod를 사용합니다. 사용자 프로필의 슬러그와 Settings의 실제 포트로 대체하세요.

프로젝트에서 다음을 실행하세요 — 프로필의 MCP 섹션에 표시되는 바로 그 명령입니다:

claude mcp add --transport http dynotable-prod "http://127.0.0.1:<port>/mcp?profile=prod"

두 번째 프로필을 연결하려면, 그 프로필의 명령(자체 슬러그)으로 반복하세요. 연결한 후에는 클라이언트가 새 서버를 인식하도록 재시작하거나 다시 로드하세요.

연결 승인

클라이언트가 처음 연결할 때, DynoTable은 앱 안에서 동의 프롬프트를 보여줍니다. 연결하는 클라이언트의 이름을 알려주고, 연결이 어느 프로필에 바인딩될지 고르게 하며(?profile= 힌트에서 미리 선택되고, 노출한 프로필로 제한됨), 스코프를 부여할지 — 아니면 거부할지 — 묻습니다. 사용자가 승인하기 전까지는 아무것도 노출되지 않습니다.

앱 내 동의 프롬프트: 연결하는 클라이언트가 액세스를 요청하면, 세 가지 스코프 중 하나를 부여하거나 거부합니다.
앱 내 동의 프롬프트: 연결하는 클라이언트가 액세스를 요청하면, 세 가지 스코프 중 하나를 부여하거나 거부합니다.

스코프

스코프는 연결이 어떤 도구를 보고 사용할 수 있는지를 결정합니다. 누적적이며 — 각 단계는 이전 단계를 포함합니다:

  • Read only — 스키마를 읽고, 쿼리를 실행하며, 항목을 읽습니다. 변경 없음.
  • Read & stage — Read only의 모든 것에 더해, 사용자가 검토하고 커밋할 변경을 스테이징합니다(에이전트는 DynamoDB에 직접 쓰지 않습니다 — 스테이징을 거칩니다).
  • Full access — 위의 모든 것에 더해, 뷰 열기, 필터 설정, 결과 내보내기. 쓰기는 여전히 스테이징을 거칩니다 — Full access에서도 에이전트는 DynamoDB에 직접 쓸 수 없습니다.

연결은 사용자가 프롬프트에서 승인한 프로필에 바인딩되며 — 그 자격 증명과 리전은 연결의 수명 동안 고정되므로, 정확히 그 프로필의 데이터를 읽고 (쓰기를 스테이징)합니다. 프롬프트에 표시된 클라이언트 이름은 연결하는 에이전트가 스스로 보고한 것이므로, 실제 게이트는 이름이 아니라 사용자가 승인하는 프로필과 스코프입니다.

승인된 프로필이 MFA를 사용하면, 에이전트는 자체 세션에서 직접 일회용 코드를 요청받습니다 — DynoTable로 돌아갈 필요가 없습니다. (SSO를 통해 로그인하는 프로필은 여전히 DynoTable에서 그 로그인을 완료합니다.)

연결 관리

승인된 모든 클라이언트는 Settings → MCP Server에 나열됩니다. 언제든지 그 중 어느 것이든 해지할 수 있습니다 — 해지된 클라이언트는 다음 요청에서 차단됩니다. 프로필 노출을 해제하면 그 연결도 즉시 해지됩니다. 서버를 끄면 완전히 중지됩니다.

보안

  • 루프백 전용. 서버는 127.0.0.1에 바인딩되므로, 사용자의 컴퓨터 밖에서는 아무것도 접근할 수 없습니다.
  • 기본 꺼짐, 연결별 승인. 사용자가 서버를 켜고 그리고 선택한 스코프로 연결을 승인하기 전까지는 어떤 에이전트도 액세스하지 못합니다.
  • 자격 증명은 로컬에 유지됩니다. 연결은 이 컴퓨터의 기존 AWS 프로필을 사용하며(AWS에 연결), 자격 증명은 절대 에이전트에게 전송되지 않습니다.
  • 연결당 하나의 프로필. 각 연결은 사용자가 승인한 단일 프로필에 고정됩니다 — 다른 프로필의 테이블이나 자격 증명에는 절대 접근할 수 없습니다.
  • 쓰기는 검토를 거칩니다. Full access에서도 변경은 사용자가 커밋하도록 스테이징됩니다 — 에이전트는 DynamoDB에 스스로 쓸 수 없습니다.
  • 해지 가능. 언제든지 클라이언트를 해지하거나 서버를 끌 수 있습니다.

업데이트됨