추상 API MCP 서버
Abstract API 서비스를 사용하여 이메일 및 전화 유효성 검사 도구를 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버는 FastMCP 기반으로 구축되어 있어 AI 애플리케이션 및 워크플로에 유효성 검사 기능을 쉽게 통합할 수 있습니다.
개요
이 MCP 서버는 세 가지 주요 검증 도구를 제공합니다.
- 이메일 검증 : 포괄적인 이메일 주소 검증 및 확인
- 전화번호 확인 : 190개국 이상의 전화번호 확인
- 이메일 평판 : 보안 통찰력을 갖춘 고급 이메일 평판 분석
특징
이메일 검증
- 형식 검증
- 전달 가능성 확인
- 도메인 확인
- SMTP 검증
- 일회용/역할/포괄 이메일 감지
- 품질 평가
전화 확인
- 국제 전화번호 확인
- 형식 표준화(국제/지역)
- 국가 및 통신사 식별
- 전화 유형 감지(휴대전화, 유선전화 등)
- 위치 정보
이메일 평판
- 포괄적인 전달 가능성 분석
- 품질 평가 및 위험 평가
- 발신자 및 조직 식별
- 도메인 보안 분석(DMARC, SPF)
- 데이터 침해 내역 추적
- 사기 및 남용 감지
필수 조건
설치
옵션 1: uv 사용(권장)
- 저장소를 복제합니다.
지엑스피1
- 가상 환경을 생성하고 종속성을 설치합니다.
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install .
- 환경 변수 설정:
cp .env.example .env
# Edit .env and add your Abstract API key
옵션 2: 기존 pip 사용
- 저장소를 복제합니다.
git clone https://github.com/avivshafir/abstractapi-mcp-server
cd abstractapi-mcp-server
- 가상 환경 만들기:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- 종속성 설치:
pip install -r requirements.txt
- 환경 변수 설정:
cp .env.example .env
# Edit .env and add your Abstract API key
.env
파일에는 다음이 포함되어야 합니다.
ABSTRACT_API_KEY=your_abstract_api_key_here
용법
MCP 서버 실행
MCP 클라이언트와 통합하기 위해 서버를 stdio 모드로 실행할 수 있습니다.
# With uv (if virtual environment is activated)
python server.py
# Or run directly with uv
uv run server.py
FastMCP 프레임워크
이 서버는 MCP 서버 개발을 간소화하는 Python 프레임워크인 FastMCP를 사용하여 구축되었습니다. FastMCP는 다음을 제공합니다.
- 자동 도구 등록 :
@mcp.tool()
로 장식된 함수는 자동으로 MCP 도구로 노출됩니다. - 유형 안전성 : 전체 유형 힌트 및 유효성 검사
- 간편한 비동기 지원 : 네이티브 비동기/대기 지원
- 간소화된 서버 설정 : 최소한의 보일러플레이트 코드
FastMCP의 핵심 개념
from mcp.server.fastmcp import FastMCP
# Initialize the server
mcp = FastMCP("abstract_api")
# Register a tool
@mcp.tool()
async def my_tool(param: str) -> dict:
"""Tool description for AI clients"""
return {"result": param}
# Run the server
mcp.run(transport="stdio")
사용 가능한 도구
1. 이메일 검증( verify_email
)
이메일 주소를 검증하고 포괄적인 정보를 반환합니다.
매개변수:
응답 예시:
{
"email": "user@example.com",
"deliverability": "DELIVERABLE",
"quality_score": "0.99",
"is_valid_format": {"value": true, "text": "TRUE"},
"is_free_email": {"value": false, "text": "FALSE"},
"is_disposable_email": {"value": false, "text": "FALSE"},
"is_role_email": {"value": false, "text": "FALSE"},
"is_catchall_email": {"value": false, "text": "FALSE"},
"is_mx_found": {"value": true, "text": "TRUE"},
"is_smtp_valid": {"value": true, "text": "TRUE"}
}
2. 전화 유효성 검사( validate_phone
)
190개 이상의 국가의 전화번호를 검증합니다.
매개변수:
phone
(str): 검증할 전화번호country
(str, 선택 사항): 컨텍스트에 대한 ISO 국가 코드
응답 예시:
{
"phone": "14152007986",
"valid": true,
"format": {
"international": "+14152007986",
"local": "(415) 200-7986"
},
"country": {
"code": "US",
"name": "United States",
"prefix": "+1"
},
"location": "California",
"type": "mobile",
"carrier": "T-Mobile USA, Inc."
}
3. 이메일 평판( check_email_reputation
)
보안 통찰력과 침해 내역을 포함한 포괄적인 이메일 평판 분석을 제공합니다.
매개변수:
응답 예시:
{
"email_address": "benjamin.richard@abstractapi.com",
"email_deliverability": {
"status": "deliverable",
"status_detail": "valid_email",
"is_format_valid": true,
"is_smtp_valid": true,
"is_mx_valid": true,
"mx_records": ["gmail-smtp-in.l.google.com", "..."]
},
"email_quality": {
"score": 0.8,
"is_free_email": false,
"is_username_suspicious": false,
"is_disposable": false,
"is_catchall": true,
"is_subaddress": false,
"is_role": false,
"is_dmarc_enforced": true,
"is_spf_strict": true,
"minimum_age": 1418
},
"email_sender": {
"first_name": "Benjamin",
"last_name": "Richard",
"email_provider_name": "Google",
"organization_name": "Abstract API",
"organization_type": "company"
},
"email_domain": {
"domain": "abstractapi.com",
"domain_age": 1418,
"is_live_site": true,
"registrar": "NAMECHEAP INC",
"date_registered": "2020-05-13",
"date_expires": "2025-05-13",
"is_risky_tld": false
},
"email_risk": {
"address_risk_status": "low",
"domain_risk_status": "low"
},
"email_breaches": {
"total_breaches": 2,
"date_first_breached": "2018-07-23T14:30:00Z",
"date_last_breached": "2019-05-24T14:30:00Z",
"breached_domains": [
{"domain": "apollo.io", "date_breached": "2018-07-23T14:30:00Z"},
{"domain": "canva.com", "date_breached": "2019-05-24T14:30:00Z"}
]
}
}
MCP 클라이언트와의 통합
mcp 구성에 이 서버를 추가하세요:
{
"mcpServers": {
"abstract-api": {
"command": "uv",
"args": ["run", "/path/to/mcp-abstract-api/server.py"],
"env": {
"ABSTRACT_API_KEY": "your_api_key_here"
}
}
}
}
또는 기존 접근 방식을 사용하는 것을 선호하는 경우:
{
"mcpServers": {
"abstract-api": {
"command": "python",
"args": ["/path/to/mcp-abstract-api/server.py"],
"env": {
"ABSTRACT_API_KEY": "your_api_key_here"
}
}
}
}
다른 MCP 클라이언트
이 서버는 표준 MCP 프로토콜을 따르며 모든 MCP 호환 클라이언트와 통합될 수 있습니다. 서버는 stdio 전송을 통해 통신합니다.
오류 처리
서버에는 포괄적인 오류 처리 기능이 포함되어 있습니다.
- API 키 검증 : 누락된 API 키 확인
- HTTP 오류 처리 : API 응답 오류의 적절한 처리
- 입력 검증 : 유형 검사 및 매개변수 검증
- 우아한 저하 : 디버깅을 위한 의미 있는 오류 메시지
API 속도 제한
Abstract API에는 플랜에 따라 다른 요금 제한이 있습니다.
- 무료 플랜: 초당 1개 요청
- 유료 플랜: 더 높은 요금 한도 사용 가능
검증이 성공하든 실패하든 각 API 호출은 하나의 크레딧으로 계산됩니다.
개발
프로젝트 구조
mcp-abstract-api/
├── server.py # Main MCP server implementation
├── .env # Environment variables (not in repo)
├── .env.example # Environment template
├── requirements.txt # Python dependencies (pip format)
├── uv.lock # uv lock file for reproducible builds
├── pyproject.toml # Project configuration
├── README.md # This file
└── LICENSE # MIT License
새로운 도구 추가
새로운 Abstract API 도구를 추가하려면:
- API 엔드포인트 URL을 상수로 추가합니다.
@mcp.tool()
로 장식된 새로운 함수를 생성합니다.- 매개변수 및 반환 설명이 포함된 포괄적인 docstring 추가
- 기존 패턴에 따라 오류 처리를 구현합니다.
예:
@mcp.tool()
async def new_validation_tool(param: str) -> dict[str, Any]:
"""
Description of what this tool does.
Args:
param (str): Description of parameter
Returns:
dict[str, Any]: Description of return value
"""
# Implementation here
pass
기여하다
- 저장소를 포크하세요
- 기능 브랜치 생성
- 변경 사항을 만드세요
- 해당되는 경우 테스트를 추가하세요
- 풀 리퀘스트 제출
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.
지원하다
다음과 관련된 문제:
감사의 말