Orla について
Orlaは、OrlaのMCPエンドポイント経由で個人・家族・事業の帳簿にアクセスするCLIとstdioブリッジです。取引の参照・記録やCSV出力に対応し、個人用接続では支払いや送金のツールを提供しません。
主な機能
- 01OAuthログインとスペース選択
- 02取引の一覧表示と記録
- 03帳簿データのCSV出力
- 04JSON出力と構造化された終了コード
- 05リモートMCP向けstdioブリッジ
活用シーン
- 01コマンドラインで取引を確認
- 02帳簿に共同支出を記録
- 03分析用に口座記録をエクスポート
- 04stdioのみ対応のMCPクライアントをOrlaに接続
MCP 対応
Orlaは個人用またはエージェント用のリモートStreamable HTTP MCPサーバーを提供します。CLIにはJSON-RPCをHTTPエンドポイントへ中継し、保存済みセッションを管理するstdioブリッジもあります。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://app.orla.finance/api/mcp/personalclaude mcp add --transport http finance-orla-orla https://app.orla.finance/api/mcp/personal{"mcpServers":{"finance-orla-orla":{"type":"http","url":"https://app.orla.finance/api/mcp/personal"}}}Cursor で開く{"servers":{"finance-orla-orla":{"type":"http","url":"https://app.orla.finance/api/mcp/personal"}}}VS Code で開く{"mcpServers":{"finance-orla-orla":{"type":"http","url":"https://app.orla.finance/api/mcp/personal"}}}{"mcpServers":{"finance-orla-orla":{"serverUrl":"https://app.orla.finance/api/mcp/personal"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
orla
ターミナルからOrlaの帳簿を操作でき、HTTP に対応していない MCP クライアント向けの stdio ブリッジも備えています。
npx orla-cli login
npx orla-cli tx list --from 2026-08-01
npx orla-cli export --from 2026-01-01 > books.csv
依存関係も、ビルド手順も、コンパイルが必要なネイティブモジュールもありません。Node 22 以降が必要です。
パッケージ名は orla-cli で、インストールされるコマンドは orla です。npm が既存のパッケージ名(ora、ol、rlp、url)に近すぎるとして、単独の名前を拒否したためです。コマンド名まで変更するのは、トレードオフとしてさらに悪い選択でした。npm i -g orla-cli を実行すれば、引き続き orla tx list を使えます。
これは何か
Claude が接続するのと同じ MCP エンドポイントを使う軽量クライアントです。すべてのコマンドはツール呼び出しなので、この CLI でできることは個人用接続でできることに限られ、認可について独自の判断をすることもありません。orla login は、S256 PKCE を使った通常の OAuth コードフローを開始します。ブラウザーには Orla 独自の同意ページが表示され、そこでこのマシンがアクセスできるスペースを選択します。
資金の移動は行いません。 個人用接続では、読み取りと記録のみができます。支払い、送金、カード情報の操作は、アプリの Agents で独自の上限を設定したうえで、その目的のために接続されたエージェントが行います。資金を移動するツールは、この接続に提供される一覧には含まれず、名前を指定して呼び出してもエンドポイントで拒否されます。
これは、このクライアントを信頼するかどうかの問題ではありません。orla login は個人用のアドレスを要求しますが、そこにはそれらのツールが存在しないため、同意ページでどの項目を選択しても、この約束は守られます。orla login --agent は、独自の予算を持つボットを作成できる、もう一方のアドレスを要求します。セッションには、どちらの入り口からトークンが発行されたかが記録され、その接続が使われ続けます。そのため、更新を行っても既存の接続先が変更されることはありません。
コマンド
| コマンド | 説明 |
|---|---|
orla login [--api URL] [--agent] | このマシンを接続します。ブラウザーが開きます。--agent を指定すると、ボットを作成できる入り口を要求します。 |
orla logout | 保存されたセッションを削除します。 |
orla whoami | 接続の種類と、アクセスできるスペースを表示します。 |
orla spaces | アクセスできるスペースを表示します。 |
orla use <space-id> | 既定のスペースを設定します。 |
orla accounts | スペース内のアカウントを表示します。 |
orla tx list | 取引を表示します。--from --to --search --account --limit。 |
orla tx add | 取引を記録します。--account --kind --amount --date [--payee --note]。 |
orla export | 同じ行を CSV として標準出力に出力します。 |
orla tools | この接続に提供されているツールを表示します。 |
orla mcp [--api URL] | stdio ブリッジ(下記参照)。 |
orla version | バージョンを表示します。 |
スペースに関連するコマンドでは --space <id> を指定でき、機械で読み取れる形式で出力するには --json を指定します。
プログラムまたはエージェント向け
--json を指定すると、すべてのコマンドは標準出力に 1 つのエンベロープを返します。
{ "ok": true, "data": ... }
{ "ok": false, "error": { "code": "cli.not_connected", "message": "not connected: run `orla login` first" } }
まず ok を読み取り、その後 error.code に基づいて分岐します。cli. で始まるコードは CLI 独自のものです。それ以外のコードは Orla のもので、変更せずにそのまま渡されます。REST API と MCP エンドポイントで使われるものと同じ名前です。終了ステータスは失敗の種類を示すため、シェルスクリプトでは何も解析せずに分岐できます。
| 終了ステータス | 意味 |
|---|---|
| 0 | 完了 |
| 1 | 以下のいずれの行にも該当しない失敗 |
| 2 | コマンドラインのエラー:不明なコマンド、フラグの不足 |
| 3 | セッションがない、または Orla が無効にしたセッション |
| 4 | スペースに対応するコマンドで、作業対象のスペースがない、または複数ある |
| 5 | Orla に到達できなかった |
| 6 | Orla に到達したものの拒否された、または CLI が読み取れない形式で応答された |
| 7 | サインインが中断された、または不正な結果が返された |
エージェントにこれらすべてを教えるスキルには、課金がどこで始まるかも含まれています。skills/orla/SKILL.md をご覧ください。これはパッケージ内と
orla.finance/skill.md で配布されており、以下の Claude Code プラグインがインストールする 5 つのスキルのうちの 1 つです。ほかのエージェントに追加するには、次のようにします。
npx skills add cheetah-trade/orla-cli --skill orla # any agent the skills CLI knows
curl -fsSL https://orla.finance/skill.md # or just read it
Claude Desktop 向けには、各リリースに orla-<version>.mcpb バンドルが添付されています。ダブルクリックしてインストールしてください。これは以下の stdio ブリッジを実行し、ブリッジが自動的にサインインします。
CLI が読み取る環境変数:
| 変数 | 効果 |
|---|---|
ORLA_NO_BROWSER=1 | ブラウザーを起動せず、代わりにサインイン URL を stderr に出力します |
ORLA_NO_KEYCHAIN=1 | OS のキーチェーンではなく、0600 のファイルにセッションを保存します(テスト、CI、ヘッドレス環境向け) |
XDG_CONFIG_HOME | ファイルの保存場所(<dir>/orla/session.json) |
MCP サーバーとして
Orla の MCP サーバーはリモートで、Streamable HTTP を使用しており、次の 2 つのアドレスで応答します。
https://app.orla.finance/api/mcp/personal your own books, and nothing that pays
https://app.orla.finance/api/mcp the same door plus the agent shape
リモート MCP に対応しているクライアントは、このパッケージを必要としません。アドレスを指定すれば、同意ページを自動的に見つけます。たとえば Claude Code では、次のようにします。
claude mcp add --transport http orla https://app.orla.finance/api/mcp/personal
これは単なるラベルの違いではありません。/mcp/personal では、資金を移動するすべてのツールが一覧から除外され、モデルが名前を指定して要求した場合も拒否されるため、同意ページに何が表示されていたとしても約束が守られます。/mcp では、どちらの接続形態もページに表示され、「エージェントを接続」を選ぶと、独自の予算を持つマシンプリンシパルが作成されます。意図的にボットを接続するのでなければ、個人用アドレスを使用してください。
stdio サーバーにしか対応していないクライアントでは、この CLI をサーバーとして実行できます。JSON-RPC を HTTP エンドポイントに中継し、トークンを保持するため、クライアントに独自の OAuth 対応は必要ありません。
{
"mcpServers": {
"orla": { "command": "npx", "args": ["-y", "orla-cli", "mcp"] }
}
}
ブリッジは orla login が保存したセッションを使い、更新して、そのセッションの発行先のドアにリクエストを送信します。セッションがない場合は自動的にサインインします。ブリッジを起動したクライアントには入力用のターミナルがないため、同意ページをブラウザーで開き、適切なサーバーとして動作し続けます(initialize と ping には応答し、tools/list は空で、ツール呼び出しは cli.sign_in_in_progress で拒否します)。ユーザーが完了すると、クライアントに tools/list_changed を通知します。
このサーバーは公式 MCP レジストリに finance.orla/orla として登録されており、クライアントやディレクトリはこの名前で検索する必要があります。この登録には、上記のリモートエンドポイントと、stdio 用のこのパッケージの両方が含まれています。
個々のクライアント向けの設定手順は
orla.finance/en/mcp に記載されています。これは個人用接続で、帳簿を読み取れますが、支払いはできません。/en/ai-agents は別のドアで、エージェントに独自の予算とカードが割り当てられます。
Claude Code プラグインとして
このリポジトリはプラグインマーケットプレイスでもあります。インストールすると、帳簿管理用のスキルが4つ、CLI 自体のスキルが1つ、そしてそれらが使用する個人用 MCP 接続が利用できるようになります。
/plugin marketplace add cheetah-trade/orla-cli
/plugin install orla@orla
最初のツール呼び出しでは、ブラウザーで通常の同意ページが開き、このマシンからアクセスできるスペースを選択します。/mcp を使うと、接続を確認したり、この手順を手動で開始したりできます。
| スキル | 内容 |
|---|---|
orla-categorize | 未分類の行を、事前に確認したうえでカテゴリに振り分けます。 |
orla-month-close | 月次締めを行います。支出、予算超過、未分類の項目、スペースの価値、署名待ちの項目を確認します。読み取り専用です。 |
orla-settle-up | 共有スペースの残高と精算計画を確認し、旅行中の自分のアカウントから共有費用を記録します。 |
orla-counterparty-check | 送金前に、事業用スペースに登録されている取引相手または住所の情報を確認します。 |
orla | ターミナルから CLI を使います。正確なコマンド、JSON エンベロープと終了コード、支払いが行われない範囲を確認できます。 |
プラグインは https://app.orla.finance/api/mcp/personal に接続します。ここには資金を動かすツールがありません。スキルにもその旨が記されています。約束ではなく事実であることは、この接続先が示しています。支払い、送金、カード情報はここでは取得できず、名前を指定して要求されても拒否されます。
スキルを読む前に知っておくとよい点が2つあります。「show full details」を有効にせずに承認した接続では、受取人と住所がマスクされるため、銀行の取り込みデータを4文字だけでカテゴリ分けできる範囲には限りがあります。また、ツールが1回の呼び出しで返す行は最大200件で、実際の件数も併記されます。そのため、取引の多い月は一度にまとめてではなく、月ごとに確認します。
contracts/mcp-personal-tools.json はこの接続先の確定済みの仕様で、test/skills.test.js はスキルが名前を挙げるすべてのツールと引数がその仕様に一致するかを確認します。
トークンの保存場所
OS のキーチェーンです。macOS では security、Linux では secret-tool を使います。どちらも利用できない場合は、設定ディレクトリ内の 0600 ファイルにフォールバックし、そのことを stderr に出力します。更新トークンがいつの間にかディスクに保存されていたと、後になって気づくような事態は避けるためです。
orla logout は両方を消去します。
開発
npm install
npm run check # types
npm run build # dist/
このサーバーはこのリポジトリには含まれていません。--api を指定すると CLI の接続先を別のデプロイに変更できます。また、セッションにはトークンを発行した環境が記録されるため、ある環境のトークンが別の環境で使われることはありません。
コントリビューションを歓迎します。CONTRIBUTING.md をご覧ください。
評価テスト
test/skills.test.js は、スキルの内容が CLI と一致しているかを確認します。ただし、スキルの本来の目的、つまりスキルを読んだエージェントが推測で答えるのをやめるかどうかは確認できません。そのためのものが evals/ です。各ケースはこのプラグインを使う場合と使わない場合の2回実行されるため、その差からスキル自体の効果を確認できます。
| ケース | 確認内容 |
|---|---|
space-default | orla use はスペース ID を位置引数として受け取り、--space フラグとしては受け取りません。 |
payment-approved | approved は人が承認したことを意味し、資金が移動したことを意味するわけではありません。参照情報を持つのは executed だけです。 |
cli-cannot-pay | ここに資金を動かすコマンドはなく、回答では存在しないコマンドを作り上げず、そのことを説明します。 |
claude plugin eval . # both arms, three runs per case
claude plugin eval . --case space-default --runs 1
評価テストの実行中は MCP サーバーを起動しません。デフォルトの --mocks record では、モックのないサーバーは起動されないため、ケースの実行に実際の接続先、OAuth、アカウントは必要ありません。
直近の実行で測定した内容
2026-09-18、プラグイン 0.2.1、Claude Code 2.1.270、各条件でケースごとに3回実行、 モデルは固定していません(CLI のデフォルトとデフォルトの判定モデル)。全スイート:294 秒、1.53 ドル。
| ケース | スキルあり | スキルなし | Δ |
|---|---|---|---|
space-default | 1.00 | 0.33 | +0.67 |
cli-cannot-pay | 1.00 | 0.67 | +0.33 |
payment-approved | 1.00 | 0.83 | +0.17 |
率直に読み取ってください。スキルが最も役立つのはコマンドの使い方です。
スキルがないと、モデルは3回中3回、orla use を誤りました。CLI の引数の形式を推測するのは、まさにモデルにできないことだからです。金銭に関する質問では、ベースモデルもすでにほとんどの場合は慎重です。スキルによって「ほとんどの場合」が毎回になります。誰かに支払いが行われたかどうかが答えとなる場面では、そこが重要です。
ベースライン条件について知っておくとよい点があります。スキルがないと、モデルは通常、コマンドをでっち上げるのではなく、いったん実行を見送り、まず --help を確認させてほしいと求めました。これはより望ましい失敗ですが、それでも行動を期待されるエージェントにとっては失敗です。
この数値は、ある1日に実行した1回分の結果であり、ベンチマークではありません。上記のコマンドを再実行すれば、ご自身の結果が得られます。
ライセンス
MIT。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。