Skip to main content
Glama

メキシコ郵便番号API 🇲🇽

Python 3.12FastAPIWALモードのSQLiteDockerで構築された超高速RESTful API。メキシコの公式郵便番号、集落、市区町村、州のカタログを1ミリ秒未満で応答するよう設計されています。


📜 法的帰属条項(CC BY 4.0による必須)

このAPIは、メキシコ郵便公社(SEPOMEX)がdatos.gob.mxを通じて公開している公式カタログから得た地理情報および郵便番号情報を、Creative Commons Attribution 4.0 Internationalライセンスの下で使用・処理しています。


🚀 主な特徴

  • API契約と仕様: docs/api_contract.md

  • 速度とパフォーマンス: Write-Ahead Logging(WAL)モードのSQLiteとorjsonシリアライゼーションによるサブミリ秒の応答時間。

  • サイバーセキュリティ: OWASPハードニング、セキュリティヘッダー、レート制限、Pydantic v2の厳格な正規表現バリデーション、Dockerの非rootユーザー。

  • エンタープライズエラー処理: リクエストごとに一意のX-Correlation-IDを持つRFC 7807(Problem Details)形式。

  • 監査とロギング: loguruによる構造化JSONログ、毎日深夜0時(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.txt

3. データ取り込みの実行(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 Key & JWT)

APIは.envから設定可能なハイブリッド認証スキームを備えています:

1. 動作モード(REQUIRE_AUTH

  • REQUIRE_AUTH=False(公開APIモード、デフォルト): エンドポイントは自由にアクセス可能。リクエスト制御はIPベースのレート制限(デフォルトで120 req/min)によって行われます。

  • REQUIRE_AUTH=True(保護されたエンタープライズAPIモード): 各リクエストでヘッダーに有効な認証情報を送信する必要があります。

2. サポートされている認証オプション

  1. ヘッダー X-API-Key:

    curl -H "X-API-Key: key-dev-12345" http://localhost:8000/api/v1/codigo-postal/01000
  2. JWT 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

🛠️ 利用可能なエンドポイント

メソッド

エンドポイント

説明

GET

/dashboard

可観測性、統計、GeoJSONマップを備えたインタラクティブなWebダッシュボード

GET

/api/v1/codigo-postal/{cp}

CPの詳細を照会(nombre_satとオプションのフォームバリデーションcoloniaestadomunicipioを含む)

POST

/api/v1/codigo-postal/batch-validate

1回のHTTPリクエストで最大100件の住所を一括検証・正規化

GET

/api/v1/codigo-postal/{cp}/geojson

標準GeoJSON形式(FeatureCollection)での座標と集落のエクスポート

GET

/api/v1/codigo-postal/autocomplete?prefix=01

2~5桁のプレフィックスによるリアルタイムオートコンプリート

GET

/api/v1/codigo-postal/cercanos?lat=19.43&lng=-99.13

地理的近接性による検索(Haversine + Bounding Box)

GET

/api/v1/asentamientos

アクセントなしのFTS5検索、複合フィルター、ページネーション、直接エクスポート(format=csv

GET

/api/v1/asentamientos/search?query=juarez

アクセントの影響を受けない集落の高速検索

GET

/api/v1/estados

32の連邦構成体のリスト(nombre_satを含む)

GET

/api/v1/estados/{c_estado}/municipios

州コードによる市区町村

GET

/api/v1/estados/{c_estado}/municipios/{c_municipio}

すべてのCPと集落を含む市区町村の完全な詳細

GET

/api/v1/estados/{c_estado}/geojson

州の完全な地理レイヤーをGeoJSON形式(FeatureCollection)でエクスポート

GET

/api/v1/estados/{c_estado}/pdf

エグゼクティブPDFレポートの生成とダウンロード(オプションのパラメータtitulosubtitulologo_url

GET

/static/mx-postal-widget.js

クライアント側のHTMLフォームを自動補完するJavaScriptウィジェット

GET

/api/v1/stats

SEPOMEXカタログのメトリクス統計と内訳

GET

/api/v1/logs

JSON形式のライブ監査ログとサーバーイベント

GET

/api/v1/attribution

CC BY 4.0法的帰属条項

GET

/metrics

Prometheus標準の監視メトリクス

GET

/health

Docker/K8s監視用のヘルスチェック


📦 公式SDKクライアント(mx-postal-client

このプロジェクトには、手動でHTTPリクエストを書かずにAPIを簡単に利用するための軽量SDKクライアントパッケージが2つ含まれています:

  • Python SDK(sdk/python):

    pip install ./sdk/python
    from 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/typescript
    import { 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には公式MCPサーバーscripts/mcp_server.py)が含まれており、AIエージェント(Claude Desktop、ChatGPT、Antigravity IDE、LangChain、AutoGPT)が自然言語でメキシコの公式地理データベースを照会・操作できます。

AI向け公開ツール:

  1. consultar_codigo_postal(cp): 完全な地理情報と集落リストを返します。

  2. validar_direccion_postal(codigo_postal, colonia, estado, municipio): SEPOMEXとのデータ一致をリアルタイムで検証します。

  3. 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.5 ms(RAM L1キャッシュ)

約120 ms

約15 ms

約2 ms

約200 ms

SAT CFDI 4.0標準

ネイティブ(nombre_sat

✅ ネイティブ

❌ 利用不可

❌ 利用不可

⚠️ 部分的

一括バリデーション(POST

最大100 req/リクエスト

❌ 利用不可

❌ 利用不可

❌ 利用不可

❌ 利用不可

ベクトルGeoJSON(CPと州)

完全(Point & Bounds)

❌ 利用不可

❌ 利用不可

❌ 利用不可

❌ 利用不可

エグゼクティブPDFレポート

ネイティブ(ReportLab)

❌ 利用不可

❌ 利用不可

❌ 利用不可

❌ 利用不可

JavaScriptフロントエンドウィジェット

mx-postal-widget.js

❌ 利用不可

❌ 利用不可

❌ 利用不可

⚠️ カスタムJS

AIエージェント用MCPサーバー

scripts/mcp_server.py

❌ 利用不可

✅ 含まれている

❌ 利用不可

❌ 利用不可

公式SDK(Python/TS)

mx-postal-client

❌ HTTPリクエスト

❌ HTTPリクエスト

❌ HTTPリクエスト

❌ HTTPリクエスト

ペイロードサイズ保護(1 MB)

RequestBodyLimit

⚠️ 不明

❌ 利用不可

⚠️ プロキシレベル

⚠️ プロキシレベル

運用コスト

$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%のトークン節約


🧪 テストの実行

pytest
-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all MCP Connectors

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/alonsomaciasm/codigos-postales-api'

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