AI 에이전트를 사용해 세 가지 정확한 질문을 하면 문서 메타데이터를 감사할 수 있으며, 에이전트는 GroupDocs.Metadata.Mcp를 통해 로컬 파일을 읽어 답변합니다. 일반적인 첫 번째 프롬프트는 다음과 같습니다:

이 폴더의 파일들 중에서 작성자(author)와 마지막 수정자(last‑modified‑by)로 표시된 사람은 누구이며, 그들이 가지고 있는 회사 이름은 무엇입니까?

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

메타데이터 감사를 도구가 필요하고 모델만으로는 안 되는 이유

언어 모델은 메타데이터를 볼 수 없습니다. 모델은 사용자가 붙여넣은 텍스트만 인식하며, 작성자 필드, 회사 이름 및 GPS 좌표는 해당 텍스트에 포함되지 않습니다. 도구를 호출하지 않고 “누가 작성했나요?” 라고 답하는 에이전트는 추측에 불과하며, 그 추측은 자신 있게 들립니다. GroupDocs.Metadata.Mcp는 Claude, Cursor, GitHub Copilot, VS Code 및 Windsurf에게 파일의 실제 속성을 제공하는 MCP 서버입니다: 에이전트가 도구를 호출하고 JSON을 받아서 그 내용을 보고합니다. 파일은 사용자의 머신에 있는 폴더에 그대로 남고, 속성만 모델로 전달됩니다.

아래 세 가지 질문은 대부분의 프라이버시 놀라움을 설명해 줍니다. 각각은 독립적인 프롬프트로 사용할 수 있습니다.

질문 1: 작성자는 누구인가요?

이 폴더의 파일들 중에서 작성자와 마지막 수정자로 표시된 사람은 누구입니까?

에이전트는 필터와 함께 search_metadata를 호출하며, 이는 전체 속성 집합이 아니라 일치하는 속성만 반환합니다. 도구 설명에는 사용자가 전체 집합이 아닌 특정 속성에 대해 물을 때 사용하라고 적혀 있습니다. 필터는 category(예: person), nameContains, valueContains이며 모두 대소문자를 구분하지 않습니다. 결과는 count와 이름, 값, 카테고리를 포함하는 properties 배열을 가진 JSON 객체입니다.

왜 중요한가: 작성자 필드에는 실제 사람 이름이 들어 있는 경우가 많고, 마지막 수정자 필드에는 전 직원의 이름이 들어 있을 수 있습니다. 이 정보는 페이지에 표시되지 않습니다.

질문 2: 파일에 기록된 회사는 무엇인가요?

이 파일들 중 어떤 속성이라도 아직 이전 회사 이름을 포함하고 있습니까?

이는 다시 search_metadata를 사용하며, valueContains에 해당 이름을 설정합니다. 파일당 한 번 호출하고, count가 0이면 일치하는 것이 없다는 의미입니다. 회사 필드는 템플릿에서 상속되는 경우가 많아 오늘 작성된 문서에도 이전 고용주의 이름이 남아 있을 수 있습니다. 하나의 파일에 대한 전체 정보를 필요로 할 때는 에이전트가 read_metadata를 사용하며, 이는 모든 속성을 JSON으로 반환합니다(평가 모드에서는 처음 5개): 작성자, 제목, 날짜 및 사용자 정의 속성.

질문 3: 이 사진들에 GPS 좌표가 포함되어 있나요?

이 사진들 중 어느 것이 GPS 좌표를 가지고 있나요? 위치는 어디인가요?

search_metadata의 gps 카테고리를 사용하면 바로 답을 얻을 수 있습니다. 평가 모드에서는 EXIF GPS 데이터가 제공되지 않으므로 count가 0이라고 해서 아무것도 없다고 단정할 수 없습니다; 먼저 get_license_status를 확인하세요. 집에서 촬영한 사진을 그대로 공개하는 것은 위치 유출의 전형적인 사례이며, 감사 프롬프트를 사용하는 것이 각 이미지의 속성을 수동으로 여는 것보다 빠릅니다. 파일이 이미지가 아니라면 get_document_info를 사용해 유형, 크기, 페이지 수 및 암호화 상태를 간단히 확인할 수 있으며 속성을 나열하지는 않습니다.

예시 세션 (축약)

You:    Does any property in contract-2024.docx still contain "Northwind"?
Agent:  [calls search_metadata: valueContains = "Northwind"]
Agent:  1 match. Company = "Northwind Traders" (category: corporate).

이는 흐름을 보여주는 예시이며, 실제 캡처된 스크린샷이 아닙니다. 도구 이름과 응답 형식은 도구 레퍼런스를 따릅니다.

평가 모드에서 감사가 알려주지 못하는 내용

라이선스가 없으면 서버는 평가 모드로 실행되며, 문서에 명시된 제한은 정확합니다: 첫 5개의 문서 속성만 읽을 수 있고, XMP와 EXIF는 부분적으로 사용할 수 없습니다. XMP는 첫 두 스키마만 노출하고, EXIF에서는 GPS 데이터와 이미지 썸네일이 제공되지 않습니다. 응답에 이 점이 언급되지 않으므로, “민감한 내용이 발견되지 않았다”는 감사 결과는 단순히 읽기를 중단했을 가능성이 있습니다. 컴플라이언스 검사를 위해서는 평가 모드에서의 감사는 설계상 불완전합니다.

어떤 결과를 신뢰하기 전에 다음을 물어보세요:

메타데이터 서버의 라이선스 상태는 무엇인가요?

에이전트는 get_license_status를 호출하여 모드가 evaluation, licensed 또는 metered 중 어느 것인지 보고하며, 어떠한 변경도 하지 않습니다. 전체 기능을 사용하려면 GroupDocs에서 제공하는 30일 무료 임시 라이선스를 이용할 수 있습니다.

자주 묻는 질문

Claude가 PDF에서 숨겨진 작성자 정보를 업로드 없이 확인할 수 있나요?
예, GroupDocs.Metadata.Mcp가 로컬 머신에서 실행될 때 가능합니다. 클라이언트는 stdio를 통해 로컬 프로세스로 서버를 시작하고, 파일은 저장 폴더에서 읽히며, 반환된 속성만 모델에 전달됩니다.

PDF와 DOCX 파일에서 숨겨진 메타데이터를 찾아 문서 메타데이터 컴플라이언스 검사를 수행하려면 어떻게 해야 하나요?
에이전트에게 read_metadata 또는 search_metadata를 사용해 각 파일을 읽거나 검색하도록 요청하고, get_license_status에서 라이선스 모드를 기록하세요. 평가 모드에서 수행된 컴플라이언스 검사는 5개의 속성만 읽을 수 있기 때문에 불완전합니다.

왜 내 감사 결과에 속성이 몇 개만 표시되나요?
아마도 평가 모드에 있을 가능성이 높으며, 이 모드에서는 처음 5개의 문서 속성만 반환됩니다. get_license_status를 확인하고 라이선스 파일이나 메터링 키를 적용하세요.

설정 방법

Docker 또는 .NET 10 SDK를 사용해 서버를 실행합니다:

dnx GroupDocs.Metadata.Mcp --yes

GROUPDOCS_MCP_STORAGE_PATH를 파일이 저장된 폴더로 설정한 뒤, 클라이언트에 서버를 등록합니다. 클라이언트별 구성 방법은 문서를 참고하세요.

더 깊이 알아보기