@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.
- package/README.md +113 -0
- package/dist/index.js +2 -0
- 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
|
+
}
|