Finance Toolkit
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Read, search and export statements and balances from banks across Europe, without moving money.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ENABLE_BANKING_CONFIG, ENABLE_BANKING_KEYต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"enable-banking": {
"command": "npx",
"args": [
"-y",
"@foreverworks/mcp-enable-banking"
],
"env": {
"ENABLE_BANKING_CONFIG": "ใส่ค่าของคุณ",
"ENABLE_BANKING_KEY": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add enable-banking --env ENABLE_BANKING_CONFIG='ใส่ค่าของคุณ' --env ENABLE_BANKING_KEY='ใส่ค่าของคุณ' -- npx -y @foreverworks/mcp-enable-bankingเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"enable-banking": {
"command": "npx",
"args": [
"-y",
"@foreverworks/mcp-enable-banking"
],
"env": {
"ENABLE_BANKING_CONFIG": "ใส่ค่าของคุณ",
"ENABLE_BANKING_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"enable-banking": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@foreverworks/mcp-enable-banking"
],
"env": {
"ENABLE_BANKING_CONFIG": "ใส่ค่าของคุณ",
"ENABLE_BANKING_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ENABLE_BANKING_KEY envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันโดเมน foreverworks.com แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: ENABLE_BANKING_CONFIG
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.1) เข้า registry 6 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Finance Toolkit, SolidInvoice, Korea Tax Calculator
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Korean tax calculation and tax-audit judgment MCP: 96 tools with statutory citations.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Read, search and export your bank statements and balances from your AI assistant, through Enable Banking, a licensed PSD2 provider for banks across Europe. It moves no money: besides reading, it only starts, stores and ends consents. start_auth is its one money tool, because it asks your bank for 180 days of read access; your client asks you before each call.
You need an Enable Banking application (its id, a registered redirect URL and its private key), and the account holder, to approve each consent in their bank's app every 180 days. A bank allows about four reads of an account a day without the holder present, shared by every program on that consent, so read a period once and narrow it here.
%2C%20when%20app.json%20does%20not%20name%20it.%22%7D%5D&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40foreverworks%2Fmcp-enable-banking%22%5D%2C%22env%22%3A%7B%22ENABLE_BANKING_CONFIG%22%3A%22%24%7Binput%3Aenable_banking_config%7D%22%2C%22ENABLE_BANKING_KEY%22%3A%22%24%7Binput%3Aenable_banking_key%7D%22%7D%7D)
With Claude Code:
claude mcp add enable-banking -e ENABLE_BANKING_CONFIG="<path to Enable Banking app.json>" -- npx -y @foreverworks/mcp-enable-banking
Claude Desktop (Settings, Developer, Edit Config) and most other clients read the same command as JSON:
{
"mcpServers": { "enable-banking": { "command": "npx", "args": ["-y", "@foreverworks/mcp-enable-banking"], "env": { "ENABLE_BANKING_CONFIG": " " } } } }
Each runs the published package on Node 22.19 or newer. VS Code and the Claude Desktop bundle ask for each setting as they add the server; leave an optional one empty. Cursor reads each from your environment instead (${env:ENABLE_BANKING_CONFIG} and so on), so set them before you start Cursor. The commands above set only what is required; Configuration has the rest.
git clone https://github.com/foreverworks/mcps.git && cd mcps
npm ci && npm run build claude mcp add enable-banking -e ENABLE_BANKING_CONFIG=" " -- node "$PWD/servers/enable-banking/dist/index.js"
In a JSON configuration, the command is node and its one argument the full path of servers/enable-banking/dist/index.js. To share one running copy between several clients over HTTP, see docs/deploying.md.
| Variable | Required | Meaning |
|---|---|---|
ENABLE_BANKING_CONFIG | yes | Path of app.json (below), which the server only reads. |
ENABLE_BANKING_KEY | no | Path of the application's private key (PEM). When unset, app.json's private_key names it, relative to app.json's folder. |
ENABLE_BANKING_STATE_DIR | no | Where the consents (sessions.json), their backup and their lock live; the default is in docs/configuration.md. |
ENABLE_BANKING_EXPORTS_DIR | no | Where export_transactions writes its CSV files. Default: exports/ in the state folder. |
app.json holds the application's details from the control panel:
{
"application_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "application_name": "Example Books", "environment": "sandbox", "redirect_url": "https://example.com/bank-callback", "private_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.pem" }
application_id and redirect_url are required, and private_key too unless ENABLE_BANKING_KEY is set. redirect_url must match a registered one exactly. application_name and environment only label health's answer; the application_id decides sandbox or production. api_base overrides https://api.enablebanking.com for tests or a proxy; other keys are ignored. Under systemd, a credentials directory renames files to their credential names, so set ENABLE_BANKING_KEY there. The variables every server shares are in docs/configuration.md.
complete_auth only needs the address the browser lands on. .pem; move it where only this server can read it, and write app.json beside it.Production is a second application, registered with the Production environment. It starts Inactive; "Activate by linking accounts" makes it active in restricted mode, which reads only your own linked accounts until you sign a contract with Enable Banking.
health check. It names the application, its environment, whether it is active and its redirect URLs, and counts the stored consents. A key that does not belong to the application_id fails here.list_aspsps for its country. start_auth takes its name; psuTypes lists its account types (business, personal), and maxConsentDays its longest consent.start_auth with that name, the country and the psu_type, and approve it. The link it returns is for the account holder: plan five minutes with the phone that holds the bank's app.?code=.... Give that address (or the code) to complete_auth at once: the code works once, for minutes. Its answer lists the accounts and the consent's end date.To renew a consent (list_stored_sessions says how many days it has left), repeat steps 3 to 5 with its bank, country and type. Without a label, the new consent takes the old one's place and label.
From a shell, node dist/index.js --health prints one ENABLEBANKING: line and exits 1 when a person has to act or 2 when Enable Banking was unwell, which suits a daily timer.
read changes nothing at the bank or in the stored consents (an export writes only its file); write changes the stored consents; money asks a bank for access to your accounts.
| Tool | Access | What it does |
|---|---|---|
health | read | Whether Enable Banking accepts the key, as which application and in which environment, where the files are, and how many consents are stored. |
list_aspsps | read | The banks Enable Banking reaches in a country (empty for every market): the name start_auth takes, the account types each offers and its longest consent. Cached an hour. |
list_stored_sessions | read | Every stored consent by label, with its bank, its accounts and when it expires, as a date and as days left. |
start_auth | money | Starts a consent with a bank, for every account it offers, for 180 days. Returns a link the account holder must open. |
complete_auth | write | Finishes a consent from the bank's redirect, stores it under a label, and reports its accounts and its end date. |
revoke_session | write | Ends a stored consent at the bank and removes it here, keeping the previous file as a backup. |
list_accounts | read | The accounts a consent reaches today, asked of the bank, each with the uid the other tools take. |
get_transactions | read | A statement for one account, every account on a consent, or every stored account, with exact signed amounts, narrowed by text, direction and amount without another read at the bank. |
export_transactions | read | The same statement written as a CSV file, for a long period, many accounts or an accountant. Returns the file's path, size and SHA-256. |
get_balances | read | Every balance the bank reports for one account (booked, available and the others it sends), each an exact amount with its PSD2 code and its meaning. |
start_auth moves no money, but it grants 180 days of read access, which only the account holder should decide. It is marked money in tools/list, so your client asks you before each call (Claude Code does, in every permission mode). With MCP_CONFIRM=elicit the server asks you itself, in one line computed from the arguments:
enable-banking: Bank consent (PSD2, read-only: balances and transactions) with Example Bank (DE), personal accounts, every account the bank offers, valid 180 days: until 2030-07-01 if confirmed today
The end date is computed when you are asked and again when the call runs, so a later confirmation moves it by the delay. Access starts when the account holder approves in their bank.
`config`: "ENABLE_BANKING_CONFIG is not set", or a message naming app.json. Set ENABLE_BANKING_CONFIG to a readable app.json, and ENABLE_BANKING_KEY (or private_key) to the key.
`auth`: "cannot use the private key at ...". The key file is missing, unreadable or not an RS256 private key. Point ENABLE_BANKING_KEY or private_key at the .pem the control panel saved; the next call reads it again, with no restart.
`api` with status 401 or 403. Enable Banking refused the signed token: the key does not belong to the application_id (a sandbox key beside a production id, say).
`api` with `reason` `EXPIRED_SESSION`, `REVOKED_SESSION`, `CLOSED_SESSION` or `SESSION_DOES_NOT_EXIST`, or status 422 or 404, on a call that worked the day before. The consent lapsed or was revoked in the bank's app, and retrying will not bring it back. Renew it with steps 3 to 5 of First run.
`api` from `complete_auth` with `reason` `EXPIRED_AUTHORIZATION_CODE`, `WRONG_AUTHORIZATION_CODE` or `outcome_unknown`. The code works once, for minutes, and a dropped excha
ตัดมาแค่ช่วงต้น อ่านต่อใน repo