@flyneko/mcp-market 0.1.2

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 (3) hide show
  1. package/README.md +113 -0
  2. package/dist/index.js +2 -0
  3. package/package.json +45 -0
package/README.md ADDED
@@ -0,0 +1,113 @@
1
+ # mcp-market
2
+
3
+ 基于 Gelonghui 接口的 MCP Server。
4
+
5
+ ## 启动
6
+
7
+ ```bash
8
+ npm install
9
+ npm run dev
10
+ ```
11
+
12
+ 默认环境变量:
13
+
14
+ - `MARKET_API_BASE_URL=https://www.gelonghui.com`
15
+
16
+ ## 发布到 npm
17
+
18
+ ```bash
19
+ npm login
20
+ npm run prepublishOnly
21
+ npm publish
22
+ ```
23
+
24
+ 发布后可直接运行:
25
+
26
+ ```bash
27
+ npx -y @flyneko/mcp-market
28
+ ```
29
+
30
+ ## MCP JSON 配置
31
+
32
+ ```json
33
+ {
34
+ "mcpServers": {
35
+ "market-data-mcp": {
36
+ "command": "npx",
37
+ "args": ["-y", "@flyneko/mcp-market"]
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Tools
44
+
45
+ ### `search_symbol`
46
+
47
+ - 上游:`GET /api/searchBox/v3?keyword={query}&count={count}&page={page}`
48
+ - Demo:
49
+ [https://www.gelonghui.com/api/searchBox/v3?keyword=00700&count=3&page=1](https://www.gelonghui.com/api/searchBox/v3?keyword=00700&count=3&page=1)
50
+ - 入参:
51
+
52
+ ```json
53
+ {
54
+ "query": "00700",
55
+ "count": 3,
56
+ "page": 1
57
+ }
58
+ ```
59
+
60
+ - 返回:`result.searchStock.list`
61
+
62
+ ### `get_quote`
63
+
64
+ - 上游:`GET /hq/{market}/quote-info/{stockCode}/v2`
65
+ - Demo:
66
+ [https://www.gelonghui.com/hq/hk/quote-info/00700/v2](https://www.gelonghui.com/hq/hk/quote-info/00700/v2)
67
+ - 入参:
68
+
69
+ ```json
70
+ {
71
+ "market": "HK",
72
+ "stockCode": "00700"
73
+ }
74
+ ```
75
+
76
+ - `market` 支持:`US | HK | SH | SZ`
77
+ - 返回:`result`
78
+
79
+ ### `get_kline`
80
+
81
+ - 上游:`GET /hq/{market}/kline/{interval}/{stockCode}/v4`
82
+ - Demo:
83
+ [https://www.gelonghui.com/hq/SH/kline/day/600410/v4?timestamp=1518364800&count=300&rightsType=preRights](https://www.gelonghui.com/hq/SH/kline/day/600410/v4?timestamp=1518364800&count=300&rightsType=preRights)
84
+ - 入参:
85
+
86
+ ```json
87
+ {
88
+ "market": "SH",
89
+ "interval": "day",
90
+ "stockCode": "600410",
91
+ "timestamp": 1518364800,
92
+ "count": 300,
93
+ "rightsType": "preRights"
94
+ }
95
+ ```
96
+
97
+ - `market` 支持:`HK | SH | SZ`
98
+ - `interval` 支持:`day | week | month | quarter | year | min1 | min5 | min15 | min30 | min60 | min120`
99
+ - `rightsType` 支持:`exRights | preRights | afterRights`
100
+ - 返回:`result`
101
+
102
+ ### `get_shsz_change_counts`
103
+
104
+ - 上游:`GET /hq/market/shsz/change-counts/v1`
105
+ - Demo:
106
+ [https://www.gelonghui.com/hq/market/shsz/change-counts/v1](https://www.gelonghui.com/hq/market/shsz/change-counts/v1)
107
+ - 入参:
108
+
109
+ ```json
110
+ {}
111
+ ```
112
+
113
+ - 返回:`result`
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ const a0_0x41becd=a0_0x3cdd;(function(_0x3346dc,_0x53719e){const _0x38194c=a0_0x3cdd,_0x28c20b=_0x3346dc();while(!![]){try{const _0x4abe51=-parseInt(_0x38194c(0x1c0))/0x1*(parseInt(_0x38194c(0x19d))/0x2)+parseInt(_0x38194c(0x1a8))/0x3*(parseInt(_0x38194c(0x1d1))/0x4)+-parseInt(_0x38194c(0x1a0))/0x5*(parseInt(_0x38194c(0x1f8))/0x6)+-parseInt(_0x38194c(0x1ca))/0x7*(-parseInt(_0x38194c(0x1ea))/0x8)+parseInt(_0x38194c(0x1c4))/0x9*(parseInt(_0x38194c(0x1c8))/0xa)+parseInt(_0x38194c(0x1ac))/0xb*(parseInt(_0x38194c(0x1f4))/0xc)+parseInt(_0x38194c(0x1ef))/0xd*(-parseInt(_0x38194c(0x1de))/0xe);if(_0x4abe51===_0x53719e)break;else _0x28c20b['push'](_0x28c20b['shift']());}catch(_0x72c9e1){_0x28c20b['push'](_0x28c20b['shift']());}}}(a0_0x4258,0x20c08));import{z}from'zod';import{Server}from'@modelcontextprotocol/sdk/server/index.js';function a0_0x4258(){const _0x3b29a9=['y29UC3rYDwn0B3i','zxHsAwDODhm','r2v0ihf1B3rLigLUzM8GzNjVBsaVAheVE21HCMTLDh0VCxvVDguTAw5MBY97C3rVy2TdB2rLFs92mI4','mtbTAuXPtee','l2TSAw5LlW','BwLUmtiW','nwTZr1jHvG','z2v0x2TSAw5L','zgf0yq','C3rHDhvZ','BwvZC2fNzq','z2v0x3nOC3PFy2HHBMDLx2nVDw50CW','B3b0Aw9UywW','z2v0x3f1B3rL','nK5Uq1HgvG','vw5LEhbLy3rLzcbRBgLUzsbYzxnWB25ZzsbZy2HLBweUiev4CgvJDcbYzxn1BhqU','Dg9mB3DLCKnHC2u','l3yY','mZm4mJK0D0frCunH','BwfYA2v0ig11C3qGyMuGB25Lig9MieHll1nil1nA','vw5LEhbLy3rLzcbZzwfYy2GGCMvZCg9UC2uGC2nOzw1HlIbfEhbLy3qGCMvZDwX0lNnLyxjJAfn0B2nRlMXPC3qU','r0vu','Dg9tDhjPBMC','vw5LEhbLy3rLzcbXDw90zsbYzxnWB25ZzsbZy2HLBweUiev4CgvJDcbYzxn1BhqU','Aw50zxj2ywWGBxvZDcbIzsbVBMuGB2yGzgf5l3DLzwSVBw9UDgGVCxvHCNrLCI95zwfYl21PBJeVBwLUns9TAw4Xns9TAw4Zmc9TAw42mc9TAw4XmJa','l2fWAs9ZzwfYy2HcB3GVDJm','vvbtvfjfqu1Fu0niru1bx01ju01bveni','C3rYAw5N','BNvTyMvY','yxbWBhK','zgvMyxvSDa','r2v0ieSTBgLUzsbKyxrHigzYB20Gl2HXl3TTyxjRzxr9l2TSAw5Ll3TPBNrLCNzHBh0VE3n0B2nRq29Kzx0VDJqU','zw50CMLLCW','zw52','y29UBMvJDa','sfruuf8','Bwf4','Dw5RBM93BG','mta0odDIrurOsMK','BwLU','C2vHCMnOugfYyw1Z','r2v0ifnOyw5NAgfPl1nOzw56AgvUihjPC2LUzYWGzMfSBgLUzYWGzMXHDcWGyw5KigXPBwL0ihn0yxrZlG','mJiZotq3owzgr0XIDa','BwLUmtu','Dgv4Da','C3rYAw5NAwz5','mtbZy3nrD2i','qMvHCMvYia','mtC3nZnYB1LdyKm','twf4ihjVD3mUifvWC3rYzwfTigrLzMf1BhqGAxmGntaWmcbPzIbVBwL0DgvKlG','vu5ltK9xtL9ut09m','u2vHCMnOihn5BwjVBhmGzNjVBsbhzwXVBMDODwKGl2fWAs9ZzwfYy2HcB3GVDJmGyw5KihjLDhvYBIbYzxn1BhqUC2vHCMnOu3rVy2SUBgLZDc4','B2jQzwn0','y2f0y2G','C2fMzvbHCNnL','ndy5mZuYEuHnuKjs','l2HXlW','CgfYC2u','DhjHBNnMB3jT','Aw50zxj2ywW','Bw9UDgG','Aw50','Aw5JBhvKzxm','CMvZDwX0','zxjYB3i','Cg9ZAxrPDMu','zxHPDa','Aw50zwDLCG','mtC0mty3mfzPDhHMwG','BwfYA2v0','C2vHCMnOu3rVy2S','ChjLuMLNAhrZ','ywjVCNq','vw5PEcb0Aw1LC3rHBxaGAw4GC2vJB25KCY4','CMvMAw5L','C3rVy2TdB2rL','BwLUnq','C2vHCMnO','BwLUnJa','BwfYA2v0ig11C3qGyMuGB25Lig9Mifvtl0Hll1nil1nA','mJq4EunzDNzM','C2LNBMfS','l3f1B3rLlwLUzM8V','BwLUmZa','mc4XlJa','mZLdA3DMy20','C3vJy2vZCW','BwLUmq','CxvHCNrLCG','zgf5','mtjqy3rJu3G','D2vLAW','vw5LEhbLy3rLzcb1Chn0CMvHBsbYzxnWB25ZzsbZy2HLBweU','Dg9vChbLCKnHC2u','mtK5mda4ugvTzgPi','tufss0vux0fqsv9cqvnfx1vsta','tM8GC3vJAcb0B29SoIa','BgLZDa','ywz0zxjsAwDODhm'];a0_0x4258=function(){return _0x3b29a9;};return a0_0x4258();}import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema}from'@modelcontextprotocol/sdk/types.js';const BASE_URL=process[a0_0x41becd(0x1bb)][a0_0x41becd(0x1f9)]??'https://www.gelonghui.com',API_KEY=process[a0_0x41becd(0x1bb)]['MARKET_API_KEY']??'';async function httpGet(_0x412911,_0xe2c379){const _0x2877d2=a0_0x41becd,_0x3b919a=new URL(_0x412911,BASE_URL);Object[_0x2877d2(0x1ba)](_0xe2c379)['forEach'](([_0x1e54d2,_0x2eef43])=>{const _0xdeb614=_0x2877d2;if(_0x2eef43!==undefined&&_0x2eef43!==null)_0x3b919a[_0xdeb614(0x1c2)]['set'](_0x1e54d2,String(_0x2eef43));});const _0x18bbab=new AbortController(),_0x3eb8e5=setTimeout(()=>_0x18bbab[_0x2877d2(0x1e2)](),0x2710);try{const _0x2634e9=await fetch(_0x3b919a[_0x2877d2(0x1b0)](),{'method':_0x2877d2(0x1af),'headers':{'accept':'application/json',...API_KEY?{'authorization':_0x2877d2(0x1c9)+API_KEY}:{}},'signal':_0x18bbab[_0x2877d2(0x1eb)]}),_0x3d98c3=await _0x2634e9[_0x2877d2(0x1c6)]();let _0x1c28e8;try{_0x1c28e8=_0x3d98c3?JSON[_0x2877d2(0x1d3)](_0x3d98c3):null;}catch{_0x1c28e8=_0x3d98c3;}if(!_0x2634e9['ok'])return{'error':{'code':_0x2877d2(0x1bd)+_0x2634e9[_0x2877d2(0x1a3)],'message':typeof _0x1c28e8===_0x2877d2(0x1b5)?_0x1c28e8:_0x1c28e8?.[_0x2877d2(0x1a4)]??'Upstream\x20error'},'upstream':{'status':_0x2634e9[_0x2877d2(0x1a3)]}};return _0x1c28e8;}finally{clearTimeout(_0x3eb8e5);}}const SearchSymbolArgs=z[a0_0x41becd(0x1ce)]({'query':z[a0_0x41becd(0x1b5)]()[a0_0x41becd(0x1c1)](0x1),'count':z['number']()[a0_0x41becd(0x1d7)]()[a0_0x41becd(0x1db)]()[a0_0x41becd(0x1be)](0x64)['default'](0xa),'page':z[a0_0x41becd(0x1b6)]()[a0_0x41becd(0x1d7)]()['positive']()[a0_0x41becd(0x1b8)](0x1)}),GetQuoteArgs=z[a0_0x41becd(0x1ce)]({'market':z['string']()[a0_0x41becd(0x1c1)](0x1)[a0_0x41becd(0x1d4)](_0x4f8417=>_0x4f8417[a0_0x41becd(0x1f7)]())[a0_0x41becd(0x1e4)](_0x567703=>['US','HK','SH','SZ']['includes'](_0x567703),{'message':a0_0x41becd(0x1e9)}),'stockCode':z['string']()[a0_0x41becd(0x1c1)](0x1)['transform'](_0x1d2e46=>_0x1d2e46[a0_0x41becd(0x1f7)]())}),GetKlineArgs=z[a0_0x41becd(0x1ce)]({'market':z[a0_0x41becd(0x1b5)]()['min'](0x1)[a0_0x41becd(0x1d4)](_0x25af0f=>_0x25af0f[a0_0x41becd(0x1f7)]())['refine'](_0x3fb817=>['HK','SH','SZ'][a0_0x41becd(0x1d8)](_0x3fb817),{'message':a0_0x41becd(0x1ad)}),'interval':z[a0_0x41becd(0x1b5)]()['min'](0x1)[a0_0x41becd(0x1d4)](_0x567973=>_0x567973[a0_0x41becd(0x1aa)]())[a0_0x41becd(0x1e4)](_0x2af5a6=>['day',a0_0x41becd(0x1f5),a0_0x41becd(0x1d6),'quarter','year',a0_0x41becd(0x1f1),a0_0x41becd(0x1e6),'min15',a0_0x41becd(0x1ed),a0_0x41becd(0x1e8),a0_0x41becd(0x19f)][a0_0x41becd(0x1d8)](_0x2af5a6),{'message':a0_0x41becd(0x1b2)}),'stockCode':z[a0_0x41becd(0x1b5)]()[a0_0x41becd(0x1c1)](0x1)[a0_0x41becd(0x1d4)](_0x29465b=>_0x29465b[a0_0x41becd(0x1f7)]()),'timestamp':z[a0_0x41becd(0x1b6)]()[a0_0x41becd(0x1d7)]()['positive']()['optional'](),'count':z[a0_0x41becd(0x1b6)]()['int']()[a0_0x41becd(0x1db)]()[a0_0x41becd(0x1a6)](),'rightsType':z['enum']([a0_0x41becd(0x19b),a0_0x41becd(0x1e1),'afterRights'])['optional']()}),GetShszChangeCountsArgs=z[a0_0x41becd(0x1ce)]({}),ShszChangeCountsUpstream=z[a0_0x41becd(0x1ce)]({'statusCode':z[a0_0x41becd(0x1b6)](),'message':z[a0_0x41becd(0x1b5)]()['optional'](),'totalCount':z['number']()['optional'](),'result':z[a0_0x41becd(0x1ce)]({'rising':z[a0_0x41becd(0x1b6)](),'falling':z[a0_0x41becd(0x1b6)](),'flat':z['number'](),'limitUp':z[a0_0x41becd(0x1b6)](),'limitDown':z['number']()})}),SearchStockUpstream=z[a0_0x41becd(0x1ce)]({'result':z['object']({'searchStock':z[a0_0x41becd(0x1ce)]({'list':z['array'](z[a0_0x41becd(0x1bf)]())})})}),QuoteUpstream=z[a0_0x41becd(0x1ce)]({'result':z[a0_0x41becd(0x1bf)]()}),KlineUpstream=z[a0_0x41becd(0x1ce)]({'result':z['unknown']()}),server=new Server({'name':'market-data-mcp','version':a0_0x41becd(0x1ee)},{'capabilities':{'tools':{}}});function a0_0x3cdd(_0x582678,_0x4ddc68){_0x582678=_0x582678-0x198;const _0x55d203=a0_0x4258();let _0x485ae9=_0x55d203[_0x582678];if(a0_0x3cdd['tGXrfU']===undefined){var _0x4ba975=function(_0x11eb69){const _0x4c769b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x481864='',_0x35a1d9='',_0x128907=_0x481864+_0x4ba975;for(let _0x412911=0x0,_0xe2c379,_0x3b919a,_0x18bbab=0x0;_0x3b919a=_0x11eb69['charAt'](_0x18bbab++);~_0x3b919a&&(_0xe2c379=_0x412911%0x4?_0xe2c379*0x40+_0x3b919a:_0x3b919a,_0x412911++%0x4)?_0x481864+=_0x128907['charCodeAt'](_0x18bbab+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0xe2c379>>(-0x2*_0x412911&0x6)):_0x412911:0x0){_0x3b919a=_0x4c769b['indexOf'](_0x3b919a);}for(let _0x3eb8e5=0x0,_0x1e54d2=_0x481864['length'];_0x3eb8e5<_0x1e54d2;_0x3eb8e5++){_0x35a1d9+='%'+('00'+_0x481864['charCodeAt'](_0x3eb8e5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x35a1d9);};a0_0x3cdd['FhFvra']=_0x4ba975,a0_0x3cdd['nWWCKD']={},a0_0x3cdd['tGXrfU']=!![];}const _0x4258d7=_0x55d203[0x0],_0x3cdd15=_0x582678+_0x4258d7,_0x4da8d2=a0_0x3cdd['nWWCKD'][_0x3cdd15];if(!_0x4da8d2){const _0x2eef43=function(_0x2634e9){this['gmhQfn']=_0x2634e9,this['bjHEfu']=[0x1,0x0,0x0],this['hJoBFA']=function(){return'newState';},this['SiuMzJ']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['HhENAY']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2eef43['prototype']['iQgNIE']=function(){const _0x3d98c3=new RegExp(this['SiuMzJ']+this['HhENAY']),_0x1c28e8=_0x3d98c3['test'](this['hJoBFA']['toString']())?--this['bjHEfu'][0x1]:--this['bjHEfu'][0x0];return this['SfpLTP'](_0x1c28e8);},_0x2eef43['prototype']['SfpLTP']=function(_0x4f8417){if(!Boolean(~_0x4f8417))return _0x4f8417;return this['UmEViJ'](this['gmhQfn']);},_0x2eef43['prototype']['UmEViJ']=function(_0x567703){for(let _0x1d2e46=0x0,_0x25af0f=this['bjHEfu']['length'];_0x1d2e46<_0x25af0f;_0x1d2e46++){this['bjHEfu']['push'](Math['round'](Math['random']())),_0x25af0f=this['bjHEfu']['length'];}return _0x567703(this['bjHEfu'][0x0]);},new _0x2eef43(a0_0x3cdd)['iQgNIE'](),_0x485ae9=a0_0x3cdd['FhFvra'](_0x485ae9),a0_0x3cdd['nWWCKD'][_0x3cdd15]=_0x485ae9;}else _0x485ae9=_0x4da8d2;return _0x485ae9;}server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0xb0a32e=a0_0x41becd;return{'tools':[{'name':'search_symbol','description':_0xb0a32e(0x1cd),'inputSchema':{'type':_0xb0a32e(0x1ce),'properties':{'query':{'type':'string'},'count':{'type':_0xb0a32e(0x1dd),'minimum':0x1,'maximum':0x64,'default':0xa},'page':{'type':_0xb0a32e(0x1dd),'minimum':0x1,'default':0x1}},'required':['query']}},{'name':_0xb0a32e(0x1a7),'description':_0xb0a32e(0x19c),'inputSchema':{'type':_0xb0a32e(0x1ce),'properties':{'market':{'type':_0xb0a32e(0x1b5),'enum':['US','HK','SH','SZ']},'stockCode':{'type':_0xb0a32e(0x1b5)}},'required':[_0xb0a32e(0x1df),_0xb0a32e(0x1e5)]}},{'name':_0xb0a32e(0x1a1),'description':_0xb0a32e(0x1b9),'inputSchema':{'type':_0xb0a32e(0x1ce),'properties':{'market':{'type':_0xb0a32e(0x1b5),'enum':['HK','SH','SZ']},'interval':{'type':_0xb0a32e(0x1b5),'enum':[_0xb0a32e(0x1f3),_0xb0a32e(0x1f5),_0xb0a32e(0x1d6),_0xb0a32e(0x1f2),'year',_0xb0a32e(0x1f1),'min5',_0xb0a32e(0x1c5),'min30',_0xb0a32e(0x1e8),_0xb0a32e(0x19f)]},'stockCode':{'type':_0xb0a32e(0x1b5)},'timestamp':{'type':_0xb0a32e(0x1dd),'description':_0xb0a32e(0x1e3)},'count':{'type':'integer','minimum':0x1,'description':_0xb0a32e(0x1cb)},'rightsType':{'type':'string','enum':['exRights',_0xb0a32e(0x1e1),_0xb0a32e(0x199)]}},'required':[_0xb0a32e(0x1df),_0xb0a32e(0x1d5),_0xb0a32e(0x1e5)]}},{'name':_0xb0a32e(0x1a5),'description':_0xb0a32e(0x1c3),'inputSchema':{'type':_0xb0a32e(0x1ce),'properties':{}}}]};}),server['setRequestHandler'](CallToolRequestSchema,async _0x5e8241=>{const _0x11f954=a0_0x41becd,{name:_0x1d5eaa,arguments:_0x1fe7e9}=_0x5e8241['params'];try{if(_0x1d5eaa==='search_symbol'){const {query:_0x3567bf,count:_0x18155f,page:_0x51d6c9}=SearchSymbolArgs[_0x11f954(0x1d3)](_0x1fe7e9??{}),_0x2f913e=await httpGet(_0x11f954(0x1b3),{'keyword':_0x3567bf,'count':_0x18155f,'page':_0x51d6c9});if(_0x2f913e?.[_0x11f954(0x1da)])return{'content':[{'type':'text','text':JSON['stringify'](_0x2f913e)}]};const _0x4c0b0b=SearchStockUpstream['safeParse'](_0x2f913e);if(!_0x4c0b0b[_0x11f954(0x1f0)])return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)]({'error':{'code':_0x11f954(0x1b4),'message':_0x11f954(0x1ae)},'upstream':_0x2f913e})}]};return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)](_0x4c0b0b['data'][_0x11f954(0x1d9)][_0x11f954(0x1e0)][_0x11f954(0x198)])}]};}if(_0x1d5eaa===_0x11f954(0x1a7)){const {market:_0x3da4c3,stockCode:_0x4f44c3}=GetQuoteArgs['parse'](_0x1fe7e9??{}),_0x20a6a1=_0x11f954(0x1d2)+_0x3da4c3+_0x11f954(0x1ec)+_0x4f44c3+_0x11f954(0x1ab),_0x53f9c4=await httpGet(_0x20a6a1,{});if(_0x53f9c4?.[_0x11f954(0x1da)])return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)](_0x53f9c4)}]};const _0x5bbc15=QuoteUpstream[_0x11f954(0x1d0)](_0x53f9c4);if(!_0x5bbc15[_0x11f954(0x1f0)])return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)]({'error':{'code':_0x11f954(0x1b4),'message':_0x11f954(0x1b1)},'upstream':_0x53f9c4})}]};return{'content':[{'type':'text','text':JSON[_0x11f954(0x1c7)](_0x5bbc15[_0x11f954(0x1a2)][_0x11f954(0x1d9)])}]};}if(_0x1d5eaa===_0x11f954(0x1a1)){const {market:_0x5149fd,interval:_0x4c3905,stockCode:_0x9240b3,timestamp:_0x27f542,count:_0x389910,rightsType:_0x1036c5}=GetKlineArgs['parse'](_0x1fe7e9??{}),_0x15dc01='/hq/'+_0x5149fd+_0x11f954(0x19e)+_0x4c3905+'/'+_0x9240b3+'/v4',_0x47a978=await httpGet(_0x15dc01,{'timestamp':_0x27f542,'count':_0x389910,'rightsType':_0x1036c5});if(_0x47a978?.[_0x11f954(0x1da)])return{'content':[{'type':'text','text':JSON[_0x11f954(0x1c7)](_0x47a978)}]};const _0x52aa23=KlineUpstream['safeParse'](_0x47a978);if(!_0x52aa23[_0x11f954(0x1f0)])return{'content':[{'type':_0x11f954(0x1c6),'text':JSON['stringify']({'error':{'code':_0x11f954(0x1b4),'message':_0x11f954(0x1a9)},'upstream':_0x47a978})}]};return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)](_0x52aa23['data']['result'])}]};}if(_0x1d5eaa===_0x11f954(0x1a5)){GetShszChangeCountsArgs[_0x11f954(0x1d3)](_0x1fe7e9??{});const _0x2d037a=await httpGet('/hq/market/shsz/change-counts/v1',{});if(_0x2d037a?.[_0x11f954(0x1da)])return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)](_0x2d037a)}]};const _0x32e01c=ShszChangeCountsUpstream[_0x11f954(0x1d0)](_0x2d037a);if(!_0x32e01c[_0x11f954(0x1f0)])return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)]({'error':{'code':'UPSTREAM_SCHEMA_MISMATCH','message':_0x11f954(0x1f6)},'upstream':_0x2d037a})}]};return{'content':[{'type':'text','text':JSON['stringify'](_0x32e01c[_0x11f954(0x1a2)]['result'])}]};}return{'content':[{'type':'text','text':JSON['stringify']({'error':{'code':_0x11f954(0x1cc),'message':_0x11f954(0x1fa)+_0x1d5eaa}})}]};}catch(_0x1fc11e){const _0x4e04ba={'error':{'code':'TOOL_EXEC_ERROR','message':_0x1fc11e?.[_0x11f954(0x1a4)]??String(_0x1fc11e)}};return{'content':[{'type':_0x11f954(0x1c6),'text':JSON[_0x11f954(0x1c7)](_0x4e04ba)}]};}});async function main(){const _0x3aa1bf=a0_0x41becd,_0x2b1860=(function(){let _0x2c165a=!![];return function(_0x2ef66f,_0xd5dc36){const _0x211a2a=_0x2c165a?function(){const _0x1e608c=a0_0x3cdd;if(_0xd5dc36){const _0x22b6ef=_0xd5dc36[_0x1e608c(0x1b7)](_0x2ef66f,arguments);return _0xd5dc36=null,_0x22b6ef;}}:function(){};return _0x2c165a=![],_0x211a2a;};}()),_0x26c452=_0x2b1860(this,function(){const _0x4978ca=a0_0x3cdd;return _0x26c452['toString']()[_0x4978ca(0x1e7)]('(((.+)+)+)+$')[_0x4978ca(0x1b0)]()[_0x4978ca(0x19a)](_0x26c452)['search']('(((.+)+)+)+$');});_0x26c452();const _0xaf4f7c=new StdioServerTransport();await server[_0x3aa1bf(0x1bc)](_0xaf4f7c);}main()[a0_0x41becd(0x1cf)](_0x2557f9=>{const _0x1e5b03=a0_0x41becd;console[_0x1e5b03(0x1da)](_0x2557f9),process[_0x1e5b03(0x1dc)](0x1);});
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@flyneko/mcp-market",
3
+ "version": "0.1.2",
4
+ "description": "MCP market data server powered by APIs",
5
+ "type": "module",
6
+ "bin": {
7
+ "mcp-market": "dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "engines": {
17
+ "node": ">=20"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "market"
22
+ ],
23
+ "license": "MIT",
24
+ "scripts": {
25
+ "dev": "node --import tsx src/index.ts",
26
+ "debug": "node --inspect-brk --import tsx src/index.ts",
27
+ "check": "tsc -p tsconfig.json --noEmit",
28
+ "build": "tsc -p tsconfig.json && npm run obfuscate",
29
+ "obfuscate": "javascript-obfuscator dist/index.js --output dist/index.js --target node --compact true --self-defending true --string-array true --string-array-encoding base64 --rename-globals false --identifier-names-generator hexadecimal",
30
+ "clean": "rm -rf dist",
31
+ "prepublishOnly": "npm run clean && npm run check && npm run build",
32
+ "inspector": "npx @modelcontextprotocol/inspector node --import tsx src/index.ts",
33
+ "start": "node dist/index.js"
34
+ },
35
+ "dependencies": {
36
+ "@modelcontextprotocol/sdk": "^1.27.1",
37
+ "zod": "^4.3.6"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^25.3.2",
41
+ "javascript-obfuscator": "^4.1.1",
42
+ "tsx": "^4.21.0",
43
+ "typescript": "^5.9.3"
44
+ }
45
+ }