ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Exchange Rates MCP Server

โดย cyanheadsรุ่น 0.6.0i★ –iบนเครื่องหรือคลาวด์
ชื่อใน registryio.github.cyanheads/exchange-rates-mcp-server

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Convert currencies, get FX rates, and query historical Frankfurter v1 exchange rate data.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: บนเครื่องหรือคลาวด์
  • ช่องทาง (transport): stdio, Streamable HTTP
  • หมวด: บัญชี การเงิน และภาษี

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • รันบนคลาวด์ไม่ต้องลงโปรแกรมเพิ่ม ต่อผ่านอินเทอร์เน็ตได้เลย
  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:

  1. เปิด Settings → Connectors
  2. กด Add custom connector
  3. วางที่อยู่ด้านล่างแล้วกด Add
  4. ถ้าให้ล็อกอิน ให้ล็อกอินกับผู้ทำ
SettingsConnectors1+ Add2https://…3
https://exchange-rates.caseyjhand.com/mcp

หรือรันในเครื่องคุณ

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "exchange-rates": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/exchange-rates-mcp-server"
      ],
      "env": {
        "FRANKFURTER_BASE_URL": "ใส่ค่าของคุณ",
        "FX_TIMESERIES_CANVAS_THRESHOLD_DAYS": "ใส่ค่าของคุณ",
        "FX_ENABLE_CANVAS_DROP": "ใส่ค่าของคุณ",
        "MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add --transport http exchange-rates https://exchange-rates.caseyjhand.com/mcp

หรือรันในเครื่องคุณ

claude mcp add exchange-rates --env FRANKFURTER_BASE_URL='ใส่ค่าของคุณ' --env FX_TIMESERIES_CANVAS_THRESHOLD_DAYS='ใส่ค่าของคุณ' --env FX_ENABLE_CANVAS_DROP='ใส่ค่าของคุณ' --env MCP_LOG_LEVEL='ใส่ค่าของคุณ' -- npx -y @cyanheads/exchange-rates-mcp-server

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "exchange-rates": {
      "url": "https://exchange-rates.caseyjhand.com/mcp"
    }
  }
}

หรือรันในเครื่องคุณ

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "exchange-rates": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/exchange-rates-mcp-server"
      ],
      "env": {
        "FRANKFURTER_BASE_URL": "ใส่ค่าของคุณ",
        "FX_TIMESERIES_CANVAS_THRESHOLD_DAYS": "ใส่ค่าของคุณ",
        "FX_ENABLE_CANVAS_DROP": "ใส่ค่าของคุณ",
        "MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "exchange-rates": {
      "type": "http",
      "url": "https://exchange-rates.caseyjhand.com/mcp"
    }
  }
}

หรือรันในเครื่องคุณ

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "exchange-rates": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/exchange-rates-mcp-server"
      ],
      "env": {
        "FRANKFURTER_BASE_URL": "ใส่ค่าของคุณ",
        "FX_TIMESERIES_CANVAS_THRESHOLD_DAYS": "ใส่ค่าของคุณ",
        "FX_ENABLE_CANVAS_DROP": "ใส่ค่าของคุณ",
        "MCP_LOG_LEVEL": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:

  1. เปิด ChatGPT บนเว็บ → Settings → Connectors (Apps)
  2. กด Create หรือ Add (บางแพ็กเกจต้องเปิด Developer mode ใน Advanced ก่อน)
  3. วางที่อยู่ด้านล่าง ตั้งชื่อ แล้วบันทึก
  4. ถ้าให้ล็อกอิน ให้ล็อกอินกับผู้ทำ
SettingsConnectors1+ Create2https://…3
https://exchange-rates.caseyjhand.com/mcp

ชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • FRANKFURTER_BASE_URL env
    Frankfurter API base URL. Override for local testing or self-hosted instances.
  • FX_TIMESERIES_CANVAS_THRESHOLD_DAYS env
    Day range above which fx_get_timeseries considers automatic DataCanvas staging for SQL analytics. Without canvas_id, series that fit the preview remain inline. DataCanvas is on by default; CANVAS_PRO…
  • FX_ENABLE_CANVAS_DROP env
    Enable fx_dataframe_drop, which permanently removes one staged table or view from a DataCanvas. Disabled by default; the tool is not registered (absent from tools/list) until set to true.
  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

ชื่อและคำอธิบายเครื่องมือตามที่ server ตอบมาเมื่อ 6 พ.ย. 2569 ผู้ทำเป็นคนเขียน ไม่ใช่เรา แสดงเป็นข้อความล้วน

  • fx_list_currencies

    List current Frankfurter v1 currency codes and names with as_of, the latest served rate date. include_retired=true adds historical codes absent from the current set. Optional official ECB start_date/end_date are outer coverage bounds, not uninterrupted availability; a dated end_d

  • fx_get_rates

    Get all available exchange rates for one base currency in a single snapshot. Useful for bulk comparison and seeding downstream tools. Returns a map of quote currency → rate, the actual snapshot date, and whether a historical date was snapped from a weekend/holiday to the prior bu

  • fx_get_rate

    Get the exchange rate for a currency pair on a given date (default: latest). Returns the rate, the actual rate date (which may differ from the requested date on weekends/holidays — daily observations may skip non-publication days), and source provenance. Cross-rates are triangula

  • fx_convert_currency

    Convert an amount between any two currencies at the latest or a historical rate. Returns the converted amount, the rate used, the actual rate date, and whether the date was snapped from a weekend/holiday to the prior business day. Cross-rates are triangulated through EUR automati

  • fx_get_timeseries

    Get historical daily Frankfurter v1 rates over an inclusive date range. Same-date EUR legs are divided without intermediate rounding; only days with both currencies appear, including observed self-pairs at 1 and historical retired currencies. Missing-leg served days produce cover

  • fx_dataframe_describe

    List tables and columns staged on a DataCanvas from a prior fx_get_timeseries call. Required first step before fx_dataframe_query — use it to discover table names and column schemas. Requires DataCanvas, which is on by default — a deployment that turns it off does not list this t

  • fx_dataframe_query

    Run a read-only SQL SELECT against DataCanvas tables staged by fx_get_timeseries. Supports aggregations, GROUP BY, window functions, and JOINs across multiple registered tables. Run fx_dataframe_describe first to discover table names and column schemas. Requires DataCanvas, which

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub cyanheads ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • ✓ ผ่าน

    endpoint ตอบ

    ตอบกลับใน 500 ms (HTTP 200)

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ไม่ต้องล็อกอิน

  • ✓ ผ่าน

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    อ่านคำอธิบายเครื่องมือ 7 ตัวแล้ว ไม่พบคำสั่งแอบแฝงถึง AI

เทียบกับตัวอื่นในหมวด บัญชี การเงิน และภาษีi

  • ดาวมากกว่า 0% ของอีก 2989 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 81% ของอีก 2989 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 2989 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Exchange Rates MCP Server ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.6.0) เข้า registry 6 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Finance Toolkit, SolidInvoice, Korea Tax Calculator

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Finance Toolkit

500+ transparent financial methods calculated from raw statements, not third-party endpoints.

โดย JerBoumaใช้กันมาก↓ 15.5K/สัปดาห์★ 5.5Kอัปเดต 3 วันที่ผ่านมา

บนเครื่องหรือคลาวด์

SolidInvoice

Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.

โดย SolidInvoiceกำลังโต★ 981อัปเดต 10 วันที่ผ่านมา

รันบนคลาวด์✓ solidinvoice.co

Korea Tax Calculator

Korean tax calculation and tax-audit judgment MCP: 97 tools with statutory citations.

โดย UpstageAIกำลังโต↓ 3.2K/สัปดาห์★ 97อัปเดต วันนี้

รันบนเครื่อง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

@cyanheads/exchange-rates-mcp-server Convert currencies, get FX rates, and query historical Frankfurter v1 exchange rate data via MCP. STDIO or Streamable HTTP. 7 Tools • 1 Opt-in Tool • 2 Resources

Public Hosted Server: https://exchange-rates.caseyjhand.com/mcp


Overview

Daily exchange rates from Frankfurter v1, with current currency discovery and historical coverage from 1999-01-04. Convert amounts, pull point-in-time or historical rates, summarize a full date range, and run SQL over staged series. Historical availability includes retired currencies and is checked against the requested data. Responses identify source: "Frankfurter v1" and rate_type: "Daily rate (Frankfurter v1)"; the v1 payload does not identify individual providers. No API key required.

Tools
ToolDescription
fx_list_currenciesCurrent currency discovery with full names and the latest served rate date
fx_get_ratesSnapshot of all rates for a base currency at latest or a historical date
fx_get_rateExchange rate for a single currency pair at latest or a historical date
fx_convert_currencyConvert an amount between two currencies at latest or a historical rate
fx_get_timeseriesHistorical daily rates for a currency pair over a date range
fx_dataframe_describeList DataCanvas tables and columns staged by a prior fx_get_timeseries call
fx_dataframe_queryRun a read-only SQL SELECT against a staged DataCanvas table
fx_dataframe_dropRemove one staged DataCanvas table or view (opt-in, destructive)

DataCanvas (DuckDB) is on by default. Set CANVAS_PROVIDER_TYPE=none to turn it off: the three fx_dataframe_* tools then drop out of tools/list, and fx_get_timeseries returns ranges inline when canvas_id is omitted; explicit staging fails canvas_unavailable. The Claude Desktop bundle (.mcpb) ships without DuckDB's native binding, so it runs with DataCanvas off. fx_dataframe_drop additionally needs FX_ENABLE_CANVAS_DROP=true.

The four rate and conversion tools accept base as an alias of base_currency; pair tools also accept quote for quote_currency. Send either spelling for a field, never both. Advertised schemas use the canonical names.

Currency values, including symbols, are trimmed and uppercased. Point dates accept YYYY-MM-DD or literal latest (also the default); range dates require YYYY-MM-DD. Advertised date patterns preserve handler-level invalid_date_format errors for malformed, blank or impossible calendar dates. Future range errors recommend an end_date today or earlier; end_date remains required.

Resources
ResourceDescription
fx://currenciesAll supported currencies as a stable reference document
fx://rates/latest/{base}Latest rates snapshot for a base currency as a stable URI

All resource data is also reachable via tools — use fx_list_currencies or fx_get_rates for programmatic access.

Skill

exchange-rates-guide covers historical currency coverage, observed-day summaries, paging and SQL comparisons. It ships with npm, Docker and MCPB installs and is available over MCP at skill://exchange-rates-guide/SKILL.md.

Cancelling a tool call or resource read stops its upstream fetch, response-body read, and retry backoff. V1 requests retain two retries and a 10-second timeout per attempt within a 12-second total budget per read. Optional coverage metadata gets one 1-second request without retries.

Capability reference

fx_list_currencies tool
  • Optional include_retired (default false) adds historical codes absent from current v1 discovery
  • Returns currencies: [{ code, name, start_date?, end_date? }], count, source and as_of (the latest served daily rate date), sorted alphabetically by code. Coverage dates come from optional official ECB metadata and describe outer bounds, not uninterrupted availability. A dated end_date does not itself imply retirement.
  • Metadata is cached for a day and queried only for the default official v1 base. Unavailable metadata leaves current discovery intact with a notice; valid v1 rate requests never depend on metadata.
  • Default discovery lists current currencies; include_retired: true adds historical codes when metadata is available. Historical requests validate against their unfiltered EUR snapshot or raw served range, so retired codes remain usable on dates where they have observations. Unknown codes fail unsupported_currency with sorted accepted/rejected codes and the input field; current currencies without historical observations fail upstream_no_data.

fx_get_rates tool
  • base_currency required; date optional (default latest, history from 1999-01-04, no future dates); optional symbols array narrows the response and must name at least one code
  • Returns a rates map (quote code → rate), the actual rate_date, and date_snapped: true when a weekend/holiday request snapped to the prior business day
  • Naming the base currency in symbols is valid — answered locally with a rate of 1 rather than sent upstream
  • Missing observations from a served snapshot identify the offending field and sorted, deduplicated missing_codes; unknown currencies retain unsupported_currency precedence. A response without any snapshot remains an unattributed upstream_no_data failure.
  • Typed failures: invalid_date_format, unsupported_currency, date_out_of_range, upstream_no_data

fx_get_rate tool
  • base_currency, quote_currency required; date optional (default latest, history from 1999-01-04, no future dates)
  • Returns rate, rate_date, and date_snapped: true when a weekend/holiday request snapped to the prior business day
  • Every pair uses quote EUR leg / base EUR leg from one unfiltered EUR snapshot without intermediate rounding; EUR's leg is 1. Same-currency pairs return 1 only on actual observation dates.
  • Typed failures: invalid_date_format, unsupported_currency, date_out_of_range, upstream_no_data

fx_convert_currency tool
  • base_currency, quote_currency, amount (must be > 0) required; date optional (default latest, history from 1999-01-04, no future dates)
  • Handles EUR↔any, any↔EUR, and cross-rate pairs (e.g. USD→JPY) in a single upstream call
  • Returns quote_amount as the unrounded JavaScript-number amount * rate product, rate, rate_date, date_snapped, plus rate_type and source provenance. No currency minor-unit rounding policy is applied; formatted rates use quote currency per base currency.
  • Typed failures: invalid_date_format, unsupported_currency, date_out_of_range, upstream_no_data

fx_get_timeseries tool
  • base_currency, quote_currency, start_date, end_date required (history from 1999-01-04, no future dates, start ≤ end); optional canvas_id appends to an existing canvas
  • Optional integer limit (default 500, minimum 0) bounds returned observations, clamping values above 500 with a notice. limit: 0 returns summary and metadata with empty rates; a nonempty inline result then points next_start_date at the first observation. Repeat with a positive limit to advance. Counts, summary, bounds, staging eligibility and complete staged tables are independent of the limit.
  • Inline results page at up to 500 observed publication days — rate_count is always the range total; truncated: true plus next_start_date continue the page
  • Ranges over FX_TIMESERIES_CANVAS_THRESHOLD_DAYS (default 90 days) are considered for DataCanvas staging. Series over the 40,000-character preview budget return spilled: true, canvas_id, and table_name; smaller series and deployments with CANVAS_PROVIDER_TYPE=none page inline
  • A same-currency pair returns 1 on actual observation dates. Every non-identity row requires both EUR legs on that same date; missing legs never fabricate observations. Membership uses all raw served dates before inclusive clipping, preserving weekend-only empty windows.
  • Missing either leg on a served in-window day produces a notice with the affected day count and first/last dates. Each day counts once, even if both legs are absent; weekends, holidays and clipped prior dates do not count. Statistics cover observed days only. Coverage and delivery notices coexist; truncated describes omitted observations in delivery, not missing upstream coverage.
  • An empty range (only weekends/holidays) returns rate_count: 0 with an explanatory notice, distinguishable from an error
  • Long ranges that fit the inline preview release their newly acquired canvas; failed or cancelled staging does too. A supplied canvas remains available.
  • An explicit canvas_id always stages the complete result, including short and empty ranges, using rate DOUBLE. Each table name has a fresh identifier suffix; repeated and concurrent calls preserve all earlier tables. Unknown IDs fail canvas_not_found; disabled DataCanvas fails canvas_unavailable. truncated is false when the preview includes every observation.
  • Nonempty results include summary: { mean, min: { rate, date }, max: { rate, date }, first: { rate, date }, last: { rate, date }, change_pct }. It covers all observations in the requested interval before paging or staging; a continuation summarizes its shorter requested interval. Tied extrema select the earliest date; singleton and identity movement is 0. Empty series omit summary. Mean is the unweighted arithmetic average of daily observations, not a tax-authority or accounting-policy prescription.

fx_dataframe_describe tool
  • canvas_id required (from a prior fx_get_timeseries call)
  • Retu

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx