NestJS银行MCP服务器
一种模型上下文协议(MCP)服务器,通过NestJS后端API提供银行功能,并提供个人访问令牌认证和对多种货币的支持。
特性
- 安全认证:个人访问令牌确保用户只能访问自己的帐户
- 多币种支持:查看任何支持的货币(澳元、美元、日元等)之间的余额和转账
- 动态汇率管理:有条件转账的任何货币对的实时汇率
- 代理前置条件检查:自动验证转账资格
- 用户激励:缺少信息的交互式提示
- 完整数据隐私:所有用户数据都需要身份验证-没有任何内容可以公开访问
安全模型
该银行系统实现了安全身份验证模型,其中:
- 每个用户都有一个唯一的个人访问令牌
- 用户只能查看和修改自己的帐户
- 所有用户数据都需要身份验证-没有公共访问权限
- 任何货币对的汇率都是公开的
- 访问令牌在环境变量中配置
- 后端通过令牌自动识别用户
可用用户
该系统附带了两个带有硬编码访问令牌的演示用户:
- 爱丽丝 -访问令牌:
alice_token_12345 - 鲍勃 -访问令牌:
bob_token_67890
环境配置
创建一个 .env 根目录中的文件,包含以下变量:
BASE_URL=http://localhost:3000
ACCESS_TOKEN=alice_token_12345要在用户之间切换,只需更改 ACCESS_TOKEN 价值在你 .env 文件。
API终点
公共端点(无需身份验证)
GET /fx?from={currency}&to={currency}-获取任何货币对的当前汇率PUT /fx-更新货币对的汇率
经过身份验证的端点(需要承载令牌)
GET /me-获取您自己的帐户信息POST /transfer-在您的账户之间转账
MCP工具
公共工具
get-fx-rate-获取任意两种货币之间的当前汇率get-access-token-info-获取当前访问令牌的相关信息
经过身份验证的工具
get-my-balance-查看您自己的账户余额check-transfer-eligibility-验证传输条件transfer-funds-在您的账户之间转账
MCP资源
fx-rate-汇率数据作为一种资源
用法示例
- 检查您的余额:
Use tool: get-my-balance- 获取任何货币对的外汇汇率:
Use tool: get-fx-rate with fromCurrency: "AUD", toCurrency: "JPY"- 转移资金:
Use tool: transfer-funds with amount: 100, fromCurrency: "AUD", toCurrency: "USD", fxRateCondition: {operator: "above", value: 0.65}- 获取令牌信息:
Use tool: get-access-token-info支持的货币
系统支持多种货币,汇率可配置:
- 澳元 (澳元)
- 美元 (美元)
- 日元 (日元)
- 还有更多 -易于扩展到其他货币
汇率被存储为货币对(例如。, AUDUSD, AUDJPY)并且可以通过API进行更新。
设置
- 安装依赖项:
npm install
cd server && npm install- 创建
.env使用您的配置文件:
cp .env.example .env
# Edit .env with your preferred access token- 启动NestJS服务器:
cd server
npm run start:dev- 启动MCP服务器:
npm start环境变量
BASE_URL-NestJS API基本URL(默认值:http://localhost:3000)ACCESS_TOKEN-您的访问令牌(默认值:alice_token_12345)
在用户之间切换
要在用户之间切换,只需更新您的 .env 文件:
# To use Alice's account
ACCESS_TOKEN=alice_token_12345
# To use Bob's account
ACCESS_TOKEN=bob_token_67890然后重新启动MCP服务器,使更改生效。
添加新货币
要添加对新货币的支持:
- 更新后端
fxRates在中映射server/src/app.service.ts - 在用户数组中添加新货币的模拟账户
- MCP工具将自动支持新货币
例子:
let fxRates: Record = {
AUDUSD: 0.68,
USDAUD: 1 / 0.68,
AUDJPY: 100,
JPYAUD: 1 / 100,
EURUSD: 1.08, // New currency
USDEUR: 1 / 1.08,
};安全说明
- 这是一个使用硬编码访问令牌进行演示的模拟系统
- 为了安全起见,在环境变量中配置了访问令牌
- 工具中不需要输入令牌-身份验证是自动的
- 后端通过匹配令牌自动识别用户
- 在生产中,实现适当的令牌生成、存储和过期
- 考虑增加速率限制和额外的安全措施
- 所有用户数据都是完全私有的,需要身份验证
