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.
- package/dist/index.js +88 -10
- 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\
|
|
32218
|
-
"\
|
|
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
|
-
"\
|
|
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
|
-
"
|
|
32437
|
-
"\u9700\u8981 API Key \
|
|
32438
|
-
"
|
|
32439
|
-
"\
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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