Wise MCP Server
Wise MCP 服务器
一个 MCP(机器通信协议)服务器,作为 Wise API 的网关,提供对 Wise 收款人功能的简化访问。
功能
通过简单的 MCP 资源列出您 Wise 账户中的所有收款人
自动处理身份验证和个人资料选择
使用 Wise 沙盒 API 进行开发和测试
提供 Docker 镜像以便于集成
Related MCP server: poke-bank
要求
Python 3.12 或更高版本(仅限直接安装)
uv包管理器(仅限直接安装)Wise API 令牌
Docker(如果使用 Docker 镜像)
获取 API 令牌
https://wise.com/your-account/integrations-and-tools/api-tokens
在此处创建新令牌。
安装
选项 1:直接安装
克隆此仓库:
git clone repo-url cd jc-wise-mcp设置环境:
cp .env.example .env # Edit .env to add your Wise API token使用
uv安装依赖项:uv venv uv pip install -e .
选项 2:使用 Docker
您可以构建 Docker 镜像:
docker build -t mcp-wise .并通过将其添加到 .mcp.json 中来将其添加到 Claude Code
{
"mcpServers": {
"mcp-wise": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"-e", "WISE_API_TOKEN=your_api_token_here",
"-e", "WISE_IS_SANDBOX=true",
"mcp-wise:latest"
]
}
}
}请务必将 your_api_token_here 替换为您实际的 Wise API 令牌。
请确保同时更新您的 .mcp.json 文件以匹配您选择的模式。我们提供了可供使用的模板文件:
对于 stdio 模式(默认):
cp .mcp.json.stdio .mcp.json对于 HTTP 模式:
cp .mcp.json.http .mcp.json
这些模板文件包含每种模式的适当配置。
可用的 MCP 资源
该服务器提供以下 MCP 资源:
list_recipients
返回您 Wise 账户中所有收款人的列表。
参数:
profile_type:要列出收款人的个人资料类型。可选值:[personal, business]。默认值:"personal"currency:可选。按货币代码过滤收款人(例如 'EUR', 'USD')
get_recipient_requirements
获取创建新收款人的要求。如果提供了账户详细信息,则根据要求验证账户详细信息。
参数:
source_currency:源货币代码(例如 'USD')target_currency:目标货币代码(例如 'EUR')source_amount:源货币金额profile_type:要使用的个人资料类型。可选值:[personal, business]。默认值:"personal"account:可选。用于根据要求进行验证的收款人账户详细信息。如果未提供,则返回初始账户要求。
create_recipient
使用提供的账户详细信息创建新收款人。
参数:
profile_type:要使用的个人资料类型。可选值:[personal, business]。默认值:"personal"account:符合 Wise API 要求的收款人账户详细信息。这应包括:accountHolderName:账户持有人姓名currency:目标货币代码(例如 'EUR')type:账户类型(例如 'iban', 'sort_code' 等)details:包含账户特定详细信息的对象(因货币和国家/地区而异)
send_money
使用 Wise API 向收款人汇款。
参数:
profile_type:要使用的个人资料类型(personal 或 business)source_currency:源货币代码(例如 'USD')source_amount:要发送的源货币金额recipient_id:要汇款给的收款人 IDpayment_reference:可选。转账的参考信息(默认为 "money")source_of_funds:可选。资金来源(例如 "salary", "savings")
配置
配置通过环境变量完成,可以在 .env 文件中设置:
WISE_API_TOKEN:您的 Wise API 令牌(必需)WISE_IS_SANDBOX:设置为 true 以使用 Wise 沙盒 API(默认:false)MODE:MCP 服务器传输模式,"http" 或 "stdio"(默认:stdio)
开发
项目结构
wise-mcp/
├── .env # Environment variables (not in git)
├── .env.example # Example environment variables
├── pyproject.toml # Project dependencies and configuration
├── README.md # This file
└── src/ # Source code
├── main.py # Entry point
└── wise_mcp/ # Main package
├── api/ # API clients
│ └── wise_client.py # Wise API client
├── resources/ # MCP resources
│ └── recipients.py # Recipients resource
└── app.py # MCP application setup添加新功能
要添加新功能:
在
src/wise_mcp/api/wise_client.py中添加新的 API 客户端方法在
src/wise_mcp/resources/中创建新资源在
src/wise_mcp/app.py中导入并注册新资源
贡献
欢迎贡献!请随时提交拉取请求 (Pull Request)。
许可证
MIT
Available Tools
4 toolscreate_recipientC
Creates a new recipient with the provided account details.
| Name | Required | Description | Default |
|---|---|---|---|
| recipient_fullname | Yes | The name of the account holder. Required. | |
| currency | Yes | The currency code for the recipient account. Required. | |
| recipient_type | Yes | The type of recipient account. Required. | |
| profile_type | No | The type of profile to use. One of [personal, business]. Default: "personal" | personal |
| account_details | No | Additional recipient account details compliant with Wise API requirements. If provided, it will be updated with the required fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It only says 'creates' (indicating mutation) but doesn't disclose side effects, idempotency, error conditions, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence is concise, but it may be too brief for a tool with 5 parameters and nested objects. Every word earns its place, but more structure would improve clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, nested objects, and an output schema, the description is insufficient. It doesn't mention the output or provide context on how to properly construct the account_details object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all 5 parameters. The description adds no additional meaning beyond stating 'with the provided account details,' which is already implied by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a new recipient, which distinguishes it from sibling tools like list_recipients and get_recipient_requirements. However, it lacks nuance about what constitutes a 'recipient' in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, it doesn't mention prerequisites like first calling get_recipient_requirements to determine required fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recipient_requirementsA
Fetches recipient requirements for creating a new recipient. If account details are provided, validates the account details against the requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| source_currency | No | Optional. The source currency code (e.g., 'USD') | |
| target_currency | No | Optional. The target currency code (e.g., 'EUR') | |
| source_amount | No | Optional. The amount in the source currency (e.g., 100.0) | |
| profile_type | No | The type of profile to use. One of [personal, business]. Default: "personal" | personal |
| account_details | No | Optional. The recipient account details to validate against requirements. If not provided, returns the initial account requirements. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses basic behavior (fetch and validate) but omits side effects, error conditions, or safety traits. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 24 words, front-loaded with purpose. No unnecessary words. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description covers core behavior. It could be improved by explicitly linking to 'create_recipient' as a prerequisite, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context that 'account_details' triggers validation, adding marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('fetches') and the resource ('recipient requirements'), and distinguishes itself from siblings like 'create_recipient' and 'send_money' by focusing on fetching and validating requirements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking requirements before creating a recipient, but does not explicitly state when to use this tool over alternatives like 'list_recipients' or 'send_money'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipientsA
Returns all recipients from the Wise API for the given profile type of current user. If a user has multiple profiles of that type, it will return recipients from the first profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profile_type | No | The type of profile to list recipients for. one of [personal, business] | personal |
| currency | No | Optional. Filter recipients by currency code (e.g., 'EUR', 'USD') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses the 'first profile' behavior, which is a useful trait beyond the schema. However, it does not mention other behavioral aspects like idempotency, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and front-loaded with the core purpose. No unnecessary words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown) and low complexity with 2 parameters. The description covers the key behavioral point of first-profile limitation but lacks explanation of return structure, error cases, or pagination. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage for parameters, so baseline is 3. The description adds minimal meaning beyond the schema by mentioning 'profile type of current user' and 'first profile' but does not elaborate on currency filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns all recipients for a given profile type, using the verb 'list' and specifying the resource 'Wise API recipients'. It distinguishes from sibling tools like 'create_recipient' which is a different action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a behavioral caveat about returning recipients from the first profile if multiple exist, which helps in understanding edge cases. However, it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_moneyB
Send money to a recipient using the Wise API.
| Name | Required | Description | Default |
|---|---|---|---|
| profile_type | Yes | The type of profile to use (personal or business) | |
| source_currency | Yes | Source currency code (e.g., 'USD') | |
| source_amount | Yes | Amount in source currency to send | |
| recipient_id | Yes | The ID of the recipient to send money to | |
| payment_reference | No | Optional. Reference message for the transfer (defaults to "money") | |
| source_of_funds | No | Optional. Source of the funds (e.g., "salary", "savings") |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden, but it provides no behavioral details beyond the name. It does not disclose mutation implications, error conditions, or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no unnecessary words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and no annotations, the description is too brief. It lacks context about success/failure, idempotency, and usage flow. Output schema exists but does not compensate for missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra context about parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Send' and resource 'money to a recipient using the Wise API', distinguishing it from sibling tools that manage recipients (create, get requirements, list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, such as needing a recipient created first, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
create_recipient - First observed
get_recipient_requirements - First observed
list_recipients - First observed
send_money
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: creating recipients, fetching requirements, listing recipients, and sending money. No overlap.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_recipient, list_recipients, get_recipient_requirements, send_money).
With 4 tools, the server is well-scoped for a focused Wise integration covering recipient management and money transfer.
Covers key recipient and transfer operations, but lacks a direct get_recipient by ID or update/delete recipient, which are minor gaps.
Maintenance
Related MCP Connectors
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
A paid remote MCP for AI SDK MCP gateway registry, built to return verdicts, receipts, usage logs, a
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables users to manage Privacy.com virtual cards, track transactions, and view funding sources through AI assistants or REST endpoints. It supports creating, updating, and pausing cards with full support for both production and sandbox environments.-
- FlicenseNot gradedqualityDmaintenanceAn MCP server that exposes Enable Banking API tools for interacting with bank accounts through Open Banking. It enables users to authenticate sessions, list accounts, and fetch transaction history or balances via a secure self-hosted server.2-
- AlicenseAqualityDmaintenanceA custom MCP server for the Mercury banking API that uses personal API tokens to avoid session expiry. It provides 15 tools for managing accounts, transactions, recipients, treasury, and more.15MIT
- FlicenseNot gradedqualityBmaintenanceA local MCP server that lets AI agents interact with the Adaptis (MEG) payment gateway, enabling payment link creation, transaction queries, refunds, and integration helpers like generating signed forms and verifying callbacks.-