hvip-mcp-server 0.2.45 → 0.2.46

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.
Files changed (2) hide show
  1. package/dist/index.js +88 -10
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -25298,7 +25298,41 @@ var INST_TYPE_CONTRACTS = ["SWAP", "FUTURES", "OPTION"];
25298
25298
  var INST_TYPE_SWAP_FUT = ["SWAP", "FUTURES"];
25299
25299
  var INST_TYPE_MARGIN_PUB = ["MARGIN", "SWAP", "FUTURES", "OPTION"];
25300
25300
  var INST_TYPE_RUBIK = ["SPOT", "CONTRACTS"];
25301
+ function autoSummary(data) {
25302
+ if (Array.isArray(data)) {
25303
+ const n = data.length;
25304
+ if (n === 0) return "\u8FD4\u56DE\u7A7A\u5217\u8868";
25305
+ const first = data[0];
25306
+ if (first?.instId && first?.last) return `\u8FD4\u56DE ${n} \u4E2A\u4EA7\u54C1\u884C\u60C5`;
25307
+ if (first?.instId && first?.pos) return `\u8FD4\u56DE ${n} \u4E2A\u6301\u4ED3`;
25308
+ if (first?.ccy) return `\u8FD4\u56DE ${n} \u4E2A\u5E01\u79CD\u4FE1\u606F`;
25309
+ if (first?.ordId) return `\u8FD4\u56DE ${n} \u7B14\u8BA2\u5355`;
25310
+ if (first?.ts) return `\u8FD4\u56DE ${n} \u6761\u65F6\u95F4\u5E8F\u5217\u6570\u636E`;
25311
+ if (first?.name) return `\u8FD4\u56DE ${n} \u6761\u8BB0\u5F55`;
25312
+ return `\u8FD4\u56DE ${n} \u6761\u8BB0\u5F55`;
25313
+ }
25314
+ if (typeof data === "object" && data !== null) {
25315
+ const d = data;
25316
+ if (d.ok === true && d.message) return d.message;
25317
+ if (d._summary) return void 0;
25318
+ if (d.data && Array.isArray(d.data)) return `\u8FD4\u56DE ${d.data.length} \u6761\u8BB0\u5F55`;
25319
+ }
25320
+ return void 0;
25321
+ }
25301
25322
  function toResult(data) {
25323
+ if (Array.isArray(data)) {
25324
+ const summary = autoSummary(data);
25325
+ const wrapper = { list: data };
25326
+ if (summary) wrapper._summary = summary;
25327
+ return { content: [{ type: "text", text: JSON.stringify(wrapper, null, 2) }] };
25328
+ }
25329
+ if (typeof data === "object" && data !== null && !data._summary) {
25330
+ const summary = autoSummary(data);
25331
+ if (summary) {
25332
+ const enriched = { _summary: summary, ...data };
25333
+ return { content: [{ type: "text", text: JSON.stringify(enriched, null, 2) }] };
25334
+ }
25335
+ }
25302
25336
  return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
25303
25337
  }
25304
25338
  function classifyError(msg) {
@@ -32214,10 +32248,10 @@ function registerAgentUtils(server, auth) {
32214
32248
  );
32215
32249
  const CATALOG = {
32216
32250
  _instruction: [
32217
- "\u4F60\u662F hvip MCP Server \u7684 Agent\u3002\u672C\u76EE\u5F55\u5E2E\u4F60\u6309\u7528\u6237\u610F\u56FE\u5FEB\u901F\u5B9A\u4F4D\u5DE5\u5177\uFF0C\u65E0\u9700\u626B\u63CF\u5168\u90E8 350+ \u4E2A\u5DE5\u5177\u63CF\u8FF0\u3002",
32218
- "\u7528\u6CD5: 1) \u6839\u636E\u7528\u6237\u8BF4\u7684\u8BDD\u5339\u914D\u4E0B\u65B9\u67D0\u4E2A\u57DF\u7684 when \u89E6\u53D1\u8BCD \u2192 2) \u8C03\u7528\u8BE5\u57DF\u7684 go_to \u5DE5\u5177 \u2192 3) \u5982\u9700\u6DF1\u5165\u518D\u8C03\u7528 also \u5217\u8868\u4E2D\u7684\u5DE5\u5177\u3002",
32251
+ "\u4F60\u662F hvip MCP Server \u7684 AI Agent\u3002\u6536\u5230\u672C\u76EE\u5F55\u540E\uFF0C\u4F60\u5DF2\u7ECF\u638C\u63E1\u5168\u90E8\u5FC5\u8981\u4FE1\u606F\uFF0C\u65E0\u9700\u518D\u626B\u63CF tools/list\u3002",
32252
+ "\u5DE5\u4F5C\u6D41: 1) \u770B _setup \u4E86\u89E3\u8FDE\u63A5\u72B6\u6001 -> 2) _onboarding \u51B3\u5B9A\u7B2C\u4E00\u6B65 -> 3) \u5339\u914D\u7528\u6237\u610F\u56FE\u5230\u57DF -> 4) \u7528 go_to_params \u76F4\u63A5\u8C03\u76EE\u6807\u5DE5\u5177\u3002",
32219
32253
  "\u4E0D\u786E\u5B9A\u57DF\u65F6\u8C03\u7528 agent_catalog_detail { domain } \u67E5\u770B\u8BE5\u57DF\u7684\u8BE6\u7EC6\u5DE5\u5177\u6E05\u5355\u3002",
32220
- "\u6CE8\u610F: \u6240\u6709 WRITE/ADMIN \u7EA7\u522B\u7684\u5DE5\u5177\u9700\u7528\u6237\u786E\u8BA4\u540E\u624D\u80FD\u8C03\u7528\u3002"
32254
+ "\u6240\u6709 WRITE/FUND_TRANSFER/ADMIN \u5DE5\u5177\u9700\u7528\u6237\u786E\u8BA4\u540E\u8C03\u7528\uFF0C\u4E0D\u53EF\u81EA\u52A8\u53D1\u8D77\u3002"
32221
32255
  ].join(" "),
32222
32256
  domains: [
32223
32257
  {
@@ -32433,10 +32467,10 @@ function registerAgentUtils(server, auth) {
32433
32467
  }
32434
32468
  ],
32435
32469
  _tips: [
32436
- "Agent \u6700\u4F73\u5B9E\u8DF5\uFF1A\u6BCF\u4E2A\u65B0\u4F1A\u8BDD\u5148\u8C03 agent_get_preference \u6062\u590D\u7528\u6237\u504F\u597D",
32437
- "\u9700\u8981 API Key \u7684\u5DE5\u5177\uFF08\u8D26\u6237/\u4EA4\u6613\u7C7B\uFF09\u9700\u7528\u6237\u5148\u914D\u7F6E OKX_API_KEY / OKX_SECRET_KEY / OKX_PASSPHRASE \u73AF\u5883\u53D8\u91CF",
32438
- "WRITE \u7EA7\u522B\u5DE5\u5177\u4F1A\u4FEE\u6539\u7528\u6237\u8D26\u6237\uFF0C\u8C03\u7528\u524D Agent \u5FC5\u987B\u5411\u7528\u6237\u786E\u8BA4",
32439
- "\u6DF1\u5EA6\u8C03\u7814\u67D0\u4E2A\u57DF\u65F6\u8C03 agent_catalog_detail { domain } \u83B7\u53D6\u8BE5\u57DF\u5168\u90E8\u5DE5\u5177\u8BE6\u60C5",
32470
+ "\u6BCF\u4E2A\u65B0\u4F1A\u8BDD\u5148\u8C03 agent_get_preference \u6062\u590D\u7528\u6237\u504F\u597D(\u9ED8\u8BA4\u4EA4\u6613\u5BF9/\u98CE\u9669\u504F\u597D/\u4ED3\u4F4D\u5360\u6BD4)",
32471
+ "\u9700\u8981 API Key \u65F6\u544A\u8BC9\u7528\u6237\u53BB OKX \u5B98\u7F51\u521B\u5EFA\uFF0C\u5F00\u901A\u8BFB\u53D6+\u4EA4\u6613\u6743\u9650",
32472
+ "\u5148\u6A21\u62DF\u540E\u4EA4\u6613: agent_simulate_order \u9884\u4F30 -> \u786E\u8BA4 -> agent_quick_trade \u4E0B\u5355",
32473
+ "WRITE \u5DE5\u5177\u4F1A\u4FEE\u6539\u8D26\u6237\uFF0C\u8C03\u7528\u524D\u5FC5\u987B\u5411\u7528\u6237\u786E\u8BA4\uFF0C\u4E0D\u53EF\u81EA\u52A8\u53D1\u8D77",
32440
32474
  "\u6280\u672F\u6307\u6807\u7528 okx_indicator \u5355\u4E2A\u8BA1\u7B97\u6216 okx_indicator_batch \u6279\u91CF\uFF0C\u652F\u6301 RSI/MACD/\u5E03\u6797\u5E26\u7B49 17 \u79CD",
32441
32475
  "\u806A\u660E\u94B1\u5206\u6790\u7528 okx_smart_leaderboard \u627E\u9876\u5C16\u4EA4\u6613\u5458 \u2192 okx_smart_sentiment \u770B\u5E02\u573A\u60C5\u7EEA"
32442
32476
  ]
@@ -32447,9 +32481,53 @@ function registerAgentUtils(server, auth) {
32447
32481
  {},
32448
32482
  async () => {
32449
32483
  try {
32484
+ const hasAuth = auth !== null;
32485
+ const setup = {
32486
+ hasApiKey: hasAuth,
32487
+ readOnly: process.env.OKX_READ_ONLY === "true",
32488
+ mode: hasAuth ? process.env.OKX_READ_ONLY === "true" ? "\u53EA\u8BFB\uFF08WRITE \u5DE5\u5177\u5DF2\u9690\u85CF\uFF09" : "\u5B8C\u6574\u4EA4\u6613\uFF08\u6240\u6709\u5DE5\u5177\u53EF\u7528\uFF09" : "\u672A\u914D\u7F6E API Key\uFF08\u4EC5\u516C\u5F00\u5DE5\u5177\u53EF\u7528\uFF09"
32489
+ };
32490
+ if (!hasAuth) {
32491
+ setup.howToConfigure = {
32492
+ required: ["OKX_API_KEY", "OKX_SECRET_KEY", "OKX_PASSPHRASE"],
32493
+ where: "OKX \u5B98\u7F51 -> \u4E2A\u4EBA\u4E2D\u5FC3 -> API -> \u521B\u5EFA API Key\uFF08\u5F00\u901A \u8BFB\u53D6+\u4EA4\u6613 \u6743\u9650\uFF09",
32494
+ quickStart: "npx hvip-mcp setup --client claude-code"
32495
+ };
32496
+ setup.whatYouCanDoNow = "\u5F53\u524D\u65E0 API Key\uFF0C\u4F46\u4EE5\u4E0B\u57DF\u7684\u5DE5\u5177\u53EF\u7ACB\u5373\u4F7F\u7528: \u884C\u60C5\u770B\u76D8 / \u6280\u672F\u6307\u6807 / \u5E02\u573A\u626B\u63CF / \u806A\u660E\u94B1 / \u9884\u6D4B\u5E02\u573A\uFF08\u516C\u5F00\u67E5\u8BE2\uFF09/ WebSocket \u5B9E\u65F6 / \u7CFB\u7EDF\u5DE5\u5177";
32497
+ }
32498
+ const onboarding = hasAuth ? "API Key \u5DF2\u914D\u7F6E\u3002\u5EFA\u8BAE\u7B2C\u4E00\u6B65: agent_get_preference \u6062\u590D\u504F\u597D -> okx_account_overview \u4E86\u89E3\u8D26\u6237\u5168\u666F -> \u6839\u636E\u7528\u6237\u610F\u56FE\u5339\u914D\u57DF go_to \u5DE5\u5177" : "\u6B22\u8FCE\uFF01hvip MCP \u5DF2\u8FDE\u63A5\u4F46\u5C1A\u672A\u914D\u7F6E API Key\u3002\u544A\u8BC9\u7528\u6237\uFF1A\u60F3\u770B\u884C\u60C5\u548C\u6307\u6807\u73B0\u5728\u5C31\u80FD\u770B\uFF0C\u60F3\u770B\u8D26\u6237\u548C\u4EA4\u6613\u8BF7\u5148\u914D Key\u3002\u914D\u597D\u540E\u91CD\u8FDE MCP \u5373\u53EF\u3002";
32499
+ const paramsHints = {
32500
+ "okx_account_overview": "\u65E0\u9700\u53C2\u6570",
32501
+ "okx_quick_market": "instId (\u5982 BTC-USDT\u3001ETH-USDT-SWAP)",
32502
+ "okx_preflight_check": "instId, tdMode (cash|cross|isolated), sz, px?, side?, ordType?",
32503
+ "agent_quick_trade": "instId, side (buy|sell), sz, tdMode (cash|cross|isolated), px?, ordType?",
32504
+ "agent_risk_overview": "\u65E0\u9700\u53C2\u6570",
32505
+ "agent_market_scan": "instType? (\u9ED8\u8BA4SWAP), topN?, sortBy? (change|vol|fundingRate)",
32506
+ "agent_pnl_report": "days? (\u9ED8\u8BA47)",
32507
+ "okx_get_balance": "ccy? (\u5982 BTC\uFF0C\u4E0D\u586B\u5168\u90E8)",
32508
+ "agent_simulate_order": "instId, side, sz, tdMode, px?",
32509
+ "okx_indicator": "instId, indicator (rsi|macd|bb|atr|stoch \u7B4917\u79CD), period?, bar? (\u9ED8\u8BA41H)",
32510
+ "okx_indicator_batch": "instId, indicators (\u9017\u53F7\u5206\u9694\u5982 rsi,macd,bb), bar?",
32511
+ "okx_smart_leaderboard": "instType?, sortBy?, topN?",
32512
+ "okx_smart_trader_detail": "uniqueCode (\u4EA4\u6613\u5458\u7801), instType?",
32513
+ "okx_smart_sentiment": "instFamily? (\u9ED8\u8BA4BTC-USD)",
32514
+ "agent_get_preference": "key? (\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8)",
32515
+ "agent_set_preference": "key, value",
32516
+ "okx_event_instruments": "eventType? (\u4E0D\u586B\u8FD4\u56DE\u5168\u90E8)",
32517
+ "okx_ws_subscribe": "channels (JSON\u6570\u7EC4)",
32518
+ "okx_get_grid_ai_param": "instType, algoOrdType"
32519
+ };
32520
+ const enrichedDomains = CATALOG.domains.map((d) => ({
32521
+ ...d,
32522
+ go_to_params: paramsHints[d.go_to] || "\u89C1 agent_catalog_detail"
32523
+ }));
32450
32524
  return toResult({
32451
32525
  tsIso: (/* @__PURE__ */ new Date()).toISOString(),
32452
- ...CATALOG
32526
+ _setup: setup,
32527
+ _onboarding: onboarding,
32528
+ _instruction: CATALOG._instruction,
32529
+ domains: enrichedDomains,
32530
+ _tips: CATALOG._tips
32453
32531
  });
32454
32532
  } catch (e) {
32455
32533
  return toError(e);
@@ -34662,7 +34740,7 @@ function registerAgentHubTools(server) {
34662
34740
 
34663
34741
  // src/index.ts
34664
34742
  async function main() {
34665
- const VERSION = "0.2.45";
34743
+ const VERSION = "0.2.46";
34666
34744
  const server = new McpServer({
34667
34745
  name: "hvip-mcp",
34668
34746
  version: VERSION,
@@ -34739,7 +34817,7 @@ async function main() {
34739
34817
  process.stderr.write(`[hvip] \u672A\u914D\u7F6E API Key | \u4EC5\u516C\u5F00\u5DE5\u5177\u53EF\u7528
34740
34818
  `);
34741
34819
  }
34742
- startAgentHub(parseInt(process.env.WS_AGENT_PORT || "9321"), "0.2.45.0", VERSION);
34820
+ startAgentHub(parseInt(process.env.WS_AGENT_PORT || "9321"), "0.2.46.0", VERSION);
34743
34821
  const transport = new StdioServerTransport();
34744
34822
  await effectiveServer.connect(transport);
34745
34823
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hvip-mcp-server",
3
- "version": "0.2.45",
3
+ "version": "0.2.46",
4
4
  "description": "hvip MCP Server — 362 工具覆盖 97.7% OKX REST API,含交易/行情/资金/策略/预测市场/技术指标/Smart Money(非 OKX 官方产品)",
5
5
  "homepage": "https://github.com/okx-wallet-H/hvip-mcp",
6
6
  "repository": {