BNR exchange rates について
BNR exchange rates は、ルーマニア国立銀行の基準レートを調べ、金額を RON に、または RON から換算する読み取り専用 MCP サーバーです。2005 年以降の日付に対応し、公表された小数表記を維持して、ANAF が使う年平均も計算します。
主な機能
- 012005 年以降の指定日のレート検索
- 02金額の RON への換算と RON からの換算
- 03複数通貨と期間のレート取得
- 04ANAF の年平均レート計算
- 05BNR の小数精度の保持
活用シーン
- 01請求日で適用されるレートの確認
- 02外貨金額の RON 換算
- 03期間内の為替レートの取得
- 04外貨所得に使う年平均レートの確認
MCP 対応
ヘルスチェック、レート検索、換算、複数レートの照会、年平均計算を行う読み取り専用ツールを提供します。BNR の公開 XML ファイルを読み取り、アカウントや API キーは不要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| year | integer | はい | 暦年(例:2023)。 |
| currency | string | はい | ISO 4217 コード:EUR、USD、GBP、CHF など(XAU は金、XDR は SDR);大文字と小文字は区別されません。 |
詳細
BNR 為替レート MCP サーバー
AI アシスタントからルーマニア国立銀行の参照為替レートを確認できます。2005 年以降の任意の日に適用されたレートと、BNR の公開日、RON への換算または RON からの換算、複数通貨または一定期間の為替レートをまとめて確認できます。また、D212 で外国所得を換算する際に ANAF が使用する年間平均レートも確認できます。読み取り専用です。書き込みを行うツールはなく、money でもありません。レートは BNR の表記をそのまま保持します(4.2440。4.244 にはなりません)。
必要なもの: アカウントもキーも不要です。サーバーは BNR の公開 XML ファイルを curs.bnr.ro から読み込みます。
質問できること
- 「2025 年 3 月 14 日の BNR のユーロレートはいくらでしたか?」
- 「2026 年 10 月 3 日付の 1,250.50 EUR の請求書を、その日より前に BNR が最後に公表したレートでレイに換算してください。」
- 「今日の 10,000 HUF は RON でいくらですか?」
- 「2026 年 9 月の各銀行営業日の BNR の EUR と USD のレートを教えてください。」
- 「2025 年の D212 に使用する USD の年間平均レートはいくらですか?」
インストール
Claude Code の場合:
claude mcp add bnr -- npx -y @foreverworks/mcp-bnr
Claude Desktop(設定、開発者、設定を編集)やその他の多くのクライアントでは、同じコマンドを JSON として読み込みます。
{
"mcpServers": {
"bnr": {
"command": "npx",
"args": ["-y", "@foreverworks/mcp-bnr"]
}
}
}
それぞれ Node 22.19 以降で公開パッケージを実行します。設定は不要です。
クローンから実行
git clone https://github.com/foreverworks/mcps.git && cd mcps
npm ci && npm run build
claude mcp add bnr -- node "$PWD/servers/bnr/dist/index.js"
JSON 設定では、コマンドは node、唯一の引数は servers/bnr/dist/index.js のフルパスです。複数のクライアント間で HTTP 経由で 1 つの実行中のコピーを共有する方法については、docs/deploying.md を参照してください。
設定
このサーバー固有の設定はありません。すべてのサーバーで共通の環境変数については、docs/configuration.md を参照してください。MCP_EGRESS_ALLOW によってプロセスのアクセス先を制限する場合は、curs.bnr.ro を許可する必要があります。日付はホストのタイムゾーンにかかわらずブカレストの日付です。そのため、「今日」はブカレストの今日を指します。
ツール
すべてのツールは読み取り専用で、何も変更しません。
| ツール | アクセス | 機能 |
|---|---|---|
health | 読み取り | BNR が応答するかを確認します。最新の為替レートの日付と対象通貨数を返し、そのレートが 5 日以上前の場合は警告します。 |
rate | 読み取り | ある日の適用レート(デフォルトは今日)を返します。その日の BNR レート、またはそれ以前で最も近い銀行営業日のレートと、その日付(published_on)、倍率を確認できます。 |
convert | 読み取り | ある日の適用レート、またはそれ以前で最も近いレートを使って、金額(小数文字列)を RON に、または RON から換算します。指定した丸め規則を 1 回適用し、レートとその日付も返します。 |
rates | 読み取り | 1 日の複数通貨の適用レート、または最大 366 日の期間に BNR が公表したすべてのレートを、通貨ごとの系列として返します。 |
annual_average | 読み取り | ANAF が使用する年間平均を返します。BNR の 12 か月分の月平均の平均値と、それぞれの月平均および日数を確認できます。 |
トラブルシューティング
input. 質問どおりには回答できず、何も取得されませんでした。今日より後、または2005年より前の日付、366日または2,000件のレートを超える期間(通貨の数を減らすか、期間を短くしてください)、またはRONを含まない換算(2回換算し、両方のレートを指定してください)が該当します。メッセージに該当理由が示されます。
not_found: 「BNRはここでは……のレートを公表していません。公表しているのは……です」。BNRはその通貨を公表していません。メッセージに公表している通貨が列挙されます。
not_found: 「BNRには……のレートファイルがまだありません」。年間ファイルは最初のレート公示とともに作成されるため、1月初旬は新しい年のレートがまだありません。rateとconvertは12月の最後のレートを使いますが、新しい年の期間を対象とするratesとそのannual_averageは、最初のレート公示を待ちます。
api. BNRのサーバーは、再試行後も応答しませんでした(ステータス0は接続できなかったことを示します)。数分後にもう一度お試しください。
drift. BNRから、HTMLページや形式の変更など、レートXMLではないものが返されました。サーバーは推測による処理を拒否します。報告してください。
仕組み
データソース
BNRは、同機関の「Curs XML」ページに記載されたホストcurs.bnr.roで静的XMLを公開しています(2026-10-18に確認)。/nbrfxrates.xmlは最新のレート公示、/files/xml/years/nbrfxrates<year>.xmlは該当年のすべてのレート公示(当年分を含む、約300 KB)です。レートは1単位あたりのRONで、HUF、JPY、KRWなど一部の通貨は100単位あたり(そのmultiplier)です。
旧アドレスのwww.bnr.roはHTMLのホームページをステータス200で返します。ステータスだけを確認する読み取り側は、これをレートのない年として扱ってしまいます。ここでは、BNRのレート文書以外の応答はすべてdriftとして失敗し、単純な10進数ではないレートも同様に失敗します。
取得。 過去の年のファイルは変わらないため、プロセスごとに一度だけ取得します。当年のファイルと最新のレート公示は10分間キャッシュします。当年中に初めて読み込まれたファイルも同様にキャッシュされるため、年が終わると、その年の平均値は最終ファイルから再読み込みされます。5xx、429、または接続切断の場合、最大3回までリクエストを再試行します。
ある日に適用されるレート
BNRは銀行営業日に、ブカレスト時間の13:00頃、1日1回レートを公示します。その日のレートはその日の公示レートです。週末、祝日、または今日の公示前は、それ以前の最新の公示レートが使われます(1月初旬は12月の最後のレートです)。すべての回答には、使用した公示の日付を示すpublished_onが含まれているため、どの公表レートを使ったかを明示できます。公示前に今日のレートを求めた場合は、その旨を示すnoteも含まれます。
金額の換算
convertは金額を10進数の文字列として受け取るため、1250.50はそのまま計算に使われます。RONへの換算は「金額 x レート / multiplier」、RONからの換算は「金額 x multiplier / レート」です(100あたり1.2354のレートで10,000 HUFを換算すると、123.54 RONです)。正確な結果は、places(0~8、既定値は2)で指定した桁数に一度だけ丸めます。roundingがhalf-evenの場合を除き、請求書の端数処理と同様に、0.5は切り上げます(0から遠ざかる方向に丸めます)。rate_ruleで使う公示レートを選択でき、回答には採用したレートが示されます。
in_force(既定値)は、rateが返すレートです。つまり、その日の公示レート、または直近の銀行営業日の公示レートです。last_beforeは、その日より厳密に前に公示された最新のレートです。ルーマニアの財政法では、VATの納付日より「前にBNRが公表した最後の為替レート」で外貨建て請求書を換算します。そのため、金曜日付の請求書には木曜日の公示レートが、月曜日付の請求書には金曜日の公示レートが適用されます。
回答には、BNRが公表したままのレート、その乗数、日付、および文書に貼り付けられるmeaning行が含まれます。「100 EUR = 509.10 RON at BNR's EUR rate 5.0910 RON for 1 EUR, published on 2026-10-16 (in force on 2026-10-16), rounded half-up to 2 places」
複数のレートを一度に取得
ratesは、通貨ごとに1つの系列を返します(名前を指定して最大50通貨、またはBNRが公表したすべての通貨)。各系列には倍率と、古い順の為替レートが含まれます。dateを指定すると(指定しない場合は今日)、系列にはその日に適用されるレートが、そのレートの公表日とともに含まれます。fromとtoを指定すると(toのデフォルトは今日)、期間内のすべてのレートが両端の日付を含めて返されます。該当する系列がない場合は、その旨を示す注記が返されます。期間は最大366日、レート数は最大2,000件です(7通貨で約1年分、または全通貨で2か月分に相当するため、回答を読みやすく保てます)。BNRが公表しているものの期間内に含まれない通貨はabsentに記載されます。読み込んだ年のデータに一度も登場しない通貨は、その通貨が公表しているコードとともに拒否されます。
年間平均
D212では、外国所得を「Banca Naţională a Românieiが公表する年間平均為替レート(cursul de schimb mediu anual comunicat de Banca Naţională a României)」で換算します。BNRが公表する年間平均(「Serii anuale - valori medii」)は、12か月分の月間平均(各月の日次レートの平均)の平均を小数点以下4桁で求めたものであり、年間の日次レートの平均ではありません(2022年のUSDは4.6923ではなく4.6885です)。サーバーは各月の平均と年間平均を正確な小数で計算し、それぞれを四捨五入(ちょうど中間の場合は切り上げ)して小数点以下4桁にします。
この方法は、USDの2020年(4.2440)、2021年(4.1604)、2022年(4.6885)、2023年(4.5743)、およびEURの2022年(4.9315)について、月間平均を先に丸めるかどうかにかかわらず、BNRの公表値と一致します。まだ終わっていない年については、これまでの月の値がcomplete: falseとともに返されます。npx tsx scripts/smoke.tsを実行すると、ライブファイルを使ってUSDの確認を再実行できます。
制限事項
- BNRの参照レートのみで、ECBや商業銀行のレートには対応していません。
- 2005年以降に対応しています。BNRのXML系列は2005年から始まります。
- **クロスレートには対応していません。**BNRは他の2通貨間のレートを公表していないため、換算する通貨の一方はRONである必要があります。
- **月の途中で倍率が変更された場合、年間平均は
driftとして失敗します。**その月を異なる基準で平均することはありません。読み込んだファイルでは、そのような変更は発生していません。月と月の間で変更があった場合は、warningとともに回答されます。
BNR向けのその他のサーバー
2026-10-18に検索しました。BNR公式のものはなく、コミュニティ製サーバーが1つあります。
- npmの
@pipeworx/mcp-bnr-ro(0.1.2、2026-09)は、約30の共有メタツールとともにPipeworxゲートウェイ経由で提供されています。2つのツールは最新の公表レート、または1年分のレートを返しますが、各レートはJavaScriptの数値です(4.2440は4.244として返されます)。特定の日に適用されるレートの取得や年間平均の計算には対応していません。
2026-10-21に再度検索したところ、金額をRONに換算するものがさらに2つ見つかりました。
- PyPIのanafpyのMCPツール。
- PyPIの
bnr-converter-mcp-server。日付より前の直近のレートも取得できますが、金額をPythonのfloatとして受け取り、1桁に丸めます。
MCPを使わずに同じXMLを読み込むライブラリとして、npmにはcurs-bnr、bnr-exchange-rateなど、PyPIにはbnrxrateとanafpyのBNRクライアント、Packagistにはitrack/cursbnrとpeterlupu/curs-bnrがあります。
このサーバーは、これらのどれも行わない機能を提供するために存在します。呼び出し元が実行されている場所からBNRに直接アクセスし、BNRの表記どおりの精度ですべてのレートを保持します。また、週末、祝日、13:00より前の時間も含め、任意の日に適用されるレートを返し、指定された丸め規則に従って正確な小数で換算します。さらに、BNRが公表し、ANAFが使用する方法で年間平均を計算します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。