MCP News API Server について
MCP News API Serverは、2つのMCPツールを通じてNews APIの記事検索とトップニュース取得を提供します。記事データを扱うMCPクライアントやワークフロー向けで、複数の条件で絞り込めます。
主な機能
- 01キーワードと条件による記事検索
- 02カテゴリ別トップニュースの取得
- 03ソース、ドメイン、日付、言語による絞り込み
- 04記事結果の並べ替えとページ分割
- 05記事メタデータと本文の返却
活用シーン
- 01テーマと期間を指定した記事検索
- 02国やカテゴリ別のトップニュース取得
- 03ニュース記事データのMCPワークフローへの取り込み
MCP 対応
MCP サーバーとして `search_articles` と `get_top_headlines` を MCP クライアントに公開します。stdio で通信し、News API キーは `NEWSAPI_KEY` から読み込みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP News API サーバー
News API(https://newsapi.org)のエンドポイントを公開し、ニュース記事の検索と取得を行う Model Context Protocol(MCP)サーバーです。このサーバーを使うと、MCP プロトコル経由でニュースデータにプログラムからアクセスできます。
前提条件
- Node.js(v18 以降を推奨)
- npm(Node.js に付属)
- News API キー(https://newsapi.org から取得してください)
- (任意)MCP 対応のクライアントまたはランナー(例:VSCode 拡張機能、CLI)
セットアップ
-
リポジトリをクローンするか、プロジェクトディレクトリにいることを確認してください。
-
依存関係をインストールします:
npm install -
サーバーをビルドします:
npm run buildコンパイル済みの JavaScript コードを含む
buildディレクトリが作成されます。 -
News API キーを設定します: サーバーは
NEWSAPI_KEY環境変数から API キーを読み取ります。サーバーを実行する前に、この変数を環境に設定してください。 例(Bash/Zsh):export NEWSAPI_KEY="YOUR_API_KEY""YOUR_API_KEY"を実際の News API キーに置き換えてください。
サーバーの実行
-
直接実行:
NEWSAPI_KEY環境変数が設定されていることを確認してから、次を実行します:node build/index.jsまたは、start スクリプトがある場合は、次を実行します:
npm run start -
MCP ランナー経由: stdio トランスポートを使用してサーバーを実行するように、MCP クライアントを設定してください。MCP ランナーの設定で、API キーの環境変数も設定する必要があります。 MCP 設定の例:
"mcp-newsapi": { "transportType": "stdio", "command": "node", "args": [ "/path/to/mcp-newsapi/build/index.js" ], "environment": { "NEWSAPI_KEY": "YOUR_API_KEY" } // ... other optional settings ... }"YOUR_API_KEY"を実際の News API キーに置き換えてください。
利用可能なツール
このサーバーは、News API のエンドポイントに対応する次のツールを MCP 経由で公開します:
search_articles
- 説明: News API の「Everything」エンドポイントを使用してニュース記事を検索します。
- 入力:
q(string、必須):記事のタイトルと本文を検索するキーワードまたはフレーズ。sources(string、任意):見出しを取得するニュースソースまたはブログの識別子をカンマ区切りで指定します。domains(string、任意):検索対象のドメイン(例:bbc.co.uk、techcrunch.com)をカンマ区切りで指定します。excludeDomains(string、任意):検索対象から除外するドメイン(例:bbc.co.uk、techcrunch.com)をカンマ区切りで指定します。from(string、任意):取得対象として許可する記事の最も古い日付と、任意の時刻です。形式:YYYY-MM-DD または YYYY-MM-DDTHH:MM:SS(例:2024-01-01 または 2024-01-01T10:00:00)。to(string、任意):取得対象として許可する記事の最も新しい日付と、任意の時刻です。形式:YYYY-MM-DD または YYYY-MM-DDTHH:MM:SS。language(string、任意):見出しを取得する言語の 2 文字の ISO 639-1 コードです。指定可能な値:ar、de、en、es、fr、he、it、nl、no、pt、ru、sv、ud、zh。デフォルト:すべての言語を返します。sortBy(enum:'relevancy'、'popularity'、'publishedAt'、任意):記事の並び順です。指定可能な値:relevancy、popularity、publishedAt。デフォルト:relevancy。pageSize(integer、任意、デフォルト 100):1 ページ(リクエスト)あたりに返す結果の数です。デフォルトは 20、最大は 100 です。page(integer、任意、デフォルト 1):見つかった結果の合計が pageSize を超える場合に、結果のページを指定するために使用します。
- 出力:
status、totalResults、およびソース、著者、タイトル、説明、URL、画像 URL、公開日、コンテンツなどの詳細を含むarticles配列を持つオブジェクト。
get_top_headlines
- 説明: News API の「Top Headlines」エンドポイントを使用して、トップニュースの見出しを取得します。
- 入力:
q(文字列、省略可):記事のタイトルと本文で検索するキーワードまたはフレーズです。sources(文字列、省略可):見出しを取得するニュースソースまたはブログの識別子を、カンマ区切りで指定します。category(列挙型:'business'、'entertainment'、'general'、'health'、'science'、'sports'、'technology'、省略可):見出しを取得するカテゴリです。選択肢:business、entertainment、general、health、science、sports、technology。language(文字列、省略可):見出しを取得する言語の2文字の ISO 639-1 コードです。選択肢:ar、de、en、es、fr、he、it、nl、no、pt、ru、sv、ud、zh。デフォルト:すべての言語を返します。country(文字列、省略可):見出しを取得する国の2文字の ISO 3166-1 国コードです。選択肢:ae、ar、at、au、be、bg、br、ca、ch、cn、co、cu、cz、de、eg、fr、gb、gr、hk、hu、id、ie、il、in、it、jp、kr、lt、lv、ma、mx、my、ng、nl、no、nz、ph、pl、pt、ro、rs、ru、sa、se、sg、si、sk、th、tr、tw、ua、us、ve、za。デフォルト:すべての国を返します。pageSize(整数、省略可、デフォルト 100):1ページ(リクエスト)あたりに返す結果数です。デフォルトは20、最大は100です。page(整数、省略可、デフォルト 1):見つかった結果の総数がpageSizeを超える場合に、結果のページを切り替えるために使用します。
- 出力:
status、totalResults、およびソース、著者、タイトル、説明、URL、画像 URL、公開日、コンテンツなどの詳細を含むarticles配列を格納したオブジェクトです。
エラー処理
このサーバーは、News API の応答に基づいて、わかりやすいエラーメッセージを提供するよう努めます。API 呼び出しが失敗すると、ツールは失敗の詳細を含むエラーをスローします。利用可能な場合は、News API のエラーメッセージとコードも含まれます。
拡張
News API のエンドポイントをツールとして追加するには、src/tools/ に新しい TypeScript ファイルを作成し、Zod を使用して入力スキーマを定義し、News API SDK を呼び出すハンドラー関数を実装して、ツール定義をエクスポートします。その後、src/tools/index.ts で新しいツールをインポートして登録します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。