dwolla-mcp
Enables AI agents to retrieve and analyze Dwolla payment platform data using natural language, with read-only access to accounts, transfers, customers, and compliance information.
README
dwolla-mcp
Model Context Protocol (MCP) Server for the Dwolla API.
<div align="left"> <a href="https://www.speakeasy.com/?utm_source=dwolla-mcp&utm_campaign=mcp-typescript"><img src="https://custom-icon-badges.demolab.com/badge/-Built%20By%20Speakeasy-212015?style=for-the-badge&logoColor=FBE331&logo=speakeasy&labelColor=545454" /></a> <a href="https://opensource.org/licenses/MIT"> <img src="https://img.shields.io/badge/License-MIT-blue.svg" style="width: 100px; height: 28px;" /> </a> </div>
<br /><br />
<!-- Start Summary [summary] -->
Summary
Dwolla API: Dwolla API Documentation <!-- End Summary [summary] -->
<!-- Start custom addition -->
🏦 About Dwolla & This MCP Server
This MCP server enables AI agents to retrieve and analyze data from Dwolla's payment platform using natural language. It provides read-only access to Dwolla's comprehensive payment infrastructure, allowing you to inspect accounts, analyze transfer history, monitor customer data, and generate insights from your payment operations.
💡 What You Can Do
- Account Monitoring - View account details, balances, and funding sources
- Customer Analytics - Analyze customer data, beneficial ownership, and compliance status
- Transfer Analysis - Examine transfer history, status, and failure reasons
- Mass Payment Insights - Review bulk payment operations and their items
- Compliance Reporting - Access documents, KBA sessions, and verification data
- Business Intelligence - Query exchange data, webhooks, and system events
⚠️ Current Scope
Read-Only Operations: This MCP server currently supports data retrieval and analysis only. It does not support creating customers, initiating transfers, or modifying account data at the moment. This makes it ideal for reporting, analytics, and monitoring workflows while maintaining security for sensitive payment operations.
🌍 Environment Support
- Sandbox Environment (
https://api-sandbox.dwolla.com) - Perfect for development and testing - Production Environment (
https://api.dwolla.com) - Live payment data access <!-- End custom addition -->
<!-- Start Table of Contents [toc] -->
Table of Contents
<!-- $toc-max-depth=2 -->
<!-- End Table of Contents [toc] -->
<!-- Start custom addition -->
🔑 Environment Setup & Authentication
Prerequisites
Before using the Dwolla MCP server, you'll need:
- Node.js 18+ and npm
- Dwolla Account (Sandbox Account Sign-up)
- Bearer Token generated using your API client credential sfrom your Dwolla application
Getting Your Bearer Token
-
Log in to your Dwolla Dashboard
- Sandbox: https://dashboard-sandbox.dwolla.com
- Production: https://dashboard.dwolla.com
-
Create or select your application
-
Generate a bearer token
-
Copy your bearer token
Environment Configuration
You will need to specify which environment you want to run the tools against:
Sandbox Environment (Recommended for testing):
--server sandbox
Production Environment (Live data):
--server prod
<details> <summary><strong>Local Development</strong></summary>
For local development and testing:
# Clone the repository
git clone https://github.com/dwolla/dwolla-mcp.git
cd dwolla-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run with your bearer token
node bin/mcp-server.js start --bearer-auth "your_token_here" --server "sandbox"
</details>
<!-- End custom addition -->
<!-- Start Installation [installation] -->
Installation
<details> <summary>Claude Desktop</summary>
Install the MCP server as a Desktop Extension using the pre-built mcp-server.mcpb file:
Simply drag and drop the mcp-server.mcpb file onto Claude Desktop to install the extension.
The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
[!NOTE] MCP bundles provide a streamlined way to package and distribute MCP servers. Learn more about Desktop Extensions.
</details>
<details> <summary>Cursor</summary>
Or manually:
- Open Cursor Settings
- Select Tools and Integrations
- Select New MCP Server
- If the configuration file is empty paste the following JSON into the MCP Server Configuration:
{
"command": "npx",
"args": [
"@dwolla/mcp-server",
"start",
"--server",
"prod",
"--bearer-auth",
""
]
}
</details>
<details> <summary>Claude Code CLI</summary>
claude mcp add DwollaMcp -- npx -y @dwolla/mcp-server start --server prod --bearer-auth
</details> <details> <summary>Gemini</summary>
gemini mcp add DwollaMcp -- npx -y @dwolla/mcp-server start --server prod --bearer-auth
</details> <details> <summary>Windsurf</summary>
Refer to Official Windsurf documentation for latest information
- Open Windsurf Settings
- Select Cascade on left side menu
- Click on
Manage MCPs. (To Manage MCPs you should be signed in with a Windsurf Account) - Click on
View raw configto open up the mcp configuration file. - If the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"@dwolla/mcp-server",
"start",
"--server",
"prod",
"--bearer-auth",
""
]
}
</details> <details> <summary>VS Code</summary>
Or manually:
Refer to Official VS Code documentation for latest information
- Open Command Palette
- Search and open
MCP: Open User Configuration. This should open mcp.json file - If the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"@dwolla/mcp-server",
"start",
"--server",
"prod",
"--bearer-auth",
""
]
}
</details> <details> <summary> Stdio installation via npm </summary> To start the MCP server, run:
npx @dwolla/mcp-server start --server prod --bearer-auth
For a full list of server arguments, run:
npx @dwolla/mcp-server --help
</details> <!-- End Installation [installation] -->
<!-- Start custom addition -->
💬 Usage Examples & Business Applications
🎧 Customer Support & Operations
Business Problem: Support teams need to quickly investigate customer issues and transfer failures.
Solutions with AI:
- "Find all failed transfers for customer john.doe@company.com and explain why they failed"
- "Show me customer details for customer ID {id}"
- "List transfers for customer {id} in the last month"
📊 Financial Reconciliation & Reporting
Business Problem: Finance teams need automated reconciliation and reporting.
Solutions with AI:
- "Calculate total transfer volume for Q1 2024 and compare to Q4 2023"
- "Show me all pending transfers over $10,000"
- "What's the current balance of my Dwolla Balance funding source?"
⚖️ Compliance & Risk Management
Problem: Compliance teams need to monitor suspicious activity, verify customer information, and ensure regulatory compliance.
Solutions with AI:
- "List all customers missing required beneficial ownership information"
- "Find transfers over $50,000 in the last 30 days for regulatory reporting"
- "Which customers need additional identity documents to maintain compliance?"
- "Identify customers with multiple failed transfer attempts this month"
📈 Business Intelligence & Analytics
Problem: Business teams need insights into payment patterns, customer behavior, and platform performance.
Solutions with AI:
- "What's the average transfer amount by customer segment and how has it changed?"
- "How many new verified customers were added this quarter vs last quarter?"
- "Which funding source types have the highest failure rates and why?"
- "Show me customers with increasing transfer volumes who might need premium features"
👩💻 Developer Tools & Integration Support
Problem: Development teams need to debug integrations, test scenarios, and understand API behavior.
Solutions with AI:
- "Show me the exact webhook events and timeline for transfer {id}"
- "What are the most common transfer failure reasons this week and their causes?"
- "Find examples of customers using each funding source type for testing"
- "Analyze the verification process for business customers who got stuck"
🚨 Automated Monitoring & Alerting
Problem: Operations teams need proactive monitoring of system health and business metrics.
Solutions with AI:
- "Has our daily failed transfer rate exceeded 5% and what's causing the failures?"
- "Show me any unusual spikes in transfer volumes or patterns today"
- "Which customers have been stuck in verification states for over 30 days?"
- "Are there any funding sources experiencing higher than normal failure rates?"
💡 Real-World Workflow Example
Scenario: Support receives an escalation about failed payments
Traditional Process (45+ minutes):
- Log into multiple dashboards
- Look up customers across different systems
- Check transfer history manually
- Research failure codes in documentation
- Escalate to engineering for analysis
With Dwolla MCP (5 minutes):
User: "We're seeing more transfer failures lately. Can you investigate?"
AI: "I'll analyze recent transfer failures for you."
→ Pulls transfer data with failed status
→ Groups by failure reasons
→ Identifies top failure patterns
→ Suggests specific customers to investigate
→ Recommends remediation steps
Result: "I found a 15% increase in 'insufficient funds' failures,
primarily from 3 specific customers. Here are the details and
recommended actions..."
Result: Issue identified and resolved in 5 minutes instead of 45+ minutes, with complete context for the support agent.
🛠️ Available Operations
The Dwolla MCP server provides the following tools for data retrieval and analysis:
Account Operations
accounts-get- Retrieve account details and statusaccounts-funding-sources-list- List all funding sources for accountaccounts-transfers-list- List and search transfers for accountaccounts-mass-payments-list- List mass payments for accountaccounts-exchanges-list- List exchanges for account
Customer Management
customers-list- List and search customers with filteringcustomers-get- Retrieve detailed customer informationcustomers-funding-sources-list- List customer funding sourcescustomers-transfers-list- List customer transfer historycustomers-mass-payments-list- List customer mass paymentscustomers-documents-list- List customer documentscustomers-exchanges-list- List customer exchangescustomers-beneficial-owners-list- List customer beneficial ownerscustomers-list-available-connections- List available exchange connections
Transfer Operations
transfers-get- Retrieve specific transfer detailstransfers-get-failure-reason- Get transfer failure analysistransfers-list-fees- List transfer fees and charges
Mass Payment Operations
mass-payments-get- Retrieve mass payment detailsmass-payments-list-items- List items within a mass paymentmass-payments-get-item- Retrieve specific mass payment item
Funding Source Operations
funding-sources-get- Retrieve funding source detailsfunding-sources-get-balance- Get funding source balancefunding-sources-get-micro-deposits- Get micro-deposit verification detailsfunding-sources-get-van-routing- Get Virtual Account Number routing info
Compliance & Documents
documents-get- Retrieve document detailsbeneficial-owners-get- Retrieve beneficial owner informationbeneficial-owners-get-ownership-status- Get beneficial ownership statusbeneficial-owners-documents-list- List beneficial owner documentskba-get-questions- Retrieve KBA (Knowledge-Based Authentication) questions
Exchange Operations
exchanges-get- Retrieve exchange detailsexchange-partners-list- List available exchange partnersexchange-sessions-get- Get exchange session information
Labels & Ledger
labels-list-for-customer- List labels for customerlabels-get- Retrieve label detailslabels-list-ledger-entries- List ledger entrieslabels-get-ledger-entry- Retrieve specific ledger entrylabels-get-reallocation- Get label reallocation details
Webhooks & Events
webhooks-get- Retrieve webhook detailswebhooks-list-retries- List webhook retry attemptswebhook-subscriptions-list- List webhook subscriptionswebhook-subscriptions-get- Get webhook subscription detailswebhook-subscriptions-list-webhooks- List webhooks for subscriptionevents-list- List eventsevents-get- Retrieve specific event details
Reference Data
business-classifications-list- List business classificationsbusiness-classifications-get- Get business classification detailsroot-get- API entry point for discovery
❓ Troubleshooting
🔧 Common Setup Issues
MCP Server Not Connecting
- Verify your bearer token is valid
- Check that Node.js 18+ is installed:
node --version - Ensure npm/npx is available:
npm --version - Try clearing npm cache:
npm cache clean --force
Environment Configuration Issues
- Confirm you're using the correct environment URL:
- Sandbox:
https://api-sandbox.dwolla.com - Production:
https://api.dwolla.com
- Sandbox:
- Verify your bearer token matches your intended environment
Authentication Errors
- Verify token hasn't expired
- Check that your application is active
🖥️ Client-Specific Issues
Claude Desktop
- Restart Claude Desktop after configuration changes
- Check
claude_desktop_config.jsonsyntax with a JSON validator - Verify file paths are absolute and properly escaped
- Look for error messages in Claude's developer console
Cursor
- Restart Cursor after adding MCP configuration
- Check Settings → Cursor Settings → MCP for configuration status
- Verify the server appears in the MCP tools list
- Try removing and re-adding the server configuration
VS Code
- Ensure GitHub Copilot extension is installed and active
- Check that MCP support is enabled in settings
- Restart VS Code after configuration changes
- Verify the MCP server appears in the agent tools list
🔍 Advanced Troubleshooting
Token Validation
# Test your bearer token directly
curl -H "Authorization: Bearer your_token_here" \
https://api-sandbox.dwolla.com/
# Should return API root information
📊 Debugging Tips
Verbose Logging
- Check your MCP client's logs for detailed error messages
- Enable debug mode in your client if available
- Monitor network requests to identify API call failures
Test with MCP Inspector
- Use the MCP Inspector to test your server:
npx @modelcontextprotocol/inspector npx -y --package @dwolla/mcp-server -- mcp start --bearer-auth "your_token" --server "sandbox"
💡 Performance Optimization
Large Dataset Queries
- Use specific date ranges when querying transfers or events
- Consider filtering by customer or status to reduce response size
🆘 Getting Help
- Documentation: Dwolla API Docs
- Community Support: Developer Forum
- Dwolla Support: Dwolla Developer Support
- MCP Protocol: Model Context Protocol Docs
- GitHub Issues: Report bugs or request features in this repository
🔒 Security Considerations
Important: This MCP server can provide access to sensitive financial data and systems. Following these security best practices is essential to protect your information, maintain data integrity and ensure compliance.
🛡️ Authentication Security
Bearer Token Management
- Never commit bearer tokens to version control
- Use environment variables for token storage
Environment Separation
- Always start with Sandbox for development and testing
- Use separate tokens for sandbox and production environments
- Never use production tokens in development/testing
<!-- End custom addition -->
<!-- Start Progressive Discovery [dynamic-mode] -->
Progressive Discovery
MCP servers with many tools can bloat LLM context windows, leading to increased token usage and tool confusion. Dynamic mode solves this by exposing only a small set of meta-tools that let agents progressively discover and invoke tools on demand.
To enable dynamic mode, pass the --mode dynamic flag when starting your server:
{
"mcpServers": {
"DwollaMcp": {
"command": "npx",
"args": ["@dwolla/mcp-server", "start", "--mode", "dynamic"],
// ... other server arguments
}
}
}
In dynamic mode, the server registers only the following meta-tools instead of every individual tool:
list_tools: Lists all available tools with their names and descriptions.describe_tool_input: Returns the input schema for one or more tools by name.execute_tool: Executes a tool by name with its arguments.list_scopes: Lists the scopes available on the server.
This approach significantly reduces the number of tokens sent to the LLM on each request, which is especially useful for servers with a large number of tools.
You can combine dynamic mode with scope and tool filters:
{
"mcpServers": {
"DwollaMcp": {
"command": "npx",
"args": ["@dwolla/mcp-server", "start", "--mode", "dynamic", "--scope", "read"],
// ... other server arguments
}
}
}
<!-- End Progressive Discovery [dynamic-mode] -->
<!-- Placeholder for Future Speakeasy SDK Sections -->
Development
Contributions
While we value contributions to this MCP Server, the code is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation. We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。