mcpField
M
mcp-newsapi

mcp-newsapi

ローカル
github.com/nubiia-dev検索01 週間前に更新

mcp-newsapi について

mcp-newsapiは、AIアシスタントからNewsAPI.aiのニュース記事、イベント、トレンド、利用状況を参照する読み取り専用MCPサーバーです。従量制トークンの使用を制御する仕組みを備えています。

主な機能

  1. 01記事の検索と取得
  2. 02イベントの検索と取得
  3. 03概念や絞り込み条件の候補表示
  4. 04トレンド概念の確認
  5. 05トークン使用量と上限の確認

活用シーン

  1. 01特定の対象に関する最新報道の検索
  2. 02同じイベントを扱う記事の確認
  3. 03名称を正確なエンティティURIに変換
  4. 04残りのAPIトークン予算の監視

MCP 対応

NewsAPI.aiの記事やイベントの検索、概念や条件の候補表示、トレンド取得、アカウント利用状況の確認に使える10個の読み取り専用ツールをMCPクライアントに公開します。セッションごとのトークン予算とローカル制限で、従量制検索の使用量を管理します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"nubiia-dev-mcp-newsapi": {
"command": "npx",
"args": [
"-y",
"@nubiia/mcp-newsapi"
],
"env": {
"NEWSAPI_AI_API_KEY": "<NEWSAPI_AI_API_KEY>",
"NEWSAPI_AI_MAX_TOKENS_PER_SESSION": "<NEWSAPI_AI_MAX_TOKENS_PER_SESSION>"
}
}
}
}
起動コマンドnpx -y @nubiia/mcp-newsapi
設定が必要な環境変数
NEWSAPI_AI_API_KEYシークレットYour NewsAPI.ai API key (newsapi.ai → Dashboard).
NEWSAPI_AI_MAX_TOKENS_PER_SESSIONシークレットMax NewsAPI.ai tokens this server may spend per session (process lifetime). Defaults to 200.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@nubiia/mcp-newsapi1.0.2

ツール

10

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
langanyいいえ3 文字の ISO 639-3 言語コード。例:"spa" または ["eng", "spa"]。OR 条件で検索します。単一の文字列または文字列の配列を受け付けます。
pageintegerいいえ結果ページ。1 から始まります(デフォルトは 1)。
countintegerいいえページあたりの記事数。1~100(デフォルトは 10)。コンテキストを節約するため、小さい値にしてください。
keywordstringいいえトピックや一般用語を検索する自由形式のキーワードまたはフレーズ(例:"inflation"、"wildfire")。企業、人、場所、組織には使用しないでください。一般的な単語が名前としても使われるため(例:"Telefónica" は一般的なスペイン語の形容詞 "telefónica" にも一致します)、無関係な結果が生じます。これらのエンティティには、先に suggest_concepts を呼び出し、返された URI を concept_uris に渡してください。
sort_byenumいいえ並べ替え順(デフォルトは date)。"rel" はクエリとの関連性で順位付けします。date | rel | sourceImportance | cosSim
body_lenintegerいいえ記事ごとの本文の最大文字数。0~5000(デフォルトは 300、0 は本文なし)。
date_endstringいいえ最も新しい日付。YYYY-MM-DD(当日を含む)。date_start 以上である必要があります。allow_archive を指定した場合、date_start から date_end(デフォルトは今日)までの期間は最大 1 年です。
sort_ascbooleanいいえ昇順で並べ替えます(デフォルトは false)。
data_typesanyいいえ含めるコンテンツタイプ(デフォルト:すべて)。単一の文字列または文字列の配列を受け付けます。
date_startstringいいえ最も古い日付。YYYY-MM-DD(当日を含む)。allow_archive=true でない限り、過去 31 日以内である必要があります。allow_archive=true の場合、date_start は必須です。
keyword_locenumいいえキーワードを検索する場所(デフォルト:API のデフォルトである本文)。body | title | body,title
source_urisanyいいえニュースソースの URI。例:"bbc.co.uk"(suggest_sources を使用)。OR 条件で検索します。単一の文字列または文字列の配列を受け付けます。
concept_urisanyいいえエンティティ(企業、人、場所、組織)のコンセプト URI。名前付きエンティティには keyword よりこちらを優先してください。最初に suggest_concepts を呼び出して名前を解決し、返された `uri` をここに渡します(無料)。複数の値は OR 条件で検索され、keyword よりはるかに精度が高く、同名語によるノイズを避けられます。単一の文字列または文字列の配列を受け付けます。
allow_archivebooleanいいえデフォルトは false で、過去 31 日間のみを検索します(最も低コスト)。true にすると過去のアーカイブも検索できます。検索する年ごとに追加のトークンが必要です。また、date_start が必須で、期間は最大 1 年です。
category_urisanyいいえカテゴリ URI。例:"news/Business"(suggest_categories を使用)。OR 条件で検索します。単一の文字列または文字列の配列を受け付けます。
location_urisanyいいえニュースが発生した場所のロケーション URI(suggest_locations を使用)。OR 条件で検索します。単一の文字列または文字列の配列を受け付けます。
max_sentimentnumberいいえセンチメントの上限。-1~1(英語の記事のみ)。
min_sentimentnumberいいえセンチメントの下限。-1~1(英語の記事のみ)。
ignore_keywordstringいいえこれに言及している記事を除外します。
ignore_source_urisanyいいえこれらのニュースソースを除外します。単一の文字列または文字列の配列を受け付けます。
include_duplicatesbooleanいいえ重複記事/シンジケート記事を含めます(デフォルトは false)。
keyword_search_modeenumいいえキーワードの一致方法:simple(任意の単語)、exact(完全一致)、または phrase(フレーズ)。simple | exact | phrase

詳細

MCP NewsAPI.ai

CI npm version License: MIT by Nubiia

NewsAPI.ai(Event RegistryのニュースインテリジェンスAPI)向けのModel Context Protocol(MCP)サーバーです。ClaudeのようなAIアシスタントが、ニュース記事やイベント(同じ出来事に関する記事のクラスター)を検索したり、名前からエンティティURIを解決したり、トレンドを確認したり、アカウントのトークン予算を監視したりできます。

**Nubiia**が開発・保守しています — ビジネス向けのAI自動化と連携(MCP、Holded、Pipedriveなど)。自社にもこのようなものを導入したいですか? **nubiia.es**までお問い合わせください。

⚠️ NewsAPI.aiはトークン従量制です

検索のたびに、ご利用プランのトークンが消費されます。無料プランの予算は少量です。このサーバーはトークンを節約できるように設計されています。

  • 結果数はデフォルトで10件(記事/イベント)、記事本文は300文字です。そのため、1回の呼び出しで消費するトークンも、アシスタントのコンテキストウィンドウも小さく抑えられます。
  • allow_archive: trueを指定しない限り、検索対象は過去31日間に限られます(過去データは対象となる年ごとに追加のトークンが必要です)。allow_archiveには**date_startが必須で、date_startからdate_endまでの期間(デフォルトは今日)は最長1年**です。31日より前の日付を指定したdate_start/date_endは、allow_archiveを指定しない場合、何も返さずに終了するのではなく、理由を説明して拒否されます。
  • フィルターをまったく指定しない検索は、トークンが消費される前にローカルで拒否されます。
  • セッションのトークン予算(デフォルトは200トークン。下記を参照)により、ループが暴走してAPIに到達する前に停止します。
  • suggest_*ツールとget_usageは無料です。検索の前にこれらを使ってエンティティをURIに解決してください。
  • get_usageでは残りの予算を確認できます。

ライブアカウントで計測したコスト(31日間の期間):

ツール1回の呼び出しあたりのトークン数
search_articles、get_article1
search_events、get_event(情報)5
get_event(include_articles)1
get_trending_concepts10
suggest_*、get_usage0

プランと料金は変更される場合があります。newsapi.ai/pricingとdocs/api-notes.mdを参照してください。

特長

読み取り専用のツールを10個提供します。

  • 記事(2):search_articles、get_article
  • イベント(2):search_events、get_event
  • オートサジェスト(4):suggest_concepts、suggest_categories、suggest_sources、 suggest_locations
  • トレンド(1):get_trending_concepts
  • アカウント(1):get_usage

合計:10個のツール。すべてにreadOnlyHint: trueが設定されており、このサーバーがNewsAPI.aiやその他の場所に書き込みを行うことはありません。

v1で意図的に対象外としている機能

トピックページと保存済み検索、分析サービス(テキストの分類、任意のテキストの感情分析)、ストーリーのクラスター化、記事への言及、集計結果タイプ(conceptAggr、timeAggrなど)、マルチテナント構成。

インストール

前提条件
  • Node.js 22.14以降
  • NewsAPI.aiアカウントとAPIキー(newsapi.ai → Dashboardから取得)
npmからインストール
npm install -g @nubiia/mcp-newsapi
ソースからインストール
git clone https://github.com/nubiia-dev/mcp-newsapi.git
cd mcp-newsapi
npm install
npm run build

設定

環境変数
変数必須説明
NEWSAPI_AI_API_KEYはいNewsAPI.aiのAPIキー(Dashboard)。秘密情報です。絶対にコミットしないでください。
NEWSAPI_AI_MAX_TOKENS_PER_SESSIONいいえ1セッション中(サーバープロセスを再起動するまで)にこのサーバーが消費できるNewsAPI.aiトークンの最大数。デフォルトは200です。
export NEWSAPI_AI_API_KEY=your_newsapi_ai_key
export NEWSAPI_AI_MAX_TOKENS_PER_SESSION=200   # optional
セッションのトークン予算

予算はサーバープロセスごとに設定されます。起動した各 MCP クライアント/サーバーのインスタンスには個別のカウンターがあるため、200 に設定したクライアントが2つあれば、合計で400を使用できます。再起動するとリセットされます。

各呼び出しは、測定されたトークンコスト(上の表を参照)が送信前に課金されます。呼び出しによって残りの予算を超える場合、ツールは残りの予算と合計予算、および予算の引き上げ方法を示すエラーを返し、NewsAPI.ai にはリクエストを送信しません。無料のツール(suggest_*、get_usage)がブロックされることはありません。get_usage は、アカウント残高と併せてセッション予算(maxTokens、spentTokens、remainingTokens)も報告します。API が完全に拒否した呼び出し(4xx)は返金されます。受け付けられた後に失敗した呼び出し(HTTP 200 の {"error"} 本文を含む)は、API に課金されるため、課金されたままになります。無効な値(例:abc、-5)は警告を標準エラー出力に表示して200に戻されます。0 に設定すると、有料の呼び出しはすべて無効になります。

Claude Desktop の設定

Claude Desktop の設定ファイルに追加します。

macOS:~/Library/Application Support/Claude/claude_desktop_config.json Windows:%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "newsapi": {
      "command": "npx",
      "args": ["-y", "@nubiia/mcp-newsapi@latest"],
      "env": {
        "NEWSAPI_AI_API_KEY": "your_newsapi_ai_key",
        "NEWSAPI_AI_MAX_TOKENS_PER_SESSION": "200"
      }
    }
  }
}

ソースからインストールした場合:

{
  "mcpServers": {
    "newsapi": {
      "command": "node",
      "args": ["/path/to/mcp-newsapi/dist/index.js"],
      "env": {
        "NEWSAPI_AI_API_KEY": "your_newsapi_ai_key"
      }
    }
  }
}
Claude Code の設定
claude mcp add newsapi --env NEWSAPI_AI_API_KEY=your_newsapi_ai_key -- npx -y @nubiia/mcp-newsapi@latest
トラブルシューティング
  • このリポジトリ内から起動すると sh: mcp-newsapi: command not found が表示される。 クローンしたリポジトリのディレクトリから Claude Code(または別の MCP クライアント)を起動すると、npx @nubiia/mcp-newsapi は公開パッケージではなくローカルの package.json を解決するため、mcp-newsapi バイナリが PATH に見つかりません。上記の例のように @latest を指定してレジストリのバージョンを固定するか、別のディレクトリからクライアントを起動してください。

ツール

パラメーター(lang、concept_uris、category_uris、source_uris、location_uris、 ignore_source_uris、data_types、types、concept_types)は、単一の文字列または文字列の配列を指定できます。"lang": "spa" と "lang": ["spa"] は同じ意味です。

推奨される流れは、suggest_*(無料)→ search_* → get_* です。

suggest_concepts · 読み取り専用 · 無料

名前(「Telefónica」、「Pedro Sánchez」など)をコンセプト URI に解決します。検索時に uri を concept_uris として渡すと、キーワードを使うよりもはるかに正確です。

{ "prefix": "Telefónica", "types": ["org"], "count": 3 }

企業、人、場所、組織を検索する場合は? まず suggest_concepts で解決し、返された uri を concept_uris として渡してください。keyword は自由語やトピック向けで、一般的な単語を指定するとノイズが多くなります。たとえばスペイン語で keyword: "Telefónica" を指定すると、一般的な形容詞「telefónica」にも一致します。

suggest_categories、suggest_sources、suggest_locations · 読み取り専用 · 無料

カテゴリ(news/Business)、出版物(bbc.co.uk)、場所にも同じ考え方が適用されます。

search_articles · 読み取り専用 · 1トークン

keyword、concept_uris、category_uris、source_uris、location_uris のうち、少なくとも1つが必要です。デフォルトは、結果10件、新しい順、重複をスキップ、直近31日間、本文300文字です。page でページ送りできます。レスポンスには total と pages が含まれます。

{
  "concept_uris": ["http://en.wikipedia.org/wiki/Telefónica"],
  "lang": ["spa"],
  "date_start": "2026-10-01",
  "count": 5
}

日付には実在する YYYY-MM-DD 形式の日付を指定してください。date_end は date_start より前の日付にできません。また、上記のアーカイブのルールが適用されます(allow_archive には date_start が必要で、最大1年間です)。

その他のオプション:keyword_loc、keyword_search_mode、ignore_keyword、ignore_source_uris、data_types(news/pr/blog)、sort_by(date/rel/sourceImportance/cosSim)、min_sentiment/max_sentiment、body_len、include_duplicates、allow_archive。

get_article · 読み取り専用 · 1トークン

article_uri で指定した記事を1件取得します。本文をより長く取得できます(body_len のデフォルトは3000です)。

search_events · 読み取り専用 · 5トークン

イベントとは、同じ出来事についての記事のクラスターです。タイトル、短い要約、日付、場所、主要なコンセプト、記事数が含まれます。「X について何が起きているか」を知るのに適した粒度です。sort_by: "size" を指定すると、最大のニュースを優先して表示できます。min_articles_in_event でノイズを除外できます。

get_event · 読み取り専用 · 5トークン(include_articles ありの場合は1トークン)

event_uriで指定した1件のイベント、またはinclude_articles: trueを指定した場合は、そのイベントを取り上げた記事を取得します。

get_trending_concepts · 読み取り専用 · 10トークン

news、social、pr、blogで現在トレンドになっている人物、組織、場所(過去2日間と過去2週間を比較)を取得します(プランによってはブログのトレンドを利用できない場合があり、失敗した呼び出しにも料金が発生します)。最も高額なツールです。必要な場合にのみ呼び出してください。

get_usage · 読み取り専用 · 無料

availableTokens、usedTokens、remainingTokensを取得します。検索をまとめて実行する前に確認してください。

レート制限

ローカルガードにより、エージェントのループが暴走してトークン予算を使い果たすのを防ぎます。

ツール制限
search_articles, search_events, get_article, get_event30リクエスト/分
get_trending_concepts20リクエスト/分
suggest_*, get_usage120リクエスト/分
その他すべて(デフォルト)60リクエスト/分

API自体が許可する同時リクエスト数は最大5件です。429/502/503/504レスポンス、および接続拒否/DNSエラーは、バックオフを挟んで再試行します。曖昧な失敗(タイムアウト、接続リセット)は、課金対象のリクエストがすでに処理されている可能性があるため、再試行しません。 各試行は30秒でタイムアウトします。

エラーメッセージ

401/403レスポンスには、単なる「Unauthorized」ではなく説明が含まれます。キーが間違っている、または失効している場合や、アカウントのトークンが不足している場合があります(どちらかはget_usageで確認できます)。 APIキーはリクエスト本文で送信され、URLには含まれません。また、すべてのエラーメッセージ(HTTP、ネットワーク、JSON解析エラーを含む)から削除されます。

開発

npm install
npm run build
npm test              # runs entirely against mocks — no network, no API key
npm run test:coverage
npm run lint

ワークフローの全容についてはCONTRIBUTING.mdを、稼働中のアカウントで検証したAPIの動作についてはdocs/api-notes.mdを参照してください。

ライセンス

MIT

関連項目

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。