This report was generated in Chinese. Some content may be in Chinese.
Suspicious — Risk Score 45/100
Last scan:3 hr ago Rescan
45 /100
stocktoday-mcp
A-stock 股市数据 MCP 服务器,提供 155+ Tushare API 接口
自定义后端 `https://tushare.citydata.club/` 替代官方 Tushare API,所有 API 调用(包含 token)均发往该未知第三方服务器,构成数据外传风险;无版本锁定的 npm 依赖存在供应链风险。
Skill Namestocktoday-mcp
Duration45.6s
Enginepi
ClawHub Stocktoday Mcp v1.0.0 by usa2046
📥 216
ClawHub Verdict Suspicious env_credential_accessllm_suspiciousvt_suspicious
Use with caution
将 BASE_URL 强制指向官方 Tushare API(`https://api.tushare.pro/`)或已知可信地址;锁定 axios 版本;明确声明 network:WRITE 权限。

Attack Chain 3 steps

Entry 用户配置 STOCKTODAY_TOKEN 环境变量
SKILL.md:29
Escalation MCP server 以 STDIO 模式启动并注册 155 个工具
src/index.ts:201
Impact 用户调用任意 tool,token + 查询参数 POST 到未知第三方 https://tushare.citydata.club/
src/index.ts:13

Findings 4 items

Severity Finding Location
Medium
凭证及查询数据发往未知第三方服务器 Data Exfil
代码将 STOCKTODAY_TOKEN 和用户查询参数以 POST application/x-www-form-urlencoded 形式发送到 https://tushare.citydata.club/,而非 Tushare 官方 API。所有请求参数(含股票代码、日期范围等)均被暴露给该自定义后端,SKILL.md 仅以'使用自定义后端服务'一笔带过,未说明后端运营方、数据留存政策及合规性。
const res = await fetch(`${BASE_URL}${endpoint}`, { method: "POST", body: formData, ... });
→ 明确披露自定义后端的运营方、数据处理政策和隐私声明;或替换为官方 Tushare API 端点。
src/index.ts:13
Medium
axios 无版本锁定存在依赖供应链风险 Supply Chain
package.json 中 axios 依赖声明为 ^1.6.0,允许自动升级到 1.x 最新版。axios 曾有 SSRF 和 CRLF 注入等历史漏洞(CVE-2019-10742 等),无版本锁定意味着自动引入含有漏洞的新版本。
"axios": "^1.6.0"
→ 锁定版本:"axios": "1.7.4" 或更高安全版本,并在 package-lock.json 中确认实际安装版本。
package.json:11
Low
文档未声明 network:WRITE 权限 Doc Mismatch
SKILL.md 未声明该 skill 需要向外部服务器发送 HTTP 请求的能力,仅说明'调用 Tushare API'。代码实际通过 fetch 主动 POST 数据到第三方,权限声明不完整。
SKILL.md 仅描述功能,未声明网络写入权限
→ 在 allowed-tools 或权限声明中明确:network:WRITE,用于向 tushare.citydata.club 发送 API 请求。
SKILL.md:1
Low
@modelcontextprotocol/sdk 依赖官方库但无版本锁定 Supply Chain
MCP SDK 声明为 ^1.0.0,虽为官方包但同样无版本锁定,存在供应链风险。
"@modelcontextprotocol/sdk": "^1.0.0"
→ 锁定 SDK 版本并定期更新。
package.json:10
ResourceDeclaredInferredStatusEvidence
Network NONE WRITE ✗ Violation src/index.ts:6,BASE_URL外部API调用
Environment NONE READ ✗ Violation src/index.ts:5,process.env读取token
Filesystem NONE NONE 无直接文件系统操作
108 findings
🔗
Medium External URL 外部 URL
https://tushare.citydata.club/
SKILL.md:38
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/@hono/node-server/-/node-server-1.19.11.tgz
package-lock.json:22
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.27.1.tgz
package-lock.json:34
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/@types/node/-/node-20.19.37.tgz
package-lock.json:74
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/accepts/-/accepts-2.0.0.tgz
package-lock.json:84
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/ajv/-/ajv-8.18.0.tgz
package-lock.json:97
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz
package-lock.json:113
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz
package-lock.json:130
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/axios/-/axios-1.13.6.tgz
package-lock.json:136
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/body-parser/-/body-parser-2.2.2.tgz
package-lock.json:147
🔗
Medium External URL 外部 URL
https://opencollective.com/express
package-lock.json:166
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz
package-lock.json:171
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz
package-lock.json:180
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz
package-lock.json:193
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz
package-lock.json:209
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/content-disposition/-/content-disposition-1.0.1.tgz
package-lock.json:221
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz
package-lock.json:234
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/cookie/-/cookie-0.7.2.tgz
package-lock.json:243
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.2.2.tgz
package-lock.json:252
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/cors/-/cors-2.8.6.tgz
package-lock.json:261
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz
package-lock.json:278
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz
package-lock.json:292
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz
package-lock.json:309
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz
package-lock.json:318
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz
package-lock.json:327
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz
package-lock.json:341
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz
package-lock.json:347
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz
package-lock.json:356
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz
package-lock.json:365
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz
package-lock.json:374
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz
package-lock.json:386
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz
package-lock.json:401
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz
package-lock.json:407
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz
package-lock.json:416
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/eventsource-parser/-/eventsource-parser-3.0.6.tgz
package-lock.json:428
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/express/-/express-5.2.1.tgz
package-lock.json:437
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/express-rate-limit/-/express-rate-limit-8.3.1.tgz
package-lock.json:481
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz
package-lock.json:499
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.0.tgz
package-lock.json:505
🔗
Medium External URL 外部 URL
https://opencollective.com/fastify
package-lock.json:514
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/finalhandler/-/finalhandler-2.1.1.tgz
package-lock.json:521
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz
package-lock.json:542
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz
package-lock.json:562
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz
package-lock.json:578
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz
package-lock.json:587
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz
package-lock.json:599
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/fresh/-/fresh-2.0.0.tgz
package-lock.json:608
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz
package-lock.json:617
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz
package-lock.json:626
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz
package-lock.json:650
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz
package-lock.json:663
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz
package-lock.json:675
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz
package-lock.json:687
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz
package-lock.json:702
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/hono/-/hono-4.12.7.tgz
package-lock.json:714
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/http-errors/-/http-errors-2.0.1.tgz
package-lock.json:724
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.2.tgz
package-lock.json:744
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz
package-lock.json:760
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/ip-address/-/ip-address-10.1.0.tgz
package-lock.json:766
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz
package-lock.json:775
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz
package-lock.json:784
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz
package-lock.json:790
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/jose/-/jose-6.2.1.tgz
package-lock.json:796
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz
package-lock.json:805
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.2.tgz
package-lock.json:811
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz
package-lock.json:817
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz
package-lock.json:826
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz
package-lock.json:835
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz
package-lock.json:847
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz
package-lock.json:856
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz
package-lock.json:872
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz
package-lock.json:878
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz
package-lock.json:887
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz
package-lock.json:896
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz
package-lock.json:908
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/once/-/once-1.4.0.tgz
package-lock.json:920
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz
package-lock.json:929
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz
package-lock.json:938
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz
package-lock.json:947
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/pkce-challenge/-/pkce-challenge-5.0.1.tgz
package-lock.json:957
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz
package-lock.json:966
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz
package-lock.json:979
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/qs/-/qs-6.15.0.tgz
package-lock.json:985
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz
package-lock.json:1000
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/raw-body/-/raw-body-3.0.2.tgz
package-lock.json:1009
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz
package-lock.json:1024
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/router/-/router-2.2.0.tgz
package-lock.json:1033
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz
package-lock.json:1049
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/send/-/send-1.2.1.tgz
package-lock.json:1055
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/serve-static/-/serve-static-2.2.1.tgz
package-lock.json:1081
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz
package-lock.json:1100
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz
package-lock.json:1106
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz
package-lock.json:1118
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz
package-lock.json:1127
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz
package-lock.json:1146
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz
package-lock.json:1162
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz
package-lock.json:1180
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz
package-lock.json:1199
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz
package-lock.json:1208
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/type-is/-/type-is-2.0.1.tgz
package-lock.json:1217
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz
package-lock.json:1231
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz
package-lock.json:1245
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz
package-lock.json:1252
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz
package-lock.json:1261
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/which/-/which-2.0.2.tgz
package-lock.json:1270
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz
package-lock.json:1285
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/zod/-/zod-4.3.6.tgz
package-lock.json:1291
🔗
Medium External URL 外部 URL
https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz
package-lock.json:1301

File Tree

10 files · 126.2 KB · 2912 lines
JSON 3f · 1346L JavaScript 3f · 945L TypeScript 1f · 274L Markdown 2f · 215L Python 1f · 132L
├─ 📁 dist
│ ├─ 📜 index_generated.js JavaScript 533L · 19.8 KB
│ └─ 📜 index.js JavaScript 249L · 22.8 KB
├─ 📁 src
│ └─ 📜 index.ts TypeScript 274L · 22.4 KB
├─ 🐍 generate_mcp.py Python 132L · 3.7 KB
├─ 📋 package-lock.json JSON 1309L · 45.6 KB
├─ 📋 package.json JSON 22L · 524 B
├─ 📝 README.md Markdown 171L · 4.8 KB
├─ 📝 SKILL.md Markdown 44L · 736 B
├─ 📜 test_all.js JavaScript 163L · 5.7 KB
└─ 📋 tsconfig.json JSON 15L · 338 B

Dependencies 3 items

PackageVersionSourceKnown VulnsNotes
@modelcontextprotocol/sdk ^1.0.0 npm No 无版本锁定
axios ^1.6.0 npm No 无版本锁定;历史CVE需关注
typescript ^5.0.0 npm No devDependencies 无版本锁定

Security Positives

✓ 代码逻辑清晰,155个工具均为标准股票数据查询,无 RCE、文件写入、敏感路径访问等危险操作
✓ token 仅用于向 API 认证,未被外传或打印到日志
✓ 无 Base64 编码、eval、subprocess 等高危操作
✓ 无 HTML 注释、提示词注入等可疑内容
✓ 无凭证收割、环境变量遍历等恶意行为