quake-lens MCP server

quake-lens MCP server

Provides tools to fetch recent earthquake data from JMA/P2P/USGS catalogs and compute Gutenberg-Richter b-value and Omori-Utsu aftershock decay statistics using maximum likelihood estimation.

Category
访问服务器

README

quake-lens

quake-lens

License: MIT Python 3.10+ Runtime deps

公開地震データの取得と統計分析を行うCLI + MCPサーバ。地震の「予知」はできないが、「予測(forecasting)」として科学的に成立している統計量 — b値、大森・宇津則による余震減衰 — を公開APIのカタログから計算する。

Earthquake statistics CLI & MCP server in pure-stdlib Python: Gutenberg-Richter b-value (Aki MLE) and Omori-Utsu aftershock decay (Ogata MLE) from public catalogs (JMA / P2P / USGS).

📖 解説記事: 地震予知はなぜ無理で、余震予測はなぜできるのか — 能登の余震130件で実測

Status

v1 実装済み: recent(P2P / JMA) / catalog(USGS) / bvalue / omori + MCPサーバ(4 tools)

Install / run

git clone https://github.com/kenimo49/quake-lens.git
cd quake-lens
python3 -m quake_lens --help   # インストール不要でそのまま動く

# pip install する場合
pip install .            # CLI のみ
pip install ".[mcp]"     # MCPサーバ込み
quake-lens --help

ランタイム依存は Python 標準ライブラリのみ(urllib / json / math / datetime / argparse)。

Subcommands

recent — 直近の地震リスト (P2P地震情報 / 気象庁)

python3 -m quake_lens recent --limit 5 --min-scale 30
python3 -m quake_lens recent --limit 5 --src jma

出力(table形式):

time                      lat       lon   depth   mag  src   place
2024-01-01T07:10:00Z    37.500   137.300    10.0   7.6  p2p   石川県能登地方
2024-01-01T07:12:00Z    37.400   137.200    10.0   5.8  p2p   石川県能登地方

--format json で正規化イベントJSONを出力。

--src で取得元を選べる(default: p2p)。jma は気象庁の地震リスト (list.json) を直接取得する。同一地震の続報は最新の1件に集約される。 --min-scale はP2Pのscale値前提のフィルタなので --src p2p 専用 (jma と併用するとエラー)。

catalog — USGSカタログ取得

python3 -m quake_lens catalog \
  --start 2024-01-01 --end 2024-01-02 \
  --min-mag 5.0 --bbox 24,122,46,146 \
  --format json

出力(json形式):

[
  {
    "time": "2024-01-01T09:10:00Z",
    "lat": 37.5,
    "lon": 137.3,
    "depth_km": 10.0,
    "mag": 7.6,
    "place": "Noto Peninsula, Japan",
    "source": "usgs"
  }
]

--bbox のデフォルトは日本周辺 24,122,46,146

bvalue — Gutenberg-Richter b値推定 (Aki MLE)

正規化イベントJSON(ファイル or stdin)から b値を推定:

python3 -m quake_lens catalog --min-mag 2.0 --format json > events.json
python3 -m quake_lens bvalue events.json --mc 2.5

出力:

b       = 0.9873
se      = 0.0139
n_used  = 5024
mc      = 2.50
mean_m  = 2.990

stdin 経由:

cat events.json | python3 -m quake_lens bvalue - --mc 2.5 --format json

--mc は completeness magnitude(必須)。M < Mc のイベントは除外される。SE は Aki (1965) 近似 b / √N

omori — 修正大森・宇津則フィット (Ogata MLE)

余震系列に対して λ(t) = K / (t + c)^p をフィット:

python3 -m quake_lens omori aftershocks.json \
  --mainshock 2024-01-01T07:10:00Z

出力:

K       = 152.7413
c       = 0.0219
p       = 1.0834
logL    = -234.5610
n_used  = 812
window  = [0.0000, 10.5432] days

最適化は pure Python の Nelder-Mead(外部ライブラリなし)。

出力フィールド(b / se / mc / K / c / p / logL など)の意味は docs/glossary.md を、尤度計算の中身(Aki MLE / Ogata MLE の導出と最適化手順)は docs/likelihood.md を参照。

MCP server

LLMクライアント(Claude Code / Claude Desktop 等)向けに、4 tools (get_recent / get_catalog / estimate_bvalue / fit_omori)を公開する MCPサーバを同梱している。mcp SDK は optional dependency で、base install の stdlib-only は維持される:

pip install "quake-lens[mcp]"
claude mcp add quake-lens -- quake-lens-mcp

設計判断(optional依存、tool分離、統計toolがイベント配列を引数に取らない理由)は docs/mcp.md を参照。

ドキュメント

ドキュメント 内容
docs/glossary.md 出力フィールドの読み方(b値・Mc・K/c/p の意味)
docs/likelihood.md 尤度計算の導出(Aki MLE / Ogata MLE・プロファイル尤度・最適化手順)
docs/mcp.md MCPサーバの設計判断と Claude Code / Claude Desktop への登録手順

Data sources

Design principles

  • ランタイム依存は標準ライブラリのみ
  • HTTP取得は quake_lens/sources/ に隔離、fetch関数は注入可能(テストではfixture JSONを注入)
  • 統計計算 quake_lens/stats/ は純関数(ネットワーク・IOなし)
  • テストは fixture ベースで決定的(実APIを叩かない)

Normalized event schema

全ソースはこの形に正規化される:

{
  "time":     "2024-01-01T07:10:00Z",
  "lat":      37.5,
  "lon":      137.3,
  "depth_km": 10.0,
  "mag":      7.6,
  "place":    "石川県能登地方",
  "source":   "p2p"
}

source"p2p", "usgs", "jma" のいずれか。

Tests

python3 -m pytest -q

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选