Google Alerts Mcp について
Google Alerts Mcpは、トピック別にGoogle Alertsのニュースを検索するMCPサーバーです。ブラウザーの操作手順を再現し、検索ごとにページ状態とセッションデータを動的に取得します。
主な機能
- 01トピック別のGoogle Alerts検索
- 02言語と地域の指定
- 03状態とセッションデータの動的取得
- 04記事のタイトル、リンク、要約、出典の解析
- 05リダイレクトURLの任意クリーニング
活用シーン
- 01特定トピックのニュース追跡
- 02指定した言語や地域でのニュース検索
- 03Googleのリダイレクトを介さない記事リンクの取得
MCP 対応
MCPクライアントに `search_google_alerts` ツールを提供し、検索語、言語、地域、URLクリーニングを指定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| clean_urls | boolean | いいえ | true の場合、Google のリダイレクトパラメーターを削除して直接のリンク先 URL を取得します(デフォルト:true) |
| language | string | いいえ | 言語コード(例:'zh-CN'、'en-US') |
| query | string | はい | 検索するクエリ/トピック(例:'白银'、'artificial intelligence') |
| region | string | いいえ | 地域コード(例:'US'、'CN') |
詳細
Google Alerts MCP サーバー
MCP(Model Context Protocol)ベースの Google Alerts プラグインです。ブラウザーのワークフローをシミュレートして、特定のトピックに関するニュースを取得します。このプラグインは Google Alerts ページの状態パラメーターを動的に抽出し、検出やブロックを回避します。
この MCP サーバーは Google のサービスにアクセスする必要があり、地域によってはインターネットへのアクセス環境が必要です。
機能
- 動的な状態の抽出:Google Alerts ページから
window.STATEパラメーターを自動的に抽出します - 検出防止機能:リクエストごとに新しいトークンとセッション Cookie を使用して、ブロックを回避します
- 多言語対応:中国語、英語など、複数の言語で検索できます
- ブラウザーのワークフローをシミュレート:ホームページにアクセス → Cookie/状態を抽出 → プレビュー URL を構築する、というブラウザーのアクセス手順を完全にシミュレートします
- パラメーターのハードコードなし:すべての認証トークンと状態パラメーターを動的に抽出し、ハードコードされた値は使用しません
- URL のクリーンアップ:Google のリダイレクトパラメーターを削除して、ニュースのリンク先を直接取得するかどうかを設定できます
ワークフロー
- 初期 Cookie の取得:
https://www.google.com/alerts?hl={language}にアクセスして初期 Cookie を取得します - 状態パラメーターの抽出:認証トークンなどの
window.STATEパラメーターをページから抽出します - プレビュー URL の構築:抽出したパラメーターと検索クエリを使用してプレビュー URL を構築します
- コンテンツの取得:適切な Cookie と状態パラメーターを使用してプレビューページを取得します
- 記事の解析:HTML レスポンスから記事のタイトル、URL、要約、情報源を抽出します
インストール
UV パッケージマネージャーを使用します:
# 克隆项目
git clone https://github.com/ycrao/google-alerts-mcp.git
cd google-alerts-mcp
# 安装依赖
uv sync
# 激活虚拟环境
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 或者直接
uv run python src/google_alerts_mcp/server.py
使用方法
MCP サーバーとして実行する
MCP クライアントの設定に追加します:
{
"mcpServers": {
"google-alerts": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/google-alerts-mcp/src/google_alerts_mcp/",
"run",
"server.py"
],
"env": {}
}
}
}
または、パッケージとして公開済みの場合:
{
"mcpServers": {
"google-alerts": {
"command": "uvx",
"args": ["google-alerts-mcp"],
"env": {}
}
}
}
利用可能なツール
search_google_alerts
特定のトピックに関する Google Alerts のニュース記事を検索します。
パラメーター:
query(必須):検索クエリ/トピック(例:「白銀」、「bitcoin」、「人工知能」)language(任意):言語コード(デフォルト:「zh-CN」)region(任意):地域コード(デフォルト:「US」)clean_urls(任意):Google のリダイレクトパラメーターを削除して直接リンクを取得するかどうか(デフォルト:true)
例:
{
"query": "bitcoin",
"language": "en-US",
"region": "US",
"clean_urls": true
}
URL のクリーンアップ機能:
clean_urls=trueの場合、Google のリダイレクトパラメーターが自動的に削除され、ニュースサイトのリンク先が直接返されますclean_urls=falseの場合、元の Google リダイレクト URL が保持されます- クリーンアップ前:
https://www.google.com/url?q=https://example.com/article&sa=U&ved=... - クリーンアップ後:
https://example.com/article
技術的な詳細
動的なパラメーターの抽出
サーバーは window.STATE から次のパラメーターを抽出します:
domain:Google のドメイン(通常は "com")language:状態に含まれる言語コードregion:状態に含まれる地域コードnumber_param:数値パラメーター(言語によって異なります)locale_format:地域形式の文字列token:認証トークン(検出を回避するための重要な要素)
検出防止機能
- リクエストごとに新しいトークンを抽出
- セッション Cookie を保持
- 適切なブラウザーヘッダーを使用
- 認証パラメーターをハードコードしない
- トークンの抽出に失敗した場合は、適切にフォールバック
テスト
テストスイートを実行して機能を検証します:
# 测试完整 MCP 服务器功能
python test_mcp_server.py
テスト例
# 测试搜索功能
import asyncio
from google_alerts_mcp.server import GoogleAlertsClient
async def test():
client = GoogleAlertsClient()
try:
# 中文搜索
articles = await client.get_preview_content("白银", "zh-CN")
for article in articles:
print(f"标题: {article.title}")
print(f"链接: {article.url}")
print(f"摘要: {article.snippet}")
print(f"来源: {article.source}")
print("-" * 50)
# 英文搜索(启用URL清理)
client_clean = GoogleAlertsClient(clean_urls=True)
articles = await client_clean.get_preview_content("bitcoin", "en-US")
for article in articles:
print(f"Title: {article.title}")
print(f"URL: {article.url}") # 直接链接,无Google重定向参数
print(f"Snippet: {article.snippet}")
print(f"Source: {article.source}")
print("-" * 50)
await client_clean.close()
# 英文搜索(保留原始URL)
client_original = GoogleAlertsClient(clean_urls=False)
articles = await client_original.get_preview_content("bitcoin", "en-US")
for article in articles:
print(f"Title: {article.title}")
print(f"URL: {article.url}") # 包含Google重定向参数
print(f"Snippet: {article.snippet}")
print(f"Source: {article.source}")
print("-" * 50)
await client_original.close()
finally:
await client.close()
asyncio.run(test())
注意事項
- 動的トークン:システムは現在、動的に抽出したトークンのみに完全に依存し、ハードコードされた値は一切使用しません
- URL のクリーンアップ:URL のクリーンアップ機能はデフォルトで有効です。
clean_urls=falseパラメーターを指定すると、元の Google リダイレクト URL を保持できます - リクエスト頻度:リクエストを頻繁に行いすぎないようにし、適度な間隔を空けることをおすすめします
- エラー処理:トークンの抽出に失敗した場合、古いハードコード値を使うのではなく、リクエストは適切に失敗します
- リアルタイムの状態:検索ごとに新しい状態パラメーターを取得し、検出防止の効果を最大限に高めます
依存ライブラリ
- mcp:Model Context Protocol のサポート
- httpx:非同期 HTTP クライアント
- beautifulsoup4:HTML 解析
- pydantic:データの検証とシリアル化
ライセンス
MIT License
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。