mcpField
O
Orla

Orla

远程服务
orla.finance金融数据04 周前更新

关于 Orla

Orla 是命令行客户端和 stdio 桥接程序,可通过 Orla MCP 端点访问个人、家庭及企业账簿。它支持读取和记录交易、导出 CSV;个人连接不提供付款或转账工具。

主要功能

  1. 01OAuth 登录与空间选择
  2. 02列出并记录交易
  3. 03将账簿记录导出为 CSV
  4. 04JSON 输出与结构化退出码
  5. 05连接远程 MCP 的 stdio 桥接

适用场景

  1. 01在命令行查看交易
  2. 02在账簿中记录共同支出
  3. 03导出账户记录以供分析
  4. 04让仅支持 stdio 的 MCP 客户端连接 Orla

MCP 相关

Orla 提供面向个人或 Agent 连接的远程 Streamable HTTP MCP 服务。命令行客户端还提供 stdio 桥接,将 JSON-RPC 转发到 HTTP 端点并管理已保存的会话。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://app.orla.finance/api/mcp/personal
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmorla-cli0.3.0

工具

详细介绍

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 会按照标准 OAuth 授权码流程使用 S256 PKCE:浏览器会打开 Orla 自己的授权页面,你可以在其中勾选此设备可以访问的空间。

它不会转移资金。 个人连接只会读取和记录。支付、转账和银行卡详细信息属于为此目的连接的 Agent,并由其独立限额控制,这些设置位于应用的 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 格式将相同的行输出到 stdout。
orla tools查看此连接获得的工具。
orla mcp [--api URL]stdio 桥接(见下文)。
orla version查看当前版本。

适用于所有按空间操作的命令的 --space <id>,以及用于输出机器可读内容的 --json。

面向程序或 Agent

使用 --json 时,每条命令都会在 stdout 上返回一个信封:

{ "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 端点使用的名称相同。退出状态表示故障类型,因此 shell 脚本无需解析任何内容即可进行分支处理:

退出状态含义
0完成
1下方各行未描述的故障
2命令行问题:未知命令、缺少标志
3当前没有会话,或 Orla 已不再认可该会话
4需要指定空间的命令没有可用空间,或有多个可用空间
5无法连接 Orla
6已连接 Orla,但 Orla 拒绝了请求,或返回了 CLI 无法读取的格式
7登录已中止或返回了错误结果

教会 Agent 所有这些内容(包括付费功能的边界)的技能位于 skills/orla/SKILL.md。它随软件包一同提供,也可在 orla.finance/skill.md 获取;它还是下方 Claude Code 插件安装的五个技能之一。要将其用于其他 Agent:

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将会话保存在 0600 文件中,而不是操作系统钥匙串中(用于测试、CI、无头设备)
XDG_CONFIG_HOME指定该文件的位置(<dir>/orla/session.json)

作为 MCP 服务

Orla 的 MCP 服务位于远程,使用 Streamable HTTP,并提供两个地址:

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 上,页面会提供两种连接方式;选择“connect an agent”会创建一个拥有独立预算的机器主体。除非你有意连接机器人,否则请使用个人地址。

只支持 stdio 服务的客户端可以将此 CLI 作为 stdio 服务运行。它会将 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 则是另一个入口,Agent 在那里会获得自己的预算和银行卡。

作为 Claude Code 插件

此仓库同时也是一个插件市场。安装后会带来五个技能,其中四个用于记账,一个用于 CLI 本身,以及它们所依赖的个人 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,这是一个不包含任何可转移资金工具的入口。技能对此有明确说明,而这个地址让它成为事实,而非承诺:付款、转账和卡片详情在此处均不可用,若按名称请求也会遭到拒绝。

阅读这些技能前,值得了解它们依赖的两点。未勾选“显示完整详情”就批准的连接会对收款人和地址进行遮蔽,因此仅凭四个字符,能从银行导入记录中分类的信息有限。此外,每次工具调用最多返回 200 行,并同时提供实际总数,因此繁忙月份需要逐月读取,而不能一口气读完。

contracts/mcp-personal-tools.json 是此入口已提交的结构,test/skills.test.js 会检查技能中提到的每个工具和参数是否与之匹配。

令牌的存储位置

操作系统钥匙串:macOS 上使用 security,Linux 上使用 secret-tool。如果两者都不存在,则会回退到配置目录下权限为 0600 的文件,并在标准错误输出中说明这一点,因为刷新令牌悄悄落到磁盘上,不该等到日后才发现。

orla logout 会清除两者。

开发

npm install
npm run check   # types
npm run build   # dist/

此 CLI 所连接的服务不在此仓库中。--api 可将 CLI 指向其他部署,且会话会记录签发令牌的部署,因此一个环境的令牌绝不会被用于另一个环境。

欢迎贡献。请参阅 CONTRIBUTING.md。

评测

test/skills.test.js 会检查技能是否与 CLI 一致。但它无法检查技能存在的目的:阅读技能的 Agent 是否会因此停止猜测。这正是 evals/ 的用途。每个案例都会运行两次,一次使用此插件,一次不使用,以此体现技能本身带来的差异。

案例检查内容
space-defaultorla use 将空间 ID 作为位置参数,而不是 --space 标志
payment-approvedapproved 表示某人已签署,而非款项已转出;只有 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,每种情况在每组中运行三次, 未固定模型(使用 CLI 的默认模型和默认评判器)。整个测试套件耗时 294 秒,费用为 1.53 美元。

情况使用技能不使用技能Δ
space-default1.000.33+0.67
cli-cannot-pay1.000.67+0.33
payment-approved1.000.83+0.17

请如实看待这些结果。技能的主要价值体现在命令操作上: 不使用技能时,模型三次运行都把 orla use 用错了,因为它确实无法猜出 CLI 的参数格式。在资金相关问题上,基础模型大多数时候已经足够谨慎,而技能让“大多数时候”变成了每次都如此;当答案关乎某人是否已收到付款时,这一点至关重要。

关于基线组,有一点值得了解:不使用技能时,模型通常不会凭空编造命令,而是选择拒绝操作,并要求先查看 --help。这是更好的失败方式,但对于预期能够采取行动的 Agent 来说,这仍然是失败。

这些数字来自某一天的一次运行,并非基准测试。重新运行上面的命令,你会得到自己的结果。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。