抽象API MCPサーバー
抽象APIサービスを用いたメールと電話の検証ツールを提供する、モデルコンテキストプロトコル(MCP)サーバーです。このサーバーはFastMCPで構築されており、AIアプリケーションやワークフローに検証機能を簡単に統合できます。
概要
この MCP サーバーは、3 つの主要な検証ツールを公開します。
- メール検証:包括的なメールアドレスの検証と確認
- 電話認証:190か国以上の電話番号認証
- メールレピュテーション:セキュリティに関する洞察を備えた高度なメールレピュテーション分析
特徴
メール検証
- フォーマット検証
- 配信可能性の確認
- ドメイン検証
- SMTP検証
- 使い捨て/ロール/キャッチオールメールの検出
- 品質スコアリング
電話認証
- 国際電話番号の検証
- フォーマットの標準化(国際/ローカル)
- 国とキャリアの識別
- 電話の種類の検出(携帯電話、固定電話など)
- 位置情報
メールレピュテーション
- 包括的な配信可能性分析
- 品質スコアリングとリスク評価
- 送信者と組織の識別
- ドメインセキュリティ分析(DMARC、SPF)
- データ侵害履歴の追跡
- 詐欺および不正行為の検出
前提条件
インストール
オプション1: uvを使用する(推奨)
- リポジトリをクローンします。
git clone https://github.com/avivshafir/abstractapi-mcp-server
cd abstractapi-mcp-server
- 仮想環境を作成し、依存関係をインストールします。
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 ツールとして自動的に公開されます。 - 型安全性: 完全な型ヒントと検証
- 簡単な非同期サポート:ネイティブのasync/awaitサポート
- 簡素化されたサーバー設定:最小限の定型コード
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レスポンスエラーの適切な処理
- 入力検証: 型チェックとパラメータ検証
- Graceful Degradation : デバッグのための意味のあるエラーメッセージ
API レート制限
抽象 API には、プランに応じて異なるレート制限があります。
- 無料プラン: 1秒あたり1リクエスト
- 有料プラン:より高いレート制限が利用可能
検証が成功したか失敗したかに関係なく、各 API 呼び出しは 1 クレジットとしてカウントされます。
発達
プロジェクト構造
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
新しいツールの追加
新しい抽象 API ツールを追加するには:
- APIエンドポイントURLを定数として追加する
@mcp.tool()
で装飾された新しい関数を作成する- パラメータと戻り値の説明を含む包括的なドキュメント文字列を追加する
- 既存のパターンに従ってエラー処理を実装する
例:
@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 ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。
サポート
以下に関連する問題について:
謝辞