インストール
コンテンツ詳細
代替品
インストール
{
"mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}
{
"mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp"
}
}
}
{
"claude.mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}
{
"mcpServers": [
{
"name": "maxminddb",
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
]
}
{
"cline.mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}🚀 MaxMindDB MCP Server
強力なモデルコンテキストプロトコル(MCP)サーバーです。MaxMindDBデータベースを通じて、包括的な地理的位置情報とネットワークインテリジェンスを提供します。高度なフィルタリング、ステートフルな反復処理、自動更新機能を備え、GeoIP2、GeoLite2、およびカスタムMMDBファイルをクエリできます。
⚠️ 重要なお知らせ
このプロジェクトは非公式のものであり、MaxMind Inc.によって承認されていません。このMCPサーバーは独立した実装です。公式のMaxMind製品とサポートについては、maxmind.comをご覧ください。
✨ 主な機能
- 複数のデータソース:MaxMindアカウント、ディレクトリスキャン、およびGeoIP.conf互換性
- 高度なフィルタリング:11種類以上の演算子(等価、正規表現、比較など)を使用して、任意のMMDBフィールドでクエリを実行できます
- ステートフルな反復処理:再開可能なイテレータを使用して、大規模なネットワーク範囲を効率的に処理できます
- 自動更新:MaxMindから自動的にデータベースをダウンロードし、更新します
- ファイル監視:新しいまたは更新されたデータベースファイルを動的に読み込みます
- 柔軟な設定:GeoIP.confのフォールバックサポートを備えたTOML設定
🚀 クイックスタート
📦 インストール
オプション1:Goからインストール
go install github.com/oschwald/maxminddb-mcp/cmd/maxminddb-mcp@latest
オプション2:ソースからビルド
git clone https://github.com/oschwald/maxminddb-mcp.git
cd maxminddb-mcp
go build -o maxminddb-mcp cmd/maxminddb-mcp/main.go
基本的な設定
~/.config/maxminddb-mcp/config.tomlを作成します:
mode = "maxmind"
auto_update = true
update_interval = "24h"
[maxmind]
account_id = 123456
license_key = "your_license_key_here"
editions = ["GeoLite2-City", "GeoLite2-Country", "GeoLite2-ASN"]
database_dir = "~/.cache/maxminddb-mcp/databases"
クライアント統合
Claude Desktop
Claude Desktopの設定ファイルに追加します:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%/Claude/claude_desktop_config.json
Linux:~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}
既存のGeoIP.confを使用する場合:
{
"mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp"
}
}
}
Claude Code CLI
Claude Code CLIにMCPサーバーを追加します:
claude mcp add maxminddb maxminddb-mcp
カスタム設定を使用する場合:
MAXMINDDB_MCP_CONFIG=/path/to/config.toml claude chat
Claude Code (VS Code拡張機能)
Claude Code拡張機能をインストールし、VS Codeの設定に追加します:
{
"claude.mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}
Continue
Continue拡張機能をインストールし、Continueの設定(~/.continue/config.json)に追加します:
{
"mcpServers": [
{
"name": "maxminddb",
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
]
}
Zed
Zedの設定(~/.config/zed/settings.json)に追加します:
{
"assistant": {
"mcp_servers": [
{
"name": "maxminddb",
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
]
}
}
Cline
Clineをインストールし、VS Codeの設定に追加します:
{
"cline.mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}
Gemini CLI
Gemini CLIの設定に追加します:
{
"mcpServers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}
詳細については、Gemini CLI MCPガイドを参照してください。
Codex
Codexの設定ファイルに追加します:
[mcp_servers.maxminddb]
command = "maxminddb-mcp"
env = { MAXMINDDB_MCP_CONFIG = "/path/to/your/config.toml" }
または、カスタム設定を使用しない場合:
[mcp_servers.maxminddb]
command = "maxminddb-mcp"
Sourcegraph Cody
Codyの設定に追加します:
{
"cody.experimental.mcp": {
"servers": {
"maxminddb": {
"command": "maxminddb-mcp",
"env": {
"MAXMINDDB_MCP_CONFIG": "/path/to/your/config.toml"
}
}
}
}
}
LLM (Simon Willison)
LLMツールをインストールし、MCPを設定します:
# LLMをインストール
pip install llm
# MCPサーバーを設定
llm mcp install maxminddb-mcp --command maxminddb-mcp
# 環境変数を使用して実行
MAXMINDDB_MCP_CONFIG=/path/to/config.toml llm chat -m claude-3.5-sonnet
Python SDK
pip install mcp
from mcp import ClientSession, StdioServerParameters
async with ClientSession(
StdioServerParameters(
command="maxminddb-mcp",
env={"MAXMINDDB_MCP_CONFIG": "/path/to/config.toml"}
)
) as session:
await session.initialize()
tools = await session.list_tools()
result = await session.call_tool("lookup_ip", {"ip": "8.8.8.8"})
TypeScript SDK
npm install @modelcontextprotocol/sdk
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "maxminddb-mcp",
env: { MAXMINDDB_MCP_CONFIG: "/path/to/config.toml" },
});
const client = new Client(
{
name: "maxminddb-client",
version: "1.0.0",
},
{ capabilities: {} }
);
await client.connect(transport);
const result = await client.callTool({
name: "lookup_ip",
arguments: { ip: "8.8.8.8" },
});
Go SDK
go get github.com/mark3labs/mcp-go
import (
"github.com/mark3labs/mcp-go/client"
"github.com/mark3labs/mcp-go/transport/stdio"
)
cmd := exec.Command("maxminddb-mcp")
cmd.Env = append(cmd.Env, "MAXMINDDB_MCP_CONFIG=/path/to/config.toml")
transport := stdio.NewTransport(cmd)
mcpClient := client.New(transport)
// ... use client
コマンドラインテスト
JSON-RPCを使用してサーバーを直接テストします:
# 利用可能なツールをリストする
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | maxminddb-mcp
# IPルックアップをテストする
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"lookup_ip","arguments":{"ip":"8.8.8.8"}}}' | maxminddb-mcp
# jqを使用して整形した出力を表示する
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | maxminddb-mcp | jq .
設定に関する注意事項
パス要件:maxminddb-mcpがシステムのPATHに含まれていることを確認するか、バイナリへの完全なパスを指定してください。
環境変数:すべてのクライアントは、以下の環境変数をサポートしています:
MAXMINDDB_MCP_CONFIG:設定ファイルへのパスMAXMINDDB_MCP_LOG_LEVEL:ログレベル(debug、info、warn、error)MAXMINDDB_MCP_LOG_FORMAT:ログ形式(text、json)
セキュリティ:機密設定(APIキー)は、クライアント設定の環境変数ではなく、適切なパーミッション(600)を持つファイルに保存してください。
📚 ドキュメント
設定モード
サーバーは3つの設定モードをサポートしています(順番にチェックされます):
- 環境変数:
MAXMINDDB_MCP_CONFIG - ユーザー設定:
~/.config/maxminddb-mcp/config.toml - GeoIP.conf互換性:
/etc/GeoIP.confまたは~/.config/maxminddb-mcp/GeoIP.conf
TOML設定
完全な設定例
# 動作モード: "maxmind", "directory", または "geoip_compat"
mode = "maxmind"
# 自動更新設定
auto_update = true
update_interval = "24h"
# イテレータ設定
iterator_ttl = "10m"
iterator_cleanup_interval = "1m"
# ロギング(オプション)
log_level = "info" # debug, info, warn, error
log_format = "text" # text, json
[maxmind]
# MaxMindアカウントの資格情報
account_id = 123456
license_key = "your_license_key_here"
# ダウンロードするデータベース
editions = [
"GeoLite2-City",
"GeoLite2-Country",
"GeoLite2-ASN",
"GeoIP2-City",
"GeoIP2-Country"
]
# 保存先
database_dir = "~/.cache/maxminddb-mcp/databases"
# カスタムエンドポイント(オプション)
# endpoint = "https://updates.maxmind.com"
[directory]
# ディレクトリモードの場合 - MMDBファイルをスキャンするパス
paths = [
"/path/to/mmdb/files",
"/another/path"
]
[geoip_compat]
# GeoIP.conf互換モードの場合
config_path = "/etc/GeoIP.conf"
database_dir = "/var/lib/GeoIP"
設定オプション
イテレータ設定:
iterator_ttl(デフォルト:"10m"):アイドル状態のイテレータがクリーンアップされるまでの時間iterator_cleanup_interval(デフォルト:"1m"):期限切れのイテレータをチェックする頻度
GeoIP.conf互換性
既存のGeoIP.confユーザー
サーバーは自動的に既存のGeoIP.confファイルを検出し、使用します:
# 例: GeoIP.conf
AccountID 123456
LicenseKey your_license_key_here
EditionIDs GeoLite2-Country GeoLite2-City GeoLite2-ASN
DatabaseDirectory /var/lib/GeoIP
追加の設定は必要ありません - サーバーは自動的に互換モードを使用します。
利用可能なツール
コアツール
lookup_ip
特定のIPアドレスの地理的位置情報とネットワーク情報を検索します。
パラメータ:
ip(必須):検索するIPアドレス(IPv4またはIPv6)database(オプション):クエリする特定のデータベースファイル名
例:
{
"name": "lookup_ip",
"arguments": {
"ip": "8.8.8.8",
"database": "GeoLite2-City.mmdb"
}
}
レスポンス:
{
"ip": "8.8.8.8",
"network": "8.8.8.0/24",
"data": {
"country": {
"iso_code": "US",
"names": { "en": "United States" }
},
"location": {
"latitude": 37.4056,
"longitude": -122.0775
}
}
}
lookup_network
強力なフィルタリング機能を使用して、ネットワーク範囲内のすべてのIPアドレスをクエリします。
パラメータ:
network(必須):スキャンするCIDRネットワーク(例:"192.168.1.0/24")database(オプション):クエリする特定のデータベースfilters(オプション):フィルタオブジェクトの配列。各オブジェクトには、field、operator、およびvalueが含まれている必要があります。filter_mode(オプション):"and"(デフォルト)または"or"max_results(オプション):返す最大結果数(デフォルト:1000)iterator_id(オプション):既存のイテレータを再開するresume_token(オプション):期限切れのイテレータのフォールバックトークン
フィルタリングの例
国でフィルタリングする:
{
"name": "lookup_network",
"arguments": {
"network": "10.0.0.0/8",
"filters": [
{
"field": "country.iso_code",
"operator": "in",
"value": ["US", "CA", "MX"]
}
]
}
}
住宅用IPをフィルタリングする:
{
"name": "lookup_network",
"arguments": {
"network": "192.168.0.0/16",
"filters": [
{
"field": "traits.user_type",
"operator": "equals",
"value": "residential"
}
]
}
}
一般的な間違いとバリデーション
- フィルタを
"traits.user_type=residential"のような文字列として渡さないでください。サーバーはこれを拒否し、オブジェクトを使用するようにヒントを表示します:{ "field": "traits.user_type", "operator": "equals", "value": "residential" }。 filtersはオブジェクトの配列である必要があります。他のタイプは無効です。operatorはサポートされているものである必要があります(以下のリストを参照)。短いエイリアス(eq、ne、gt、gte、lt、lte)も受け付けられます。
複雑なフィルタリング(非プロキシIP):
{
"name": "lookup_network",
"arguments": {
"network": "10.0.0.0/24",
"filters": [
{
"field": "traits.is_anonymous_proxy",
"operator": "equals",
"value": false
},
{
"field": "traits.is_satellite_provider",
"operator": "equals",
"value": false
}
],
"filter_mode": "and"
}
}
list_databases
すべての利用可能なMaxMindデータベースとそのメタデータをリストします。
例:
{
"name": "list_databases",
"arguments": {}
}
レスポンス:
{
"databases": [
{
"name": "GeoLite2-City.mmdb",
"type": "City",
"description": "GeoLite2 City Database",
"last_updated": "2024-01-15T10:30:00Z",
"size": 67108864
}
]
}
update_databases
手動でデータベースの更新をトリガーします(MaxMind/GeoIPモードのみ)。
例:
{
"name": "update_databases",
"arguments": {}
}
フィルタ演算子
サポートされている演算子:
equals:完全一致not_equals:値と等しくないin:値が提供された配列に含まれているnot_in:値が提供された配列に含まれていないcontains:文字列が部分文字列を含むregex:正規表現に一致するgreater_than:数値比較greater_than_or_equal:数値比較(≥)less_than:数値比較less_than_or_equal:数値比較(≤)exists:フィールドが存在する(ブール値)
演算子のエイリアス: 利便性のため、短い演算子エイリアスがサポートされています(大文字と小文字を区別しません):
eq→equalsne→not_equalsgt→greater_thangte→greater_than_or_equallt→less_thanlte→less_than_or_equal
エラー処理
すべてのツールは、機械可読なエラーコードを含む構造化されたエラーレスポンスを返します:
{
"error": {
"code": "db_not_found",
"message": "Database not found: invalid_db.mmdb"
}
}
一般的なエラーコード:
db_not_found:指定されたデータベースが存在しませんinvalid_ip:IPアドレスの形式が無効ですinvalid_network:ネットワークCIDRの形式が無効ですinvalid_filter:フィルタのバリデーションに失敗しましたiterator_not_found:イテレータIDが見つからないか、期限切れですparse_error:リクエストパラメータの解析に失敗しました
🔧 技術詳細
ステートフルイテレータシステム
大規模なネットワーククエリの場合、サーバーはステートフルイテレータシステムを使用します:
- 高速パス:
iterator_idを使用してアクティブな反復処理を再開します - 回復力のあるパス:期限切れ後に
resume_tokenから再開します - 自動クリーンアップ:TTL後に期限切れのイテレータをクリーンアップします
- 効率的なスキップ:再処理せずに再開ポイントにスキップします
反復処理のワークフローの例:
// 最初の呼び出し - イテレータを作成する
{
"name": "lookup_network",
"arguments": {
"network": "10.0.0.0/8",
"max_results": 1000
}
}
// レスポンスには、続きを行うためのiterator_idが含まれている
{
"results": [...],
"iterator_id": "iter_abc123",
"resume_token": "eyJ0eXAiOiJKV1Q...",
"has_more": true
}
// iterator_idを使用して続きを行う(高速パス)
{
"name": "lookup_network",
"arguments": {
"network": "10.0.0.0/8",
"iterator_id": "iter_abc123",
"max_results": 1000
}
}
自動更新
自動データベース更新
TOML設定で自動更新を構成します:
auto_update = true
update_interval = "24h" # 24時間ごとにチェックする
サーバーは以下のことを行います:
- 指定された間隔でデータベースの更新をチェックします
- MD5チェックサムが変更された場合のみダウンロードします
- アクティブなクエリを中断せずにデータベースを正常に再読み込みします
- 更新ステータスとエラーをログに記録します
手動更新:
update_databasesツールを使用して即時更新をトリガーします。
ファイル監視
ファイル監視を使用したディレクトリモード
ディレクトリモードでは、サーバーはファイルシステムの変更を監視します:
mode = "directory"
[directory]
paths = ["/path/to/mmdb/files"]
サポートされているイベント:
- 作成:新しいMMDBファイルを自動的に読み込みます
- 書き込み:変更されたデータベースを再読み込みします
- 削除:利用可能なリストからデータベースを削除します
- 名前変更:ファイルの名前変更を正常に処理します
サブディレクトリのサポート:すべてのサブディレクトリを再帰的に監視して、MMDBファイルを検出します。
トラブルシューティング
一般的な問題
サーバーが起動しない
設定を確認する:
# 設定ファイルの構文を検証する
maxminddb-mcp --help
# 設定の読み込みをテストする
MAXMINDDB_MCP_LOG_LEVEL=debug maxminddb-mcp
一般的な原因:
- 設定ファイルのTOML構文が無効です
- MaxMindの資格情報が不足しています
- ファイルのパーミッションが不十分です
- データベースディレクトリのパスが無効です
データベースの読み込みに失敗する
データベースのステータスを確認する:
# デバッグログを有効にする
MAXMINDDB_MCP_LOG_LEVEL=debug maxminddb-mcp
一般的な原因:
- MMDBファイルが破損しています(ファイルの整合性を確認してください)
- ダウンロードに必要なディスクスペースが不足しています
- updates.maxmind.comへのネットワーク接続に問題があります
- MaxMindのサブスクリプションが期限切れです
Claude Desktopとの統合
サーバーのパスを確認する:
# サーバーがPATHに含まれていることを確認する
which maxminddb-mcp
# サーバーを直接テストする
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | maxminddb-mcp
設定ファイルの場所:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
デバッグモード
トラブルシューティングのために詳細なログを有効にします:
# 環境変数
MAXMINDDB_MCP_LOG_LEVEL=debug
MAXMINDDB_MCP_LOG_FORMAT=json
# またはconfig.tomlで
log_level = "debug"
log_format = "json"
設定の検証
サーバーは起動時にすべての設定を検証し、詳細なエラーメッセージを提供します:
- 各モードに必要なフィールド
- 有効な期間形式(例:"24h"、"10m")
- パスの展開と検証
- ネットワーク接続のチェック
パフォーマンスに関する考慮事項
メモリ使用量
- 基本メモリ:約50MB
- データベースストレージ:エディションに応じて100-500MB
最適化のヒント
- 不要な反復処理を避ける:選択的なフィルタと適切な
max_resultsを使用します - データベースの選択:必要なエディションのみをダウンロードして、メモリ使用量を削減します
- 更新頻度:
update_intervalを使用して、最新性とネットワーク使用量のバランスを取ります - フィルタの効率:早期に選択的なフィルタを使用して、処理を削減します
リソース制限
- 同時イテレータ:ハード制限はありません。TTLクリーンアップによって管理されます
- ネットワーククエリサイズ:利用可能なメモリと
max_resultsによって制限されます - データベースファイルサイズ:数GBまでのデータベースをサポートします
📄 ライセンス
このプロジェクトはISCライセンスの下でライセンスされています - 詳細については、LICENSEファイルを参照してください。
コントリビューション
コントリビューションは大歓迎です!プルリクエストの送信方法、問題の報告方法、および改善提案の詳細については、コントリビューションガイドを読んでください。
サポート
- 問題:GitHub Issues
- ディスカッション:GitHub Discussions
代替品













