mx-postal-codes
멕시코 우편번호 API 🇲🇽
Python 3.12, FastAPI, SQLite(WAL 모드) 및 Docker로 구축된 초고속 RESTful API로, 멕시코의 공식 우편번호, 주거지, 지방자치단체 및 주 카탈로그를 1ms 미만으로 응답하도록 설계되었습니다.
📜 법적 저작권 표시 조항 (CC BY 4.0에 따라 필수)
이 API는 datos.gob.mx를 통해 멕시코 우편 서비스(SEPOMEX)가 발행한 공식 카탈로그에서 제공되는 지리 정보 및 우편번호 정보를 사용 및 처리하며, Creative Commons Attribution 4.0 International 라이선스에 따라 제공됩니다.
🚀 주요 특징
API 계약 및 명세: docs/api_contract.md
속도 및 성능: SQLite Write-Ahead Logging(WAL) 모드 및
orjson직렬화를 통한 서브 밀리초 응답 시간.사이버 보안: OWASP 강화, 보안 헤더, 속도 제한, Pydantic v2 엄격한 정규식 검증 및 Docker non-root 사용자.
엔터프라이즈 오류 처리: 요청별 고유
X-Correlation-ID를 포함한 RFC 7807(문제 세부 정보) 형식.감사 및 로깅:
loguru를 통한 구조화된 JSON 로그, 자정(00:00) 일일 로테이션,.zip압축 및 30일 보관.데드락 방지:
PRAGMA busy_timeout=5000;을 사용한 읽기 전용(mode=ro) HTTP 연결.자동 수집 스크립트: 데이터베이스를 원자적으로 다운로드, 정리(ISO-8859-1에서 UTF-8로) 및 채웁니다.
📦 로컬 설치 및 실행
1. 사전 요구 사항
Python 3.10+
Virtualenv 또는 Docker
2. 환경 설정 및 종속성 설치
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt3. 데이터 수집 실행 (SEPOMEX / datos.gob.mx)
python scripts/ingest_sepomex.py이 명령은 공식 CPdescarga.txt 파일을 다운로드하고 148,000개 이상의 주거지와 최적화된 인덱스가 포함된 sepomex.db를 생성합니다.
4. 개발 서버 시작
uvicorn app.main:app --reload --port 8000대화형 문서 방문: http://localhost:8000/docs
🐳 Docker로 실행
옵션 A: Docker Build & Run
docker build -t codigos-postales-api .
docker run -p 8000:8000 codigos-postales-api옵션 B: Docker Compose
docker-compose up -d🔐 인증 및 속도 제한 (API 키 및 JWT)
API는 .env에서 구성 가능한 하이브리드 인증 체계를 제공합니다:
1. 작동 모드 (REQUIRE_AUTH)
REQUIRE_AUTH=False(공개 API 모드, 기본값): 엔드포인트에 자유롭게 액세스할 수 있습니다. 요청 제어는 IP별 속도 제한(기본적으로 분당 120개 요청)을 통해 수행됩니다.REQUIRE_AUTH=True(보호된 엔터프라이즈 API 모드): 각 요청이 헤더에 유효한 자격 증명을 보내야 합니다.
2. 지원되는 인증 옵션
X-API-Key헤더:curl -H "X-API-Key: key-dev-12345" http://localhost:8000/api/v1/codigo-postal/01000JWT Bearer 토큰 (
Authorization: Bearer <token>):JWT 토큰 교환 (24시간 유효):
curl -X POST http://localhost:8000/api/v1/auth/token -H "X-API-Key: key-dev-12345"반환된 토큰으로 요청:
curl -H "Authorization: Bearer <tu_jwt_token>" http://localhost:8000/api/v1/codigo-postal/01000
🛠️ 사용 가능한 엔드포인트
메서드 | 엔드포인트 | 설명 |
|
| 관찰 가능성, 통계 및 GeoJSON 지도를 위한 대화형 웹 대시보드 |
|
| CP 세부 정보 조회 ( |
|
| 단일 HTTP 요청에서 최대 100개 주소의 대량 일괄 유효성 검사 및 정규화 |
|
| 표준 GeoJSON 형식( |
|
| 2~5자리 접두사로 실시간 자동 완성 |
|
| 지리적 근접성 검색 (Haversine + Bounding Box) |
|
| 악센트 없는 FTS5 검색, 결합 필터, 페이지 매김 및 직접 내보내기 ( |
|
| 악센트 구분 없는 빠른 주거지 검색 |
|
| 32개 연방实体 목록 ( |
|
| 주 코드별 지방자치단체 |
|
| 모든 CP 및 주거지가 포함된 지방자치단체의 전체 세부 정보 |
|
| GeoJSON 형식( |
|
| PDF 실행 보고서 생성 및 다운로드 (선택적 매개변수 |
|
| 클라이언트 측 HTML 양식 자동 완성을 위한 JavaScript 위젯 |
|
| SEPOMEX 카탈로그의 메트릭 통계 및 분석 |
|
| JSON 형식의 실시간 감사 로그 및 서버 이벤트 |
|
| CC BY 4.0 법적 저작권 표시 조항 |
|
| Prometheus 표준 모니터링 메트릭 |
|
| Docker/K8s 모니터링을 위한 상태 확인 |
📦 공식 SDK 클라이언트 (mx-postal-client)
프로젝트에는 수동 HTTP 요청을 작성하지 않고도 API를 쉽게 사용할 수 있는 두 개의 경량 SDK 클라이언트 패키지가 포함되어 있습니다:
Python SDK (
sdk/python):pip install ./sdk/pythonfrom mx_postal_client import MXPostalClient client = MXPostalClient(base_url="http://localhost:8080") cp_data = client.get_codigo_postal("01000", colonia="San Ángel")TypeScript / Node.js SDK (
sdk/typescript):npm install ./sdk/typescriptimport { MXPostalClient } from 'mx-postal-client'; const client = new MXPostalClient({ baseUrl: 'http://localhost:8080' }); const detail = await client.getCodigoPostal('01000');
🤖 AI 에이전트와의 통합 (Model Context Protocol - MCP)
API에는 AI 에이전트(Claude Desktop, ChatGPT, Antigravity IDE, LangChain, AutoGPT)가 자연어로 멕시코 공식 지리 데이터베이스를 쿼리하고 상호 작용할 수 있도록 하는 공식 MCP 서버(scripts/mcp_server.py)가 포함되어 있습니다.
AI에 노출된 도구:
consultar_codigo_postal(cp): 전체 지리 정보 및 주거지 목록을 반환합니다.validar_direccion_postal(codigo_postal, colonia, estado, municipio): SEPOMEX와 데이터 일치 여부를 실시간으로 확인합니다.buscar_asentamientos_por_nombre(nombre_colonia, limite): 키워드로 자연어 검색.
Claude Desktop / Antigravity IDE (mcp.json) 설정:
{
"mcpServers": {
"mx-postal-codes": {
"command": "python3",
"args": ["/ruta/absoluta/a/codigos-postales-api/scripts/mcp_server.py"]
}
}
}🔄 SEPOMEX 카탈로그 자동 확인
컨테이너는 HTTP 지연 시간(< 1 ms)에 영향을 주지 않고 datos.gob.mx의 새로운 소식을 확인하는 백그라운드 비동기 월별 스케줄러를 실행합니다.
Docker 컨테이너 내에서 수동으로 확인을 실행하거나 카탈로그 업데이트를 강제하려면:
docker exec codigos_postales_api python3 scripts/check_updates.py --force🏆 최신 기술과의 비교 (2026)
현재 시장의 오픈 소스 대안 및 상용 SaaS 서비스와의 기술 비교:
기술 차원 / 기능 | 🚀 이 프로젝트 | 🟢 Tlaloc.sh | 🐍 Sepomex-MCP | ⚡ go-mexpost | 💳 Copomex |
아키텍처 | 자가 호스팅 (Docker/WAL) | SaaS 클라우드 | 자가 호스팅 / Python | 자가 호스팅 / Go | SaaS 클라우드 |
지연 시간 p99 | < 0.5ms (RAM L1 캐시) | ~120ms | ~15ms | ~2ms | ~200ms |
SAT CFDI 4.0 표준 | ✅ 네이티브 ( | ✅ 네이티브 | ❌ 사용 불가 | ❌ 사용 불가 | ⚠️ 부분 |
대량 일괄 유효성 검사 ( | ✅ 요청당 최대 100개 | ❌ 사용 불가 | ❌ 사용 불가 | ❌ 사용 불가 | ❌ 사용 불가 |
벡터 GeoJSON (CP 및 주) | ✅ 전체 (Point & Bounds) | ❌ 사용 불가 | ❌ 사용 불가 | ❌ 사용 불가 | ❌ 사용 불가 |
PDF 실행 보고서 | ✅ 네이티브 (ReportLab) | ❌ 사용 불가 | ❌ 사용 불가 | ❌ 사용 불가 | ❌ 사용 불가 |
JavaScript 프론트엔드 위젯 | ✅ | ❌ 사용 불가 | ❌ 사용 불가 | ❌ 사용 불가 | ⚠️ 사용자 정의 JS |
AI 에이전트용 MCP 서버 | ✅ | ❌ 사용 불가 | ✅ 포함 | ❌ 사용 불가 | ❌ 사용 불가 |
공식 SDK (Python/TS) | ✅ | ❌ HTTP 요청 | ❌ HTTP 요청 | ❌ HTTP 요청 | ❌ HTTP 요청 |
페이로드 크기 보호 (1MB) | ✅ | ⚠️ 알 수 없음 | ❌ 사용 불가 | ⚠️ 프록시 수준 | ⚠️ 프록시 수준 |
운영 비용 | $0 USD (무제한) | 조회당 과금 | $0 USD | $0 USD | $15-$150 USD/월 |
🔬 실험
프로젝트에는 부하 테스트, GPS 지오펜싱, 세금 정규화 및 인공 지능 에이전트(MCP)와의 상호 운용성을 위한 전체 테스트 스위트가 포함되어 있습니다.
1단계 (지연 시간 및 일괄 처리): 일괄 유효성 검사(
POST /batch-validate)에서 58.91배 가속.2단계 (SAT 정규화): 노이즈가 있는 1,000개 샘플 데이터 세트에서 100% 정밀도로 알고리즘 $F_1$-점수 90.45%.
3단계 (AI 에이전트 / MCP): MCP 서버를 통한 상호 운용 시 99.43% 토큰 절약.
🧪 테스트 실행
pytestThis server cannot be installed
Maintenance
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
Official Mexican data for AI agents: CURP, RFC, CFDI, postal codes, phone, SPEI/CEP, DOF, geocoding.
Address validation & geocoding for AI agents: 240+ countries, UK PAF, free US/CA enrichment
Validate LatAm IDs: Mexican CLABE, Brazilian CNPJ/CPF checksums + BrasilAPI company/CEP/bank lookups
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/alonsomaciasm/codigos-postales-api'
If you have feedback or need assistance with the MCP directory API, please join our Discord server