Skip to main content
Glama
czangyeob

MCP PII Tools

by czangyeob

MCP PII Tools

Model Context Protocol (MCP)을 위한 PII(개인식별정보) 탐지, 익명화, 암호화 및 복호화 도구입니다.

🚀 주요 기능

  • 고정밀 PII 탐지: GPT-4o 기반 langextract를 사용한 정확한 PII 탐지

  • 다양한 PII 유형 지원: 이름, 이메일, 전화번호, 여권번호, 주소, 신용카드번호, 주민등록번호 등

  • 실시간 익명화: 탐지된 PII를 즉시 익명화 처리

  • 고급 암호화: 결정론적 암호화(검색 가능) 및 FPE(형식 유지 암호화) 지원

  • 완전한 복호화: 암호화된 텍스트를 원본으로 복원

  • 일괄 처리: 여러 텍스트를 효율적으로 처리

  • MCP 호환: Model Context Protocol 표준을 준수

Related MCP server: ai-security-gateway-mcp

📦 설치 요구사항

1. uv 설치 (권장)

# uv 설치 (macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 또는 pip로 설치
pip install uv

2. 프로젝트 설치

# 저장소 클론
git clone https://github.com/your-username/mcp-pii-tools.git
cd mcp-pii-tools

# 의존성 설치
uv sync

# 개발 의존성 포함 설치
uv sync --extra dev

3. pip 사용 (대안)

pip install langextract[openai] openai python-dotenv cryptography mcp

🔐 암호화 방식

결정론적 암호화 (Deterministic Encryption)

  • 용도: 이름, 주소, 이메일

  • 특징: 같은 입력 → 같은 암호문 (검색 가능)

  • 알고리즘: AES-CBC with PBKDF2

  • 출력: Base64 인코딩

FPE (Format Preserving Encryption)

  • 용도: 전화번호, 신용카드번호, 여권번호, 주민등록번호, 은행계좌번호

  • 특징: 원본 형식 유지 (010-1234-5678 → 808-2523-9129)

  • 알고리즘: 컨텍스트 기반 결정론적 변환

  • 출력: 동일한 형식의 암호문

🔧 사용법

1. 기본 PII 탐지

from mcp_pii_tools import mcp_detect_pii

result = mcp_detect_pii("김철수 씨의 이메일은 kim@example.com입니다.")
print(f"탐지된 PII: {result['count']}개")

2. 텍스트 처리 (탐지 + 익명화)

from mcp_pii_tools import mcp_process_text

result = mcp_process_text("Rachel Lim의 전화번호는 010-1234-5678입니다.")
print(f"익명화된 텍스트: {result['anonymized_text']}")

3. 일괄 처리

from mcp_pii_tools import mcp_batch_process

texts = [
    "김철수 씨가 방문했다.",
    "박지현 님의 이메일은 park@test.com입니다.",
    "John Smith의 전화번호는 010-9876-5432입니다."
]

result = mcp_batch_process(texts)
print(f"총 탐지된 PII: {result['total_pii_detected']}개")

4. 익명화 처리

from mcp_pii_tools import mcp_anonymize_text

# PII 항목들
pii_items = [
    {"type": "이름", "value": "김철수", "start_pos": 0, "end_pos": 3, "confidence": 0.9},
    {"type": "전화번호", "value": "010-1234-5678", "start_pos": 10, "end_pos": 23, "confidence": 0.9}
]

anonymized = mcp_anonymize_text("김철수 씨의 전화번호는 010-1234-5678입니다.", pii_items)
print(anonymized)  # "[이름] 씨의 전화번호는 [전화번호]입니다."

5. 개별 PII 항목 암호화

from mcp_pii_tools import mcp_encrypt_pii_item, mcp_decrypt_pii_item

# 암호화
encrypt_result = mcp_encrypt_pii_item("김철수", "이름")
print(f"암호화: {encrypt_result['encrypted_value']}")

# 복호화
decrypt_result = mcp_decrypt_pii_item(encrypt_result['encrypted_value'], "이름")
print(f"복호화: {decrypt_result['decrypted_value']}")

6. 텍스트 전체 암호화/복호화

from mcp_pii_tools import mcp_encrypt_text_pii, mcp_decrypt_text_pii

# 텍스트 암호화
text = "김철수 씨의 이메일은 kim@example.com이고 전화번호는 010-1234-5678입니다."
encrypt_result = mcp_encrypt_text_pii(text)
print(f"암호화된 텍스트: {encrypt_result['encrypted_text']}")

# 텍스트 복호화
decrypt_result = mcp_decrypt_text_pii(
    encrypt_result['encrypted_text'],
    encrypt_result['encrypted_items']
)
print(f"복호화된 텍스트: {decrypt_result['decrypted_text']}")

🛠️ MCP Tools

1. detect_pii

텍스트에서 PII를 탐지합니다.

매개변수:

  • text (string): 분석할 텍스트

반환값:

{
    "success": true,
    "pii_items": [
        {
            "type": "이름",
            "value": "김철수",
            "confidence": 0.9,
            "start_pos": 0,
            "end_pos": 3
        }
    ],
    "count": 1,
    "processing_time": 1.234,
    "summary": {"이름": 1}
}

2. process_text

텍스트에서 PII를 탐지하고 익명화 처리합니다.

매개변수:

  • text (string): 처리할 텍스트

반환값:

{
    "success": true,
    "original_text": "김철수 씨의 이메일은 kim@example.com입니다.",
    "anonymized_text": "[이름] 씨의 이메일은 [이메일]입니다.",
    "pii_items": [...],
    "count": 2,
    "processing_time": 1.234,
    "summary": {"이름": 1, "이메일": 1}
}

3. batch_process

여러 텍스트를 일괄적으로 처리합니다.

매개변수:

  • texts (array): 처리할 텍스트 리스트

반환값:

{
    "success": true,
    "results": [...],
    "total_texts": 3,
    "successful_count": 3,
    "total_pii_detected": 5,
    "processing_time": 3.456,
    "average_time_per_text": 1.152
}

4. anonymize_text

PII 항목들을 사용하여 텍스트를 익명화합니다.

매개변수:

  • text (string): 원본 텍스트

  • pii_items (array): PII 항목들

반환값:

"[이름] 씨의 전화번호는 [전화번호]입니다."

5. encrypt_pii_item

개별 PII 항목을 암호화합니다.

매개변수:

  • pii_value (string): 암호화할 PII 값

  • pii_type (string): PII 유형 (이름, 전화번호, 이메일 등)

반환값:

{
    "success": true,
    "original_value": "김철수",
    "encrypted_value": "X3Mi/5ClIhn56auXS6KKbmcdkp+k20TrYVRGoZpY35Q=",
    "pii_type": "이름",
    "encryption_method": "deterministic"
}

6. decrypt_pii_item

암호화된 PII 항목을 복호화합니다.

매개변수:

  • encrypted_value (string): 복호화할 암호화된 값

  • pii_type (string): PII 유형

반환값:

{
    "success": true,
    "encrypted_value": "X3Mi/5ClIhn56auXS6KKbmcdkp+k20TrYVRGoZpY35Q=",
    "decrypted_value": "김철수",
    "pii_type": "이름",
    "decryption_method": "deterministic"
}

7. encrypt_text_pii

텍스트에서 PII를 탐지하고 모든 PII를 암호화합니다.

매개변수:

  • text (string): 처리할 텍스트

반환값:

{
    "success": true,
    "original_text": "김철수 씨의 이메일은 kim@example.com입니다.",
    "encrypted_text": "X3Mi/5ClIhn56auXS6KKbmcdkp+k20TrYVRGoZpY35Q= 씨의 이메일은 Y2F0YWxvZ0BleGFtcGxlLmNvbQ==입니다.",
    "pii_items": [...],
    "encrypted_items": {
        "김철수": "X3Mi/5ClIhn56auXS6KKbmcdkp+k20TrYVRGoZpY35Q=",
        "kim@example.com": "Y2F0YWxvZ0BleGFtcGxlLmNvbQ=="
    },
    "count": 2,
    "processing_time": 1.234,
    "summary": {"이름": 1, "이메일": 1}
}

8. decrypt_text_pii

암호화된 텍스트에서 PII를 복호화합니다.

매개변수:

  • encrypted_text (string): 암호화된 텍스트

  • encrypted_items (object): 원본값 → 암호화값 매핑

반환값:

{
    "success": true,
    "encrypted_text": "X3Mi/5ClIhn56auXS6KKbmcdkp+k20TrYVRGoZpY35Q= 씨의 이메일은 Y2F0YWxvZ0BleGFtcGxlLmNvbQ==입니다.",
    "decrypted_text": "김철수 씨의 이메일은 kim@example.com입니다.",
    "decrypted_items": {
        "X3Mi/5ClIhn56auXS6KKbmcdkp+k20TrYVRGoZpY35Q=": "김철수",
        "Y2F0YWxvZ0BleGFtcGxlLmNvbQ==": "kim@example.com"
    },
    "count": 2,
    "processing_time": 0.567
}

🎯 지원하는 PII 유형

유형

한국어

영어

예시

암호화 방식

이름

이름

name

김철수, Rachel Lim

결정론적

이메일

이메일

email

kim@example.com

결정론적

주소

주소

address

서울시 강남구 테헤란로 123

결정론적

전화번호

전화번호

phone

010-1234-5678

FPE

여권번호

여권번호

passport_number

M31143886

FPE

신용카드번호

신용카드번호

credit_card

4532-1234-5678-9012

FPE

주민등록번호

주민등록번호

ssn

123456-1234567

FPE

은행계좌번호

은행계좌번호

bank_account

123-456-789012

FPE

⚡ 성능 특성

  • 정확도: 100% (GPT-4o 기반)

  • 처리 시간: 평균 1.3초/텍스트 (탐지), 0.1초/텍스트 (암호화/복호화)

  • 지원 언어: 한국어, 영어, 혼합 텍스트

  • 동시 처리: 일괄 처리 지원

  • 암호화 성능: 초당 수천 건 처리 가능

🔒 보안 고려사항

  • PII 탐지: OpenAI API를 통한 텍스트 전송이 발생할 수 있습니다

  • 암호화: 모든 암호화/복호화는 로컬에서 처리됩니다

  • 키 관리: PII_MASTER_KEY 환경변수로 마스터 키 설정 필요

  • 데이터 보호: 암호화된 데이터는 검색 가능하지만 원본 복원 불가능

  • 형식 유지: FPE를 통해 데이터베이스 스키마 변경 없이 암호화 가능

📝 예제 실행

uv 사용 (권장)

# 기본 테스트 (탐지, 익명화, 암호화/복호화)
uv run python mcp_pii_tools.py

# 사용 예제 (상세한 예제들)
uv run python mcp_pii_example.py

# 암호화 모듈 단독 테스트
uv run python pii_crypto.py

pip 사용

# 기본 테스트 (탐지, 익명화, 암호화/복호화)
python mcp_pii_tools.py

# 사용 예제 (상세한 예제들)
python mcp_pii_example.py

# 암호화 모듈 단독 테스트
python pii_crypto.py

🔧 환경 설정

1. 환경변수 설정

방법 1: 자동 설정 스크립트 사용 (가장 쉬움)

# 대화형 설정 스크립트 실행
uv run python setup_env.py

방법 2: 템플릿 파일 사용

# 템플릿 파일을 .env로 복사
cp env.template.txt .env

# .env 파일을 편집하여 실제 값 입력
nano .env  # 또는 vim, code 등

방법 3: 직접 생성

OpenAI 사용 시:

# .env 파일 생성
echo "PII_PROVIDER=openai" > .env
echo "OPENAI_API_KEY=your_openai_api_key_here" >> .env
echo "PII_MASTER_KEY=your_secure_master_key_here" >> .env
echo "PII_MODEL_ID=gpt-4o" >> .env

vLLM 사용 시:

# .env 파일 생성
echo "PII_PROVIDER=vllm" > .env
echo "VLLM_API_KEY=your_vllm_api_key_here" >> .env
echo "PII_MASTER_KEY=your_secure_master_key_here" >> .env
echo "PII_MODEL_ID=qwen3-235b-awq" >> .env
echo "VLLM_BASE_URL=https://qwen.smartmind.team/v1" >> .env
echo "VLLM_TIMEOUT=600" >> .env
echo "VLLM_TEMPERATURE=0.0" >> .env
echo "VLLM_MAX_TOKENS=4096" >> .env

필수 환경변수

  • PII_MASTER_KEY: PII 암호화용 마스터 키 (선택사항, 기본값: "pii_master_key_1!smartmind")

Provider별 환경변수

OpenAI 사용 시:

vLLM 사용 시:

  • VLLM_API_KEY: vLLM API 키 (OPENAI_API_KEY와 동일하게 사용 가능)

  • VLLM_BASE_URL: vLLM 서버 URL (기본값: https://qwen.smartmind.team/v1)

  • PII_MODEL_ID: 모델 ID (기본값: qwen3-235b-awq)

  • VLLM_TIMEOUT: 요청 타임아웃 (초, 기본값: 600)

  • VLLM_TEMPERATURE: 온도 (기본값: 0.0)

  • VLLM_MAX_TOKENS: 최대 토큰 수 (기본값: 4096)

마스터 키 생성 방법

# OpenSSL 사용
openssl rand -base64 32

# Python 사용
python -c "import secrets; print(secrets.token_urlsafe(32))"

2. MCP 서버 실행

uv 사용 (권장):

# uv로 MCP 서버 실행
uv run python mcp_pii_tools.py

# 또는 가상환경 활성화 후 실행
uv shell
python mcp_pii_tools.py

pip 사용:

# MCP 서버로 실행 (Claude Desktop 등에서 사용)
python mcp_pii_tools.py

3. 사용 가능한 MCP Tools

  • detect_pii: PII 탐지

  • process_text: PII 탐지 + 익명화

  • batch_process: 일괄 처리

  • anonymize_text: 익명화

  • encrypt_pii_item: 개별 PII 암호화

  • decrypt_pii_item: 개별 PII 복호화

  • encrypt_text_pii: 텍스트 전체 암호화

  • decrypt_text_pii: 텍스트 전체 복호화

🖥️ Claude Desktop 설정

1. Claude Desktop MCP 설정

Claude Desktop에서 MCP 서버를 사용하려면 설정 파일을 수정해야 합니다.

macOS 설정 파일 위치:

~/Library/Application Support/Claude/claude_desktop_config.json

Windows 설정 파일 위치:

%APPDATA%\Claude\claude_desktop_config.json

2. 설정 파일 내용

권장 설정 (uv 사용):

{
  "mcpServers": {
    "mcp-pii-tools": {
      "command": "/opt/homebrew/bin/uv",
      "args": ["run", "--directory", "/Users/matthew/Workspace/mcp-pii-tools", "python", "mcp_pii_tools.py"]
    }
  }
}

중요한 설정 포인트:

  1. uv 전체 경로 사용: commanduv의 전체 경로를 지정

    • macOS (Homebrew): /opt/homebrew/bin/uv

    • macOS (직접 설치): ~/.cargo/bin/uv

    • Linux: ~/.cargo/bin/uv

  2. 디렉터리 명시: --directory 옵션으로 프로젝트 디렉터리 지정

    • Claude Desktop이 실행될 때 올바른 가상환경을 찾을 수 있도록 함

    • pyproject.toml이 있는 디렉터리를 정확히 지정해야 함

  3. 상대 경로 사용: args에서 스크립트 파일명만 사용

    • --directory로 작업 디렉터리가 설정되므로 상대 경로로 충분

대안 설정 (pip 사용):

{
  "mcpServers": {
    "mcp-pii-tools": {
      "command": "python",
      "args": ["/Users/matthew/Workspace/mcp-pii-tools/mcp_pii_tools.py"]
    }
  }
}

3. 환경변수 설정

중요: API 키와 설정은 JSON 파일이 아닌 환경변수로 관리합니다.

방법 1: 자동 설정 스크립트 사용 (권장)

# 프로젝트 디렉터리에서 실행
uv run python setup_env.py

방법 2: .env 파일 사용

# 템플릿 파일을 .env로 복사
cp env.template.txt .env

# .env 파일을 편집하여 실제 값 입력
nano .env  # 또는 vim, code 등

방법 3: 시스템 환경변수 설정

# macOS/Linux
export OPENAI_API_KEY="your_openai_api_key_here"
export PII_MASTER_KEY="your_secure_master_key_here"

# Windows
set OPENAI_API_KEY=your_openai_api_key_here
set PII_MASTER_KEY=your_secure_master_key_here

4. 설정 완료

  1. Claude Desktop 종료

  2. 환경변수 설정 (위 방법 중 하나 선택)

  3. Claude Desktop 재시작

  4. MCP 서버 연결 확인

5. 사용 예시

Claude Desktop에서 다음과 같이 사용할 수 있습니다:

"이 텍스트에서 개인정보를 찾아서 익명화해줘: 김철수 씨의 이메일은 kim@example.com이고 전화번호는 010-1234-5678입니다."

🖥️ Cursor 설정

1. Cursor MCP 설정

Cursor에서 MCP 서버를 사용하려면 설정을 추가해야 합니다.

설정 파일 위치:

~/.cursor/mcp_settings.json

2. 설정 파일 내용

{
  "mcpServers": {
    "mcp-pii-tools": {
      "command": "uv",
      "args": ["run", "python", "/Users/matthew/Workspace/mcp-pii-tools/mcp_pii_tools.py"]
    }
  }
}

3. 환경변수 설정

중요: API 키와 설정은 JSON 파일이 아닌 환경변수로 관리합니다.

방법 1: 자동 설정 스크립트 사용 (권장)

# 프로젝트 디렉터리에서 실행
uv run python setup_env.py

방법 2: .env 파일 사용

# 템플릿 파일을 .env로 복사
cp env.template.txt .env

# .env 파일을 편집하여 실제 값 입력
nano .env  # 또는 vim, code 등

4. Cursor에서 사용

  1. Cursor 설정 열기 (Cmd/Ctrl + ,)

  2. MCP 설정 추가

  3. 환경변수 설정 (위 방법 중 하나 선택)

  4. Cursor 재시작

  5. MCP 도구 사용

🔧 수동 테스트

1. MCP 서버 직접 테스트

uv 사용 (권장):

# 서버 실행
uv run python mcp_pii_tools.py

# 다른 터미널에서 테스트
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | uv run python mcp_pii_tools.py

pip 사용:

# 서버 실행
python mcp_pii_tools.py

# 다른 터미널에서 테스트
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | python mcp_pii_tools.py

2. 개별 도구 테스트

uv 사용 (권장):

# PII 탐지 테스트
uv run python -c "
from mcp_pii_tools import mcp_detect_pii
result = mcp_detect_pii('김철수 씨의 이메일은 kim@example.com입니다.')
print(result)
"

pip 사용:

# PII 탐지 테스트
python -c "
from mcp_pii_tools import mcp_detect_pii
result = mcp_detect_pii('김철수 씨의 이메일은 kim@example.com입니다.')
print(result)
"

🚨 문제 해결

1. MCP 서버 연결 실패

  • 환경변수 확인: OPENAI_API_KEY, PII_MASTER_KEY 설정 확인

  • uv 설치 확인: uv --version으로 uv가 설치되어 있는지 확인

  • 의존성 설치 확인: uv sync로 모든 의존성이 설치되었는지 확인

  • 파일 권한 확인: 스크립트 파일에 실행 권한이 있는지 확인

1.1. 모듈을 찾을 수 없는 오류 (ModuleNotFoundError)

증상: ModuleNotFoundError: No module named 'dotenv' 또는 ModuleNotFoundError: No module named 'langextract'

원인: Claude Desktop이 실행할 때 올바른 가상환경을 찾지 못함

해결 방법:

  1. uv 전체 경로 사용:

    "command": "/opt/homebrew/bin/uv"
  2. 디렉터리 명시:

    "args": ["run", "--directory", "/Users/matthew/Workspace/mcp-pii-tools", "python", "mcp_pii_tools.py"]
  3. uv 경로 확인:

    which uv
    # 결과: /opt/homebrew/bin/uv (macOS Homebrew)
    # 또는: ~/.cargo/bin/uv (직접 설치)
  4. 수동 테스트:

    /opt/homebrew/bin/uv run --directory /Users/matthew/Workspace/mcp-pii-tools python mcp_pii_tools.py

2. 도구가 보이지 않는 경우

  • Claude Desktop 재시작: 설정 변경 후 반드시 재시작

  • 로그 확인: Claude Desktop 로그에서 오류 메시지 확인

  • 설정 파일 문법: JSON 문법이 올바른지 확인

3. 성능 최적화

  • 환경변수 사용: .env 파일 대신 시스템 환경변수 사용 권장

  • 절대 경로 사용: 상대 경로 대신 절대 경로 사용

  • uv 사용: uv run을 사용하여 가상환경 자동 관리

  • 의존성 캐싱: uv의 빠른 의존성 해결 및 캐싱 활용

🐛 오류 처리

모든 함수는 success 필드를 통해 성공/실패를 나타냅니다:

result = mcp_detect_pii("텍스트")
if result['success']:
    print(f"탐지된 PII: {result['count']}개")
else:
    print(f"오류: {result['error']}")

🤝 기여

버그 리포트나 기능 요청은 GitHub Issues를 통해 제출해주세요.

🚀 주요 사용 사례

1. 데이터 마이그레이션

  • 기존 데이터베이스의 PII를 안전하게 암호화하여 새 시스템으로 이전

  • FPE를 통한 스키마 변경 없이 암호화 적용

2. 개발/테스트 환경

  • 프로덕션 데이터의 PII를 익명화하여 테스트 데이터로 활용

  • 개발자들이 실제 데이터 없이도 테스트 가능

3. 데이터 분석

  • PII를 암호화한 상태에서도 검색 및 분석 가능

  • 결정론적 암호화를 통한 그룹핑 및 집계

4. 규정 준수

  • GDPR, 개인정보보호법 등 규정에 따른 PII 보호

  • 감사 추적을 위한 암호화 로그 관리


MCP PII Tools - 고정밀 개인정보 탐지, 익명화, 암호화 및 복호화 솔루션

Available Tools

8 tools
mcp_anonymize_textC
MCP Tool: 텍스트 익명화

Args:
    text (str): 원본 텍스트
    pii_items (List[Dict[str, Any]]): PII 항목들
    
Returns:
    str: 익명화된 텍스트
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
pii_itemsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool returns anonymized text but doesn't disclose what anonymization means (masking, replacement, removal), whether it's reversible, what happens to the original text, or any performance/rate limit considerations. For a PII handling tool with zero annotation coverage, this is a significant behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with a clear structure: tool name, args section, and returns section. There's no unnecessary verbosity. However, the bilingual presentation (Korean title with English description) creates minor cognitive overhead, and the description could be more front-loaded with purpose before parameter documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 parameters with 0% schema coverage, no annotations, but an output schema exists, the description is minimally adequate. The output schema means the description doesn't need to explain return values, but it should do more to explain parameter semantics and behavioral context for a PII handling tool. It meets the bare minimum but leaves important questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists parameters and types but adds minimal semantic meaning. 'PII items' is documented as a list of dictionaries but the description doesn't explain what keys/values are expected, what PII types are supported, or how the tool uses these items to anonymize the text. The description doesn't adequately compensate for the schema coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'anonymizes text' which is a clear verb+resource combination, but it doesn't specify how this differs from sibling tools like mcp_process_text or mcp_batch_process. The Korean title '텍스트 익명화' translates to 'text anonymization' which restates the English name rather than adding clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. With sibling tools like mcp_detect_pii, mcp_encrypt_text_pii, and mcp_process_text available, the description doesn't explain whether this tool should be used before/after detection, or how it differs from encryption tools. The description only documents parameters without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_batch_processD
MCP Tool: 여러 텍스트 일괄 처리

Args:
    texts (List[str]): 처리할 텍스트 리스트
    
Returns:
    Dict[str, Any]: 일괄 처리 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
textsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. The description only states it 'processes' texts in batch and returns results, without explaining what processing entails, whether it's read-only or mutative, what permissions are needed, error handling, rate limits, or any behavioral traits. This is inadequate for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with Args and Returns sections, which is organized. However, it includes redundant elements like 'MCP Tool:' prefix and could be more front-loaded. The content is concise but under-specified - every sentence earns its place but provides insufficient information overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema description coverage, but having an output schema (Returns: Dict[str, Any]), the description is incomplete. It doesn't explain what the batch processing actually does, how it differs from siblings, what the return dictionary contains, or any behavioral aspects. For a tool with one parameter but unclear functionality among multiple siblings, this description leaves critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions 'texts (List[str]): 처리할 텍스트 리스트' (texts to process list), which adds basic semantics about the parameter being a list of strings for processing. However, it doesn't explain constraints like minimum/maximum list size, text length limits, or content requirements. The description provides minimal parameter context beyond what the bare schema shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states '여러 텍스트 일괄 처리' (batch processing of multiple texts) which is a tautology of the tool name 'mcp_batch_process'. While it mentions the verb '처리' (process) and resource '텍스트' (texts), it doesn't specify what kind of processing occurs or how this differs from sibling tools like 'mcp_process_text'. The purpose remains vague beyond the literal translation of the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. With siblings like 'mcp_process_text' (which appears to process individual texts) and various PII-related tools (anonymize, detect, encrypt, decrypt), there's no indication whether this tool is for bulk operations, specific processing types, or how it relates to other tools. The description offers zero usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_decrypt_pii_itemC
MCP Tool: PII 항목 복호화

Args:
    encrypted_value (str): 복호화할 암호화된 값
    pii_type (str): PII 유형
    
Returns:
    Dict[str, Any]: 복호화 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
encrypted_valueYes
pii_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool decrypts PII items but doesn't cover critical aspects: what permissions or authentication are required, whether it's a read-only or mutating operation, potential rate limits, error handling, or what the decryption process entails. This leaves significant gaps in understanding the tool's behavior and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and structured with clear sections for Args and Returns, making it easy to scan. However, the first line 'MCP Tool: PII 항목 복호화' is somewhat redundant with the tool name, and the content could be more front-loaded with critical usage information. Overall, it's efficient but not optimally organized for immediate understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (decryption operation with security implications), lack of annotations, and an output schema that only indicates a dict return, the description is incomplete. It covers basic purpose and parameters but misses behavioral context, error cases, and security considerations. The output schema helps by specifying the return type, but the description should do more to compensate for the annotation gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema provides no parameter details. The description adds basic semantics: 'encrypted_value' is the value to decrypt, and 'pii_type' is the PII type. However, it doesn't explain valid pii_type values, encryption formats, or examples, which limits practical use. This partial compensation justifies a baseline score, but more detail would be needed for higher marks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'PII 항목 복호화' (PII item decryption), which is a specific verb+resource combination. It distinguishes itself from siblings like mcp_decrypt_text_pii (text PII decryption) and mcp_encrypt_pii_item (PII item encryption), though the differentiation could be more explicit. The description doesn't fully explain what constitutes a 'PII item' versus 'text PII,' leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing encrypted PII data), exclusions, or comparisons to siblings like mcp_decrypt_text_pii or mcp_encrypt_pii_item. The agent must infer usage from the tool name and context alone, which is insufficient for clear decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_decrypt_text_piiC
MCP Tool: 암호화된 텍스트에서 PII 복호화

Args:
    encrypted_text (str): 암호화된 텍스트
    encrypted_items (Dict[str, str]): 원본값 -> 암호화값 매핑
    
Returns:
    Dict[str, Any]: 복호화 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
encrypted_textYes
encrypted_itemsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool decrypts PII from encrypted text but doesn't cover critical aspects like authentication requirements, rate limits, error handling, or whether it's a read-only or mutative operation. This is a significant gap for a tool handling sensitive PII data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by Args and Returns sections. It avoids unnecessary fluff and is appropriately sized for the tool's complexity. However, the use of Korean might reduce clarity for some agents, and the Returns section could be more descriptive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (handling PII decryption with two parameters and nested objects), the description is minimally adequate. It covers the basic purpose and parameters but lacks behavioral details and usage guidelines. The presence of an output schema helps, but without annotations, the description should do more to explain security implications and error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description lists both parameters (encrypted_text and encrypted_items) with brief explanations, adding some semantic value beyond the schema's 0% description coverage. However, it doesn't fully compensate for the coverage gap—details like the format of encrypted_items mapping or examples are missing. The baseline is 3 since it provides basic parameter context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '암호화된 텍스트에서 PII 복호화' (Decrypt PII from encrypted text). It specifies both the verb (decrypt) and the resource (PII from encrypted text), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like mcp_decrypt_pii_item, which might handle individual items rather than text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like mcp_decrypt_pii_item or mcp_anonymize_text, nor does it specify prerequisites or contexts for usage. This leaves the agent without clear direction on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_detect_piiC
MCP Tool: 텍스트에서 PII 탐지

Args:
    text (str): 분석할 텍스트
    
Returns:
    Dict[str, Any]: 탐지 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool detects PII but doesn't specify what types of PII are detected (e.g., names, emails, SSNs), the detection method (e.g., regex, ML models), or any limitations (e.g., accuracy, language support). This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and structured with clear sections for Args and Returns, making it easy to parse. However, the title is null, and the content could be more front-loaded with the core purpose before parameter details. It avoids redundancy but misses opportunities for efficiency in explaining behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (PII detection can involve nuanced logic), lack of annotations, and presence of an output schema, the description is minimally adequate. It covers the basic function and parameters but fails to address key behavioral aspects like detection scope or error handling. The output schema likely details the return structure, reducing the need for return value explanation, but overall completeness is limited.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal value beyond the input schema. It documents the single parameter 'text' as '분석할 텍스트' (text to analyze), which aligns with the schema's 'Text' title but doesn't provide additional context like format expectations (e.g., plain text vs. structured data) or constraints (e.g., length limits). With 0% schema description coverage, this is inadequate compensation, but the single parameter keeps it from being lower.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '텍스트에서 PII 탐지' (Detect PII in text). It specifies the verb (detect) and resource (PII in text), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like mcp_anonymize_text or mcp_process_text, which likely perform related but distinct operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like mcp_anonymize_text (which might anonymize PII after detection) and mcp_process_text (a more general tool), the agent lacks explicit direction on selection criteria, such as 'use this for detection only' or 'combine with mcp_anonymize_text for full anonymization.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_encrypt_pii_itemC
MCP Tool: PII 항목 암호화

Args:
    pii_value (str): 암호화할 PII 값
    pii_type (str): PII 유형 (이름, 전화번호, 이메일 등)
    
Returns:
    Dict[str, Any]: 암호화 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
pii_valueYes
pii_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool encrypts PII items but lacks details on encryption method, security implications, permissions required, rate limits, or error handling. For a tool handling sensitive data with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the tool's purpose. It uses a structured format with Args and Returns sections, which is efficient. However, the inclusion of 'MCP Tool:' is redundant, and the content could be more streamlined without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (handling sensitive PII data), lack of annotations, and presence of an output schema, the description is moderately complete. It covers basic purpose and parameters but misses critical behavioral details like security and error handling. The output schema likely documents return values, reducing the need for description here, but overall completeness is adequate with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds basic semantics by explaining pii_value as '암호화할 PII 값' (PII value to encrypt) and pii_type as 'PII 유형 (이름, 전화번호, 이메일 등)' (PII type like name, phone number, email). However, it does not specify format constraints, examples, or validation rules, leaving parameters partially documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'PII 항목 암호화' (PII item encryption), which specifies both the verb (encrypt) and resource (PII item). It distinguishes from siblings like mcp_encrypt_text_pii (which encrypts text PII) by focusing on individual PII items, though the distinction could be more explicit. The purpose is specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention siblings like mcp_encrypt_text_pii (for text PII) or mcp_anonymize_text (for anonymization), nor does it specify prerequisites or exclusions. Usage is implied by the tool name and description alone, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_encrypt_text_piiC
MCP Tool: 텍스트에서 PII를 탐지하고 암호화

Args:
    text (str): 처리할 텍스트
    
Returns:
    Dict[str, Any]: 암호화 처리 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions detection and encryption but lacks critical behavioral details: what types of PII are detected, the encryption method used, whether the operation is reversible (hinted by 'mcp_decrypt_text_pii' sibling), performance characteristics, or error handling. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: it starts with the tool's purpose, lists the single argument with a brief explanation, and notes the return type. There's no unnecessary information, and it's front-loaded with the core functionality. However, the lack of usage context or behavioral details slightly limits its effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (detection and encryption), no annotations, and an output schema (which handles return values), the description is partially complete. It covers the basic purpose and parameter but misses usage guidelines, behavioral transparency, and differentiation from siblings. This makes it minimally viable but insufficient for optimal agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal semantics beyond the input schema. It states 'text (str): 처리할 텍스트' (text to process), which slightly clarifies the parameter's purpose but doesn't provide format constraints, length limits, or examples. With 0% schema description coverage and only one parameter, this is a baseline score—adequate but with clear gaps in detailed guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '텍스트에서 PII를 탐지하고 암호화' (detect and encrypt PII in text). It specifies both the action (detect and encrypt) and the resource (text with PII). However, it doesn't explicitly differentiate from sibling tools like 'mcp_detect_pii' (detection only) or 'mcp_encrypt_pii_item' (encrypts individual PII items), which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'mcp_detect_pii' (detection only), 'mcp_encrypt_pii_item' (encrypts individual items), and 'mcp_anonymize_text' (anonymization), there's no indication of the specific use cases, prerequisites, or trade-offs for choosing this combined detection+encryption tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_process_textC
MCP Tool: 텍스트 PII 처리 (탐지 + 익명화)

Args:
    text (str): 처리할 텍스트
    
Returns:
    Dict[str, Any]: 처리 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions '탐지 + 익명화' (detection + anonymization), it doesn't specify what types of PII are detected, how anonymization is performed (masking, replacement, etc.), whether the operation is reversible, what permissions are required, or any rate limits. For a PII processing tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with clear sections for the tool name, arguments, and returns. Each sentence serves a purpose: stating the function, documenting the parameter, and indicating the return type. However, the mixed Korean/English formatting could be slightly cleaner, and the 'MCP Tool:' prefix is somewhat redundant given the context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a PII processing tool with no annotations but with an output schema (indicated by 'Has output schema: true'), the description is minimally adequate. It covers the basic purpose and parameter, and the output schema will handle return value documentation. However, for a sensitive operation like PII processing, more context about what constitutes PII, how anonymization works, and security considerations would be valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explicitly documents the single parameter 'text' with its type and purpose ('처리할 텍스트' meaning 'text to process'). With 0% schema description coverage, this adds crucial semantic meaning beyond the bare schema. However, it doesn't provide additional context about text length limits, supported languages, or formatting requirements that would be helpful for proper usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '텍스트 PII 처리 (탐지 + 익명화)' which translates to 'Text PII processing (detection + anonymization)'. This specifies the verb (process), resource (text), and scope (PII detection and anonymization). However, it doesn't explicitly distinguish this from sibling tools like 'mcp_detect_pii' or 'mcp_anonymize_text', which appear to offer separate detection or anonymization functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'mcp_detect_pii' and 'mcp_anonymize_text' available, there's no indication whether this tool should be used for combined detection+anonymization workflows, or how it differs from using those tools separately. No context about prerequisites, limitations, or appropriate scenarios is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

C2.9/5.0
Disambiguation3/5

There is significant functional overlap between tools, particularly mcp_encrypt_text_pii and mcp_process_text which both combine detection with another operation, and mcp_decrypt_pii_item versus mcp_decrypt_text_pii which differ in scope but share core purpose. However, the descriptions help clarify the distinctions, preventing complete confusion.

Naming Consistency5/5

All tools follow a consistent mcp_verb_noun naming pattern with snake_case throughout. The verbs (anonymize, batch_process, decrypt, detect, encrypt, process) are descriptive and uniformly applied, making the set predictable and easy to parse.

Tool Count4/5

With 8 tools, the count is reasonable for a PII processing domain, covering detection, encryption, decryption, anonymization, and batch operations. It's slightly heavy due to overlapping tools but still within a well-scoped range for the purpose.

Completeness4/5

The toolset covers core PII operations well: detection, encryption, decryption, and anonymization, with batch processing for scalability. A minor gap exists in update or delete operations for PII data, but agents can work around this with the provided tools for most workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Let LLMs analyze sensitive data safely by querying a tokenized, join-preserving copy of the database, with fail-closed PII scanning and provable numeric equivalence.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to protect, unprotect, and search sensitive data using Kustodyan's contextual transform engine with role-based access controls.
    8
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/czangyeob/mcp-pii-tools'

If you have feedback or need assistance with the MCP directory API, please join our Discord server