문서에서 민감한 데이터를 AI 에이전트에게 자연어로 요청하면 로컬에서 파일 내부에서 레드액션이 실행됩니다. GroupDocs.Redaction.Mcp를 Claude Desktop, Claude Code, Cursor 또는 GitHub Copilot에 연결하면 한 번의 프롬프트만으로 충분합니다:

case-file.pdf의 모든 이메일 주소를 레드액션하고 저장된 파일명을 알려 주세요.

구성 및 문제 해결이 포함된 단계별 버전은 문서에 있습니다: AI 에이전트를 사용하여 문서에서 민감한 데이터를 레드액션하는 방법.

채팅 모델이 문서를 바로 레드액션하지 못하는 이유

문서를 읽고 새 문서를 작성하는 언어 모델은 레드액션이 아니라 재작성(rewrite)을 수행합니다. 재작성은 발생을 놓치거나, 요청하지 않은 문구를 변경할 수 있으며 원본 파일을 전혀 건드리지 않습니다. PDF 뷰어에서 검은 사각형을 그리는 것도 비슷한 결함이 있습니다: 사각형 아래 텍스트는 여전히 파일에 존재하며 복사될 수 있습니다. 에이전트는 제거 작업을 직접 수행해서는 안 됩니다. 패턴을 제안하고 도구를 호출해야 하며, 엔진이 문서 자체에서 일치하는 텍스트를 교체해야 합니다.

이것이 GroupDocs.Redaction.Mcp에서의 작업 분담입니다. 에이전트는 패턴을 제안하고 호출을 주도합니다. 엔진은 이를 정확히 적용합니다. 무엇이 민감한지 판단하는 분류기가 없으므로 동작을 검토할 수 있으며, 무엇이 민감한지에 대한 결정은 사용자에게 남아 있습니다.

방법 1: 패턴으로 텍스트 교체

정규식으로 설명할 수 있는 모든 경우에 사용하세요: 이메일 주소, 주민등록번호, 전화번호, 계좌 번호, 클라이언트 이름 등. 에이전트는 redact_text를 호출하여 문서에서 패턴과 일치하는 텍스트를 교체하고 레드액션된 복사본을 저장합니다. 원본은 그대로 유지됩니다.

case-file.pdf에서 \b\d{3}-\d{2}-\d{4}\b와 일치하는 모든 내용, 즉 미국 사회보장번호를 레드액션하세요. 실행하기 전에 패턴을 보여 주세요.

먼저 패턴을 확인하도록 요청하는 것이 추가적인 대화를 할 가치가 있습니다. 읽어본 정규식은 방어 가능한 레드액션이며, 느슨한 정규식은 의도보다 더 많이 제거하고, 엄격한 정규식은 데이터를 남길 수 있습니다. replacement 매개변수는 기본값이 [REDACTED]이며, 이는 출력 결과를 검토하기 쉽게 합니다.

예상 결과: 출력 폴더에 레드액션된 복사본이 생성되고, 저장된 파일명을 알려 주는 에이전트 메시지가 표시됩니다.

방법 2: 텍스트 패턴이 도달할 수 없는 영역 정리

본문 텍스트를 정리하고 여백 주석 및 작성자 필드에 여전히 사람 이름이 남아 있는 파일을 배포하는 것이 레드액션이 실패하는 가장 일반적인 방법입니다. 민감한 데이터는 네 곳에 존재하며, 각각에 맞는 도구가 있습니다:

데이터 위치 도구
본문 텍스트 redact_text
스캔, 사진, 서명 redact_image_area
주석 및 스티키 노트 redact_annotations
속성의 작성자, 회사, 날짜 erase_metadata

case-file.docx의 모든 주석을 삭제하고, 작성자, 회사 및 날짜 속성을 지우세요. 각 단계는 이전 단계에서 생성된 파일에 적용합니다.

redact_annotations는 주석 텍스트를 교체하거나 deleteAll 옵션으로 주석을 완전히 제거할 수 있습니다. erase_metadata는 Author,Company,CreatedTime와 같은 쉼표 구분 필드 목록을 받아들이며 기본값은 All입니다. 체인 방식 지시가 중요합니다: 각 호출은 새 파일을 작성하므로, 원본을 두 번째 단계에 전달하는 에이전트는 첫 번째 단계 결과를 버리게 됩니다.

예상 결과: 체인의 마지막 단계에서 생성된 최종 파일이며, 모든 중간 파일 이름이 대화 기록에 표시됩니다.

방법 3: 프롬프트 전에 레드액션하고, 값이 대화에 노출되지 않게 하기

Pre-LLM 레드액션은 민감한 문자열이 처음부터 호스팅된 모델에 도달하지 않음을 의미합니다. 문서는 사용자 머신에 남아 있지만 대화 내용은 그렇지 않습니다. 클라우드 호스팅 모델을 사용할 경우, 에이전트가 말하는 내용이 모델 제공자에게 전송되며, 레드액션 작업에서는 제거하려는 문자열도 포함될 수 있습니다. “I redacted jane.smith@example.com"은 보호하려던 주소를 그대로 전송한 셈입니다.

표준 패턴을 사용해 클라이언트 이름을 레드액션하세요. 응답에 일치한 텍스트를 반복하지 마세요.

레드액션 도구는 일치 횟수가 아니라 저장된 파일명을 반환합니다. 에이전트의 답변에 숫자가 포함되어 있다면 이는 레드액션 전 텍스트를 검색한 결과 등 자체 해석이며, 도구 출력이 아니라 교차 확인용으로만 사용하세요. 가장 강력한 설정을 위해서는 로컬 모델을 실행해 어떠한 데이터도 경계를 벗어나지 않게 하며, 이는 문서 레드액션 자동화를 완전 로컬에서 수행할 수 있게 합니다.

예상 결과: 응답에 저장된 파일명이 포함되고, 대화 기록에는 민감한 문자열이 없습니다.

예시 세션 (요약)

사용자:    case-file.pdf의 모든 이메일 주소를 레드액션하고 저장된 파일명을 알려 주세요.
에이전트:  다음 패턴을 사용하겠습니다: [\w.+-]+@[\w-]+\.[\w.]+
        -> redact_text(file: case-file.pdf, pattern: ..., replacement: "[REDACTED]")
에이전트:  case-file_redacted.pdf 파일을 저장했습니다.
사용자:    case-file.docx에 대해 모든 주석을 삭제하고 문서 속성을 정리하세요.
에이전트:  -> redact_annotations(file: case-file.docx, deleteAll: true)
        출력 파일을 저장했습니다.
        -> erase_metadata(file: the file saved by the previous step, fields: "All")
        출력 파일을 저장했습니다.

평가 모드의 제한은 무엇인가요?

중요한 실행 전에 이를 명확히 밝혀야 합니다. 라이선스가 없으면 서버는 평가 모드로 동작합니다: 프로세스당 하나의 문서, 하나의 레드액션, 최대 4번 교체, 그리고 체험 배지 포함. 10번 나타나는 패턴은 4번만 레드액션되고 6번은 남아 있어 출력이 깔끔해 보일 수 있습니다. 이 제한은 데모용입니다. 라이선스가 없는 실행 결과를 절대로 배포하지 말고, 먼저 get_license_status를 호출해 “레드액션 서버의 라이선스 상태는 무엇인가요?” 라고 물어보세요.

결과가 GDPR과 같은 규정에 부합하는지는 사용자에게 달린 판단입니다. 서버는 사용자가 지정한 파일에서 지정한 내용을 제거합니다.

  • PDF on Linux. Linux(도커 이미지 포함)에서는 현재 redact_image_area와 erase_metadata가 PDF 파일에서 작동하지 않습니다(PDF 엔진의 이미지 처리는 System.Drawing에 의존하는데, 이는 .NET이 Windows에서만 지원합니다); 두 도구는 Word 문서에서는 작동하고, redact_text는 PDF에서 작동합니다. Windows에서 dnx를 사용해 PDF 영역 레드액션 및 메타데이터 삭제를 실행하세요.

FAQ

Claude가 PDF에서 PII를 업로드 없이 레드액션할 수 있나요? 예. MCP 서버는 로컬 stdio를 통해 AI 클라이언트의 자식 프로세스로 실행되며, 사용자가 지정한 폴더에서 파일을 읽고 씁니다. 에이전트가 채팅에서 말하는 모든 내용은 여전히 클라우드 모델 제공자에게 전송된다는 점을 유념하세요.

에이전트가 무엇이 민감한지 결정하나요? 아니요. 에이전트는 패턴을 제안하고 사용자가 검토합니다. 엔진은 제공된 내용을 정확히 적용합니다.

설치 방법은? .NET 10 SDK를 사용해 dnx GroupDocs.Redaction.Mcp --yes를 실행하고, GROUPDOCS_MCP_STORAGE_PATH를 문서가 들어 있는 폴더로 설정합니다. 다른 옵션은 Docker이며, ghcr.io/groupdocs-redaction/redaction-net-mcp를 사용합니다.

더 깊이 파보기