MCP 서버

Model Context Protocol (MCP)은 AI 에이전트가 외부 도구 및 데이터 소스와 대화할 수 있게 해 주는 개방형 표준입니다. DynoTable은 MCP 서버 역할을 할 수 있습니다 — 그래서 터미널이나 편집기에서 실행 중인 에이전트(Claude Code, Cursor, Codex 등)가 schema와 결과를 채팅창에 복사해 오갈 필요 없이 여러분의 DynamoDB 테이블을 직접 다룰 수 있습니다.

연결되면 에이전트는 내장 어시스턴트의 통제된 도구 모음을 투영해 받습니다 — schema 읽기, 쿼리 실행과 단일 항목 읽기, 검토용 변경 스테이징, 뷰 열기, 내보내기 — 모두 로컬 루프백 전용 HTTP endpoint를 통해서입니다. 일부 앱 내부 전용 도구는 앱에 남으며 노출되지 않습니다. 에이전트는 여러분의 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 섹션 — 프로필별 연결 블록이 클라이언트에 추가할 endpoint를 보여 줍니다.
“Expose via MCP”가 켜진 프로필의 MCP 섹션 — 프로필별 연결 블록이 클라이언트에 추가할 endpoint를 보여 줍니다.

클라이언트 연결

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 — schema 읽기, 쿼리 실행, 항목 읽기. 변경은 없습니다.
  • 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에 쓸 수 없습니다.
  • 취소 가능. 원할 때 언제든 클라이언트 권한을 취소하거나 서버를 끌 수 있습니다.

업데이트됨