revolut-mcp
仅限沙盒。 此MCP服务器连接到Revolut的开放银行 沙盒 环境。将其与真正的Revolut帐户一起使用需要额外的合规注册——请参阅 生产使用.
A. 模型上下文协议 允许AI助手(Claude、Cursor等)与Revolut个人帐户交互的服务器。查询余额、浏览交易历史、检查单个交易和查找实时货币汇率——所有这些都来自对话。
______________________________________________________________________
目录
______________________________________________________________________
特性
| 工具 | 说明 |
|---|---|
setup_auth | 步骤1:创建同意并获取授权URL |
complete_auth | 步骤2:代币的交换授权码 |
get_accounts | 列出所有实时余额账户 |
get_account_balance | 特定账户的所有余额类型 |
get_transactions | 具有可选日期过滤的交易历史记录 |
get_transaction_detail | 单笔交易的全部细节 |
get_exchange_rate | 欧洲央行实时/历史汇率 |
convert_currency | 在任意两种货币之间转换金额 |
______________________________________________________________________
建筑
revolut-mcp/
├── src/
│ ├── index.ts # MCP server, tool registry
│ ├── config.ts # Env-based configuration
│ ├── client/
│ │ ├── auth.ts # OAuth2 + mTLS authentication
│ │ ├── revolut-client.ts # Revolut Open Banking API client
│ │ └── token-store.ts # Persists tokens to disk
│ ├── tools/
│ │ ├── auth-tools.ts # setup_auth, complete_auth
│ │ ├── account-tools.ts # get_accounts, get_account_balance
│ │ ├── transaction-tools.ts # get_transactions, get_transaction_detail
│ │ └── currency-tools.ts # get_exchange_rate, convert_currency
│ └── types/
│ └── revolut.ts # Open Banking API response types
├── tests/ # Jest unit tests
├── .github/workflows/
│ ├── test.yml # Runs on every push / PR
│ └── publish.yml # Publishes to npm on version tags
├── .env.sandbox.template
├── GitVersion.yml # Semantic versioning config
└── ...身份验证: Revolut Open Banking使用双向TLS(mTLS)和OAuth 2.0以及JWT授权请求(JAR)。服务器自动处理令牌刷新。令牌被持久化到本地 .tokens.json 重新启动之间的文件。
货币汇率: 这 get_exchange_rate 和 convert_currency 工具使用 法兰克福API (欧洲央行数据,不需要API密钥),因此它们独立于Revolut身份验证工作。
______________________________________________________________________
先决条件
- Node.js 18+
- A. Revolut开发者 沙盒帐户-- developer.revolut.com
- 生成的mTLS传输证书(请参见 沙盒设置)
______________________________________________________________________
沙盒设置
1.创建沙盒帐户
在以下网址注册 Revolut开发者门户。您可以跳过电子邮件验证,并在沙盒中使用模拟细节。
2.生成您的运输证书
在开发人员门户中,转到 沙盒→ 认证 并生成证书签名请求(CSR)。这将下载a transport.pem 和 private.key.
或者,生成自己的证书并上传公共证书:
mkdir -p certs
openssl req -newkey rsa:2048 -nodes \
-keyout certs/private.key \
-x509 -days 365 \
-out certs/transport.pem \
-subj "/CN=revolut-mcp-sandbox"上传 transport.pem 转到开发人员门户 沙盒→ 认证.3.记下您的客户ID
找到你的 客户端ID 在开发者门户上 概述 选项卡。
4.设置重定向URI
在开发人员门户中,添加重定向URI https://localhost:3000/callback 作品——你只需要复制 code 手动从URL访问,不需要本地服务器。
______________________________________________________________________
安装
来自npm(一旦发布)
npm install -g @jeffnasseri/revolut-mcp来源
git clone https://github.com/jeffnasseri/revolut-mcp.git
cd revolut-mcp
npm install
npm run build______________________________________________________________________
配置
复制模板并填写您的值:
cp .env.sandbox.template .env# .env
REVOLUT_CLIENT_ID=your_client_id_here
REVOLUT_CERT_PATH=./certs/transport.pem
REVOLUT_KEY_PATH=./certs/private.key
REVOLUT_REDIRECT_URI=https://localhost:3000/callback
TOKEN_STORE_PATH=./.tokens.json
REVOLUT_ENVIRONMENT=sandbox| 变量 | 必填 | 描述 |
|---|---|---|
REVOLUT_CLIENT_ID | 是 | 来自开发人员门户的客户端ID |
REVOLUT_CERT_PATH | 是 | 路径 transport.pem |
REVOLUT_KEY_PATH | 是 | 路径 private.key |
REVOLUT_SIGNING_KEY_PATH | 否 | 单独的签名密钥(默认为传输密钥) |
REVOLUT_REDIRECT_URI | 是 | 必须与门户中设置的内容匹配 |
TOKEN_STORE_PATH | 否 | 在哪里持久化令牌(默认值: ./.tokens.json) |
REVOLUT_ENVIRONMENT | 否 | 始终 sandbox 对于此服务器 |
______________________________________________________________________
运行服务器
# Built version
node dist/index.js
# Development (ts-node)
npm run dev
# Via npx (after npm publish)
npx @jeffnasseri/revolut-mcp______________________________________________________________________
身份验证流程
服务器使用开放银行OAuth 2.0授权代码流。您只需要执行一次操作——服务器会自动刷新令牌。
步骤1--让Claude设置身份验证
Call the setup_auth toolClaude将返回一个授权URL。在浏览器中打开它。
步骤2--在浏览器中授权
Revolut的沙盒UI将显示帐户选择/同意屏幕。接受它。您将被重定向到您的重定向URI:
https://localhost:3000/callback?code=abc123xyz&...复制 code URL中的值。
步骤3——完成身份验证
Call complete_auth with code="abc123xyz"令牌保存到 .tokens.json。您已准备好使用所有帐户工具。
令牌寿命: Revolut沙盒访问令牌将在1小时后过期。服务器使用存储的刷新令牌自动刷新它们。
______________________________________________________________________
工具参考
setup_auth
创建帐户访问同意并返回Revolut授权URL。
输入: _(无)_
输出: 在浏览器中访问的授权URL。
______________________________________________________________________
complete_auth
交换访问+刷新令牌的授权码。
| 参数 | 类型 | 说明 |
|---|---|---|
code | string | The code 从重定向URL查询参数 |
______________________________________________________________________
get_accounts
列出所有账户及其当前余额。
输入: _(无)_
输出示例:
Account ID : acc-001
Currency : GBP
Type : CurrentAccount
Nickname : Main GBP
Balances:
InterimAvailable: 1234.56 GBP (as of 2024-01-15T10:00:00Z)
InterimBooked: 1300.00 GBP (as of 2024-01-15T10:00:00Z)______________________________________________________________________
get_account_balance
特定账户的所有余额类型。
| 参数 | 类型 | 说明 |
|---|---|---|
accountId | string | 重新生成帐户ID |
______________________________________________________________________
get_transactions
具有可选日期过滤的交易历史记录。
| 参数 | 类型 | 说明 |
|---|---|---|
accountId | string | 重新生成帐户ID |
fromDate | 弦? | 开始日期 YYYY-MM-DD |
toDate | 弦? | 结束日期 YYYY-MM-DD |
limit | 号码? | 最大结果(1–500,默认值50) |
PSD2注释: 完整的交易历史记录仅在授权后的前5分钟内可用。之后,监管窗口仅限于最后90天。
______________________________________________________________________
get_transaction_detail
单笔交易的完整细节,包括外汇信息、商家和余额。
| 参数 | 类型 | 说明 |
|---|---|---|
accountId | string | 重新生成帐户ID |
transactionId | string | 交易ID |
______________________________________________________________________
get_exchange_rate
欧洲央行的实时或历史汇率。
| 参数 | 类型 | 说明 |
|---|---|---|
baseCurrency | string | ISO 4217代码,例如。 GBP |
targetCurrencies | string\[\]? | 具体目标,例如。 ["EUR","USD"].全部省略。 |
date | 弦? | 历史日期 YYYY-MM-DD.忽略最新消息。 |
是否 不 需要Revolut身份验证。
______________________________________________________________________
convert_currency
在两种货币之间转换金额。
| 参数 | 类型 | 说明 |
|---|---|---|
amount | number | 要转换的金额 |
fromCurrency | string | 源货币代码 |
toCurrency | string | 目标货币代码 |
date | 弦? | 历史日期 YYYY-MM-DD.忽略最新消息。 |
______________________________________________________________________
连接到克劳德桌面
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"revolut": {
"command": "node",
"args": ["/absolute/path/to/revolut-mcp/dist/index.js"],
"env": {
"REVOLUT_CLIENT_ID": "your_client_id",
"REVOLUT_CERT_PATH": "/absolute/path/to/certs/transport.pem",
"REVOLUT_KEY_PATH": "/absolute/path/to/certs/private.key",
"REVOLUT_REDIRECT_URI": "https://localhost:3000/callback",
"TOKEN_STORE_PATH": "/absolute/path/to/.tokens.json"
}
}
}
}保存后重新启动Claude Desktop。旋转工具将出现在工具列表中。
______________________________________________________________________
发展
npm install # install deps
npm run dev # run with ts-node (no build step)
npm run build # compile TypeScript
npm test # run unit tests
npm run test:watch # watch mode
npm run test:coverage
npm run lint # type-check only版本控制
此项目使用 版本 在配置中 GitVersion.yml语义版本由常规提交消息确定:
| 提交前缀 | 版本冲突 |
|---|---|
feat: | 未成年人 |
fix:, refactor:, perf: | 补丁 |
feat!: 或 fix!: | 专业 |
chore:, docs:, ci: | 没有颠簸 |
发布到npm是通过按下 v* 标签。
______________________________________________________________________
生产使用
与a整合 实时Revolut个人账户 要求:
- 在Revolut注册您的应用程序,以获得生产开放银行访问权限
- 获得A eIDAS 或 奥比 由受监管的证书颁发机构颁发的合格运输证书
- 在您所在的司法管辖区完成开放银行合规注册
- 符合PSD2/SCA要求
这是一个不平凡的监管过程。此MCP服务器有意仅针对沙盒,没有生产配置。
______________________________________________________________________
免责声明
这是一个 非官方的社区项目 且不隶属于Revolut有限公司、由Revolut有限公司背书或支持。使用风险自负。在将代码连接到任何金融账户之前,即使在沙盒中,也要始终检查代码。
