@airwallex/developer-mcp 0.3.0-beta.7 → 0.3.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,6 +9,8 @@ The Airwallex Developer Model Context Protocol (MCP) server empowers AI coding a
9
9
  <details>
10
10
  <summary><strong>Cursor</strong></summary>
11
11
 
12
+ [![Install Airwallex Developer MCP Server on Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=airwallex-dev&config=eyJlbnYiOnsiQUlSV0FMTEVYX1NBTkRCT1hfQ0xJRU5UX0lEIjoiIiwiQUlSV0FMTEVYX1NBTkRCT1hfQVBJX0tFWSI6IiJ9LCJjb21tYW5kIjoibnB4IC15IEBhaXJ3YWxsZXgvZGV2ZWxvcGVyLW1jcEBsYXRlc3QifQ%3D%3D)
13
+
12
14
  #### Without sandbox tools
13
15
 
14
16
  ```json
@@ -101,7 +103,7 @@ To access sandbox tools, ensure that your sandbox API credentials are set using
101
103
 
102
104
  | Name | Description | Default | Required |
103
105
  | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- |
104
- | `AIRWALLEX_SANDBOX_API_KEY` | The API key, either an admin key or a restricted key with limited permissions, generated in the sandbox environment. Note that the sandbox tools work as expected only if the API key has the required permissions to access the underlying APIs. Simulation APIs require an admin API key. | N/A | No |
106
+ | `AIRWALLEX_SANDBOX_API_KEY` | The API key, either an admin key or a scoped key with limited permissions, generated in the sandbox environment. Note that the sandbox tools work as expected only if the API key has the required permissions to access the underlying APIs. Simulation APIs require an admin API key. | N/A | No |
105
107
  | `AIRWALLEX_SANDBOX_CLIENT_ID` | The client ID associated with the API key generated in the sandbox environment. | N/A | No |
106
108
  | `DISABLE_TELEMETRY` | Set this variable to `true` to opt out of telemetry. | `0` | No |
107
109
 
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AIRWALLEX_API_SCHEMA_URL = exports.BASE_URLS = void 0;
3
+ exports.BASE_URLS = void 0;
4
4
  exports.BASE_URLS = {
5
+ api: "https://api-demo.airwallex.com",
5
6
  docsSearch: "https://demo.airwallex.com/docs/ai",
7
+ telemetry: "https://o11y-demo.airwallex.com",
6
8
  };
7
- exports.AIRWALLEX_API_SCHEMA_URL = process.env.AIRWALLEX_API_SCHEMA_URL ||
8
- "https://www.airwallex.com/docs/api/schema.json";
package/dist/index.js ADDED
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
41
+ const fs = __importStar(require("fs"));
42
+ const path_1 = __importDefault(require("path"));
43
+ const server_1 = require("./server");
44
+ const version_1 = require("./utils/version");
45
+ (async () => {
46
+ const appVersion = (0, version_1.getVersion)(__dirname);
47
+ const bestPracticesPath = path_1.default.join(__dirname, "integration-best-practices.md");
48
+ const integrationBestPracticesContent = fs.readFileSync(bestPracticesPath, "utf-8");
49
+ const server = (0, server_1.buildServer)({
50
+ appVersion,
51
+ integrationBestPracticesContent: integrationBestPracticesContent,
52
+ });
53
+ const transport = new stdio_js_1.StdioServerTransport();
54
+ await server.connect(transport);
55
+ })();
package/dist/server.js CHANGED
@@ -1,9 +1,9 @@
1
- #!/usr/bin/env node
2
1
  "use strict";
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildServer = void 0;
4
4
  const node_sdk_1 = require("@airwallex/node-sdk");
5
5
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
6
- const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const config_1 = require("./constants/config");
7
7
  const AirTrackerClient_1 = require("./services/AirTrackerClient");
8
8
  const createBillingPrice_1 = require("./tools/createBillingPrice");
9
9
  const createPaymentLink_1 = require("./tools/createPaymentLink");
@@ -14,44 +14,41 @@ const listBeneficiaries_1 = require("./tools/listBeneficiaries");
14
14
  const listPaymentLinks_1 = require("./tools/listPaymentLinks");
15
15
  const listTransfers_1 = require("./tools/listTransfers");
16
16
  const simulateTransferResult_1 = require("./tools/simulateTransferResult");
17
- const version_1 = require("./utils/version");
18
17
  const withTelemetry_1 = require("./utils/withTelemetry");
19
- const appVersion = (0, version_1.getVersion)(__dirname);
20
18
  const awxEnv = "demo";
21
- const airTrackerBaseUrl = "https://o11y-demo.airwallex.com";
22
19
  const disableTelemetry = process.env.DISABLE_TELEMETRY === "true" ||
23
20
  process.env.DISABLE_TELEMETRY === "1";
24
- const server = new mcp_js_1.McpServer({
25
- name: "Airwallex",
26
- version: appVersion,
27
- });
28
- const airTrackerClient = new AirTrackerClient_1.AirTrackerClient(airTrackerBaseUrl, awxEnv, appVersion);
29
- server.registerTool(index_1.retrieveDocsToolConfig.name, index_1.retrieveDocsToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.retrieveDocsToolConfig.name, async (args) => (0, index_1.executeRetrieveDocs)(args, appVersion), { disableTelemetry, telemetryClient: airTrackerClient }));
30
- server.registerTool(index_1.readBestPracticesToolConfig.name, index_1.readBestPracticesToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.readBestPracticesToolConfig.name, async () => (0, index_1.executeReadBestPractices)(__dirname), { disableTelemetry, telemetryClient: airTrackerClient }));
31
- if (process.env.AIRWALLEX_SANDBOX_CLIENT_ID &&
32
- process.env.AIRWALLEX_SANDBOX_API_KEY) {
33
- const airwallex = new node_sdk_1.Airwallex({
34
- apiKey: process.env.AIRWALLEX_SANDBOX_API_KEY,
35
- clientId: process.env.AIRWALLEX_SANDBOX_CLIENT_ID,
36
- env: "demo",
21
+ const buildServer = ({ appVersion, integrationBestPracticesContent, }) => {
22
+ const server = new mcp_js_1.McpServer({
23
+ name: "Airwallex",
24
+ version: appVersion,
37
25
  });
38
- server.registerTool(index_1.listGlobalAccountsToolConfig.name, index_1.listGlobalAccountsToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.listGlobalAccountsToolConfig.name, async () => (0, index_1.executeListGlobalAccounts)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
39
- server.registerTool(index_1.getAccountBalancesToolConfig.name, index_1.getAccountBalancesToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.getAccountBalancesToolConfig.name, async () => (0, index_1.executeGetAccountBalances)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
40
- server.registerTool(index_1.simulateDepositToolConfig.name, index_1.simulateDepositToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.simulateDepositToolConfig.name, async (args) => (0, index_1.executeSimulateDeposit)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
41
- server.registerTool(index_1.listBillingProductsToolConfig.name, index_1.listBillingProductsToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.listBillingProductsToolConfig.name, async () => (0, index_1.executeListBillingProducts)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
42
- server.registerTool(index_1.listBillingPricesToolConfig.name, index_1.listBillingPricesToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.listBillingPricesToolConfig.name, async (args) => (0, index_1.executeListBillingPrices)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
43
- server.registerTool(index_1.createBillingProductToolConfig.name, index_1.createBillingProductToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.createBillingProductToolConfig.name, async (args) => (0, index_1.executeCreateBillingProduct)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
44
- server.registerTool(createBillingPrice_1.createBillingPriceToolConfig.name, createBillingPrice_1.createBillingPriceToolConfig, (0, withTelemetry_1.withToolTelemetry)(createBillingPrice_1.createBillingPriceToolConfig.name, async (args) => (0, createBillingPrice_1.executeCreateBillingPrice)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
45
- server.registerTool(index_1.createBillingCheckoutToolConfig.name, index_1.createBillingCheckoutToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.createBillingCheckoutToolConfig.name, async (args) => (0, index_1.executeCreateBillingCheckout)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
46
- server.registerTool(getFxQuote_1.getFxQuoteToolConfig.name, getFxQuote_1.getFxQuoteToolConfig, (0, withTelemetry_1.withToolTelemetry)(getFxQuote_1.getFxQuoteToolConfig.name, async (args) => (0, getFxQuote_1.executeGetFxQuote)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
47
- server.registerTool(listTransfers_1.listTransfersToolConfig.name, listTransfers_1.listTransfersToolConfig, (0, withTelemetry_1.withToolTelemetry)(listTransfers_1.listTransfersToolConfig.name, async () => (0, listTransfers_1.executeListTransfers)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
48
- server.registerTool(createTransfer_1.createTransferToolConfig.name, createTransfer_1.createTransferToolConfig, (0, withTelemetry_1.withToolTelemetry)(createTransfer_1.createTransferToolConfig.name, async (args) => (0, createTransfer_1.executeCreateTransfer)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
49
- server.registerTool(listBeneficiaries_1.listBeneficiariesToolConfig.name, listBeneficiaries_1.listBeneficiariesToolConfig, (0, withTelemetry_1.withToolTelemetry)(listBeneficiaries_1.listBeneficiariesToolConfig.name, async () => (0, listBeneficiaries_1.executeListBeneficiaries)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
50
- server.registerTool(simulateTransferResult_1.simulateTransferUpdateToolConfig.name, simulateTransferResult_1.simulateTransferUpdateToolConfig, (0, withTelemetry_1.withToolTelemetry)(simulateTransferResult_1.simulateTransferUpdateToolConfig.name, async (args) => (0, simulateTransferResult_1.executeSimulateTransferUpdate)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
51
- server.registerTool(createPaymentLink_1.createPaymentLinkToolConfig.name, createPaymentLink_1.createPaymentLinkToolConfig, (0, withTelemetry_1.withToolTelemetry)(createPaymentLink_1.createPaymentLinkToolConfig.name, async (args) => (0, createPaymentLink_1.executeCreatePaymentLink)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
52
- server.registerTool(listPaymentLinks_1.listPaymentLinksToolConfig.name, listPaymentLinks_1.listPaymentLinksToolConfig, (0, withTelemetry_1.withToolTelemetry)(listPaymentLinks_1.listPaymentLinksToolConfig.name, async () => (0, listPaymentLinks_1.executeListPaymentLinks)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
53
- }
54
- (async () => {
55
- const transport = new stdio_js_1.StdioServerTransport();
56
- await server.connect(transport);
57
- })();
26
+ const airTrackerClient = new AirTrackerClient_1.AirTrackerClient(config_1.BASE_URLS.telemetry, awxEnv, appVersion);
27
+ server.registerTool(index_1.retrieveDocsToolConfig.name, index_1.retrieveDocsToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.retrieveDocsToolConfig.name, async (args) => (0, index_1.executeRetrieveDocs)(args, appVersion), { disableTelemetry, telemetryClient: airTrackerClient }));
28
+ server.registerTool(index_1.readBestPracticesToolConfig.name, index_1.readBestPracticesToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.readBestPracticesToolConfig.name, async () => (0, index_1.executeReadBestPractices)(integrationBestPracticesContent), { disableTelemetry, telemetryClient: airTrackerClient }));
29
+ if (process.env.AIRWALLEX_SANDBOX_CLIENT_ID &&
30
+ process.env.AIRWALLEX_SANDBOX_API_KEY) {
31
+ const airwallex = new node_sdk_1.Airwallex({
32
+ apiKey: process.env.AIRWALLEX_SANDBOX_API_KEY,
33
+ clientId: process.env.AIRWALLEX_SANDBOX_CLIENT_ID,
34
+ env: "demo",
35
+ });
36
+ server.registerTool(index_1.listGlobalAccountsToolConfig.name, index_1.listGlobalAccountsToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.listGlobalAccountsToolConfig.name, async () => (0, index_1.executeListGlobalAccounts)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
37
+ server.registerTool(index_1.getAccountBalancesToolConfig.name, index_1.getAccountBalancesToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.getAccountBalancesToolConfig.name, async () => (0, index_1.executeGetAccountBalances)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
38
+ server.registerTool(index_1.simulateDepositToolConfig.name, index_1.simulateDepositToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.simulateDepositToolConfig.name, async (args) => (0, index_1.executeSimulateDeposit)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
39
+ server.registerTool(index_1.listBillingProductsToolConfig.name, index_1.listBillingProductsToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.listBillingProductsToolConfig.name, async () => (0, index_1.executeListBillingProducts)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
40
+ server.registerTool(index_1.listBillingPricesToolConfig.name, index_1.listBillingPricesToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.listBillingPricesToolConfig.name, async (args) => (0, index_1.executeListBillingPrices)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
41
+ server.registerTool(index_1.createBillingProductToolConfig.name, index_1.createBillingProductToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.createBillingProductToolConfig.name, async (args) => (0, index_1.executeCreateBillingProduct)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
42
+ server.registerTool(createBillingPrice_1.createBillingPriceToolConfig.name, createBillingPrice_1.createBillingPriceToolConfig, (0, withTelemetry_1.withToolTelemetry)(createBillingPrice_1.createBillingPriceToolConfig.name, async (args) => (0, createBillingPrice_1.executeCreateBillingPrice)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
43
+ server.registerTool(index_1.createBillingCheckoutToolConfig.name, index_1.createBillingCheckoutToolConfig, (0, withTelemetry_1.withToolTelemetry)(index_1.createBillingCheckoutToolConfig.name, async (args) => (0, index_1.executeCreateBillingCheckout)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
44
+ server.registerTool(getFxQuote_1.getFxQuoteToolConfig.name, getFxQuote_1.getFxQuoteToolConfig, (0, withTelemetry_1.withToolTelemetry)(getFxQuote_1.getFxQuoteToolConfig.name, async (args) => (0, getFxQuote_1.executeGetFxQuote)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
45
+ server.registerTool(listTransfers_1.listTransfersToolConfig.name, listTransfers_1.listTransfersToolConfig, (0, withTelemetry_1.withToolTelemetry)(listTransfers_1.listTransfersToolConfig.name, async () => (0, listTransfers_1.executeListTransfers)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
46
+ server.registerTool(createTransfer_1.createTransferToolConfig.name, createTransfer_1.createTransferToolConfig, (0, withTelemetry_1.withToolTelemetry)(createTransfer_1.createTransferToolConfig.name, async (args) => (0, createTransfer_1.executeCreateTransfer)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
47
+ server.registerTool(listBeneficiaries_1.listBeneficiariesToolConfig.name, listBeneficiaries_1.listBeneficiariesToolConfig, (0, withTelemetry_1.withToolTelemetry)(listBeneficiaries_1.listBeneficiariesToolConfig.name, async () => (0, listBeneficiaries_1.executeListBeneficiaries)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
48
+ server.registerTool(simulateTransferResult_1.simulateTransferUpdateToolConfig.name, simulateTransferResult_1.simulateTransferUpdateToolConfig, (0, withTelemetry_1.withToolTelemetry)(simulateTransferResult_1.simulateTransferUpdateToolConfig.name, async (args) => (0, simulateTransferResult_1.executeSimulateTransferUpdate)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
49
+ server.registerTool(createPaymentLink_1.createPaymentLinkToolConfig.name, createPaymentLink_1.createPaymentLinkToolConfig, (0, withTelemetry_1.withToolTelemetry)(createPaymentLink_1.createPaymentLinkToolConfig.name, async (args) => (0, createPaymentLink_1.executeCreatePaymentLink)(airwallex, args), { disableTelemetry, telemetryClient: airTrackerClient }));
50
+ server.registerTool(listPaymentLinks_1.listPaymentLinksToolConfig.name, listPaymentLinks_1.listPaymentLinksToolConfig, (0, withTelemetry_1.withToolTelemetry)(listPaymentLinks_1.listPaymentLinksToolConfig.name, async () => (0, listPaymentLinks_1.executeListPaymentLinks)(airwallex), { disableTelemetry, telemetryClient: airTrackerClient }));
51
+ }
52
+ return server;
53
+ };
54
+ exports.buildServer = buildServer;
@@ -1,53 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.readBestPracticesToolConfig = exports.readBestPracticesSchema = void 0;
37
4
  exports.executeReadBestPractices = executeReadBestPractices;
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
5
  const zod_1 = require("zod");
41
6
  const descriptions_1 = require("../constants/descriptions");
42
7
  exports.readBestPracticesSchema = zod_1.z.object({});
43
- async function executeReadBestPractices(dirname) {
8
+ async function executeReadBestPractices(integrationBestPracticesContent) {
44
9
  try {
45
- const bestPracticesPath = path.join(dirname, "integration-best-practices.md");
46
- const content = fs.readFileSync(bestPracticesPath, "utf-8");
47
10
  return {
48
11
  content: [
49
12
  {
50
- text: content,
13
+ text: integrationBestPracticesContent,
51
14
  type: "text",
52
15
  },
53
16
  ],
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@airwallex/developer-mcp",
3
- "version": "0.3.0-beta.7",
3
+ "version": "v0.3.0-beta.9",
4
4
  "description": "MCP server for AI agents that assist developers integrating with the Airwallex platform",
5
5
  "bin": {
6
- "awx-developer-mcp": "dist/server.js"
6
+ "awx-developer-mcp": "dist/index.js"
7
7
  },
8
8
  "files": [
9
9
  "dist"
@@ -12,6 +12,11 @@
12
12
  "build": "tsc && cp src/*.md dist/",
13
13
  "lint": "prettier --check . && eslint . && tsc --noEmit",
14
14
  "test": "vitest run",
15
+ "test:unit": "vitest run --project unit",
16
+ "test:integration": "vitest run --project integration",
17
+ "test:watch": "vitest",
18
+ "test:unit:watch": "vitest --project unit",
19
+ "test:integration:watch": "vitest --project integration",
15
20
  "format": "prettier --write .",
16
21
  "release": "semantic-release",
17
22
  "sonar": "sonar-scanner"
@@ -25,6 +30,14 @@
25
30
  "uuid": "13.0.0",
26
31
  "zod": "3.25.76"
27
32
  },
33
+ "engines": {
34
+ "node": ">=18"
35
+ },
36
+ "keywords": [
37
+ "mcp",
38
+ "modelcontextprotocol",
39
+ "airwallex"
40
+ ],
28
41
  "devDependencies": {
29
42
  "@eslint/js": "^9.26.0",
30
43
  "@semantic-release/changelog": "^6.0.3",
@@ -33,12 +46,14 @@
33
46
  "@semantic-release/gitlab": "^13.2.9",
34
47
  "@semantic-release/release-notes-generator": "^14.1.0",
35
48
  "@tsconfig/node22": "^22.0.1",
49
+ "@types/nock": "^11.1.0",
36
50
  "@types/node": "^24.3.0",
37
51
  "@vitest/coverage-v8": "^3.2.4",
38
52
  "eslint": "^9.39.0",
39
53
  "eslint-config-prettier": "^10.1.3",
40
54
  "eslint-plugin-perfectionist": "^4.12.3",
41
55
  "jiti": "^2.4.2",
56
+ "nock": "^14.0.10",
42
57
  "prettier": "^3.5.3",
43
58
  "semantic-release": "^25.0.1",
44
59
  "tsx": "^4.19.4",