mcp-probe-kit 3.0.23 → 3.1.0

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 (141) hide show
  1. package/README.md +755 -779
  2. package/build/index.js +38 -40
  3. package/build/lib/__tests__/memory-injection.unit.test.js +1 -0
  4. package/build/lib/agents-md-template.js +32 -32
  5. package/build/lib/memory-client.d.ts +2 -0
  6. package/build/lib/memory-client.js +1 -0
  7. package/build/lib/memory-config.d.ts +2 -0
  8. package/build/lib/memory-config.js +1 -0
  9. package/build/lib/memory-orchestration.d.ts +4 -0
  10. package/build/lib/memory-orchestration.js +28 -5
  11. package/build/lib/skill-bridge.js +12 -12
  12. package/build/resources/index.d.ts +4 -0
  13. package/build/resources/index.js +4 -0
  14. package/build/resources/tool-params-guide.d.ts +571 -0
  15. package/build/resources/tool-params-guide.js +488 -0
  16. package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
  17. package/build/resources/ui-ux-data/metadata.json +30 -30
  18. package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
  19. package/build/resources/ui-ux-data/shadcn/components.json +997 -997
  20. package/build/resources/ui-ux-data/themes/presets.json +483 -483
  21. package/build/schemas/index.d.ts +0 -22
  22. package/build/schemas/memory-tools.d.ts +0 -22
  23. package/build/schemas/memory-tools.js +0 -14
  24. package/build/tools/__tests__/read_memory_asset.unit.test.js +75 -0
  25. package/build/tools/__tests__/search_memory.unit.test.js +7 -1
  26. package/build/tools/analyze_project.d.ts +1 -0
  27. package/build/tools/analyze_project.js +527 -0
  28. package/build/tools/check_deps.d.ts +13 -0
  29. package/build/tools/check_deps.js +204 -0
  30. package/build/tools/code_insight.js +41 -41
  31. package/build/tools/convert.d.ts +13 -0
  32. package/build/tools/convert.js +599 -0
  33. package/build/tools/css_order.d.ts +13 -0
  34. package/build/tools/css_order.js +81 -0
  35. package/build/tools/debug.d.ts +13 -0
  36. package/build/tools/debug.js +131 -0
  37. package/build/tools/design2code.d.ts +20 -0
  38. package/build/tools/design2code.js +426 -0
  39. package/build/tools/detect_shell.d.ts +6 -0
  40. package/build/tools/detect_shell.js +151 -0
  41. package/build/tools/explain.d.ts +13 -0
  42. package/build/tools/explain.js +390 -0
  43. package/build/tools/fix.d.ts +13 -0
  44. package/build/tools/fix.js +303 -0
  45. package/build/tools/fix_bug.js +161 -161
  46. package/build/tools/gen_mock.d.ts +22 -0
  47. package/build/tools/gen_mock.js +269 -0
  48. package/build/tools/gen_skill.d.ts +13 -0
  49. package/build/tools/gen_skill.js +560 -0
  50. package/build/tools/genapi.d.ts +13 -0
  51. package/build/tools/genapi.js +174 -0
  52. package/build/tools/genchangelog.d.ts +13 -0
  53. package/build/tools/genchangelog.js +250 -0
  54. package/build/tools/gencommit.js +60 -60
  55. package/build/tools/gendoc.d.ts +13 -0
  56. package/build/tools/gendoc.js +232 -0
  57. package/build/tools/genpr.d.ts +13 -0
  58. package/build/tools/genpr.js +194 -0
  59. package/build/tools/genreadme.d.ts +13 -0
  60. package/build/tools/genreadme.js +626 -0
  61. package/build/tools/gensql.d.ts +13 -0
  62. package/build/tools/gensql.js +320 -0
  63. package/build/tools/genui.d.ts +13 -0
  64. package/build/tools/genui.js +803 -0
  65. package/build/tools/index.d.ts +0 -1
  66. package/build/tools/index.js +0 -1
  67. package/build/tools/init_component_catalog.d.ts +22 -0
  68. package/build/tools/init_component_catalog.js +809 -0
  69. package/build/tools/init_project_context.js +432 -432
  70. package/build/tools/init_setting.d.ts +13 -0
  71. package/build/tools/init_setting.js +47 -0
  72. package/build/tools/perf.d.ts +13 -0
  73. package/build/tools/perf.js +409 -0
  74. package/build/tools/read_memory_asset.js +2 -1
  75. package/build/tools/render_ui.d.ts +22 -0
  76. package/build/tools/render_ui.js +384 -0
  77. package/build/tools/resolve_conflict.d.ts +13 -0
  78. package/build/tools/resolve_conflict.js +349 -0
  79. package/build/tools/search_memory.js +1 -0
  80. package/build/tools/security_scan.d.ts +22 -0
  81. package/build/tools/security_scan.js +323 -0
  82. package/build/tools/split.d.ts +13 -0
  83. package/build/tools/split.js +599 -0
  84. package/build/tools/start_api.d.ts +13 -0
  85. package/build/tools/start_api.js +193 -0
  86. package/build/tools/start_bugfix.js +233 -233
  87. package/build/tools/start_doc.d.ts +13 -0
  88. package/build/tools/start_doc.js +207 -0
  89. package/build/tools/start_feature.js +117 -117
  90. package/build/tools/start_product.js +1 -1
  91. package/build/tools/start_refactor.d.ts +13 -0
  92. package/build/tools/start_refactor.js +188 -0
  93. package/build/tools/start_release.d.ts +13 -0
  94. package/build/tools/start_release.js +167 -0
  95. package/build/tools/start_review.d.ts +13 -0
  96. package/build/tools/start_review.js +175 -0
  97. package/build/tools/start_ui.js +399 -399
  98. package/build/tools/ui-ux-tools.js +290 -290
  99. package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
  100. package/build/utils/themes-sync.js +8 -8
  101. package/package.json +81 -83
  102. package/build/lib/__tests__/memory-orchestration.unit.test.js +0 -84
  103. package/build/lib/__tests__/memory-payload.unit.test.js +0 -35
  104. package/build/lib/cursor-history-client.d.ts +0 -54
  105. package/build/lib/cursor-history-client.js +0 -240
  106. package/build/tools/__tests__/cursor-history.unit.test.js +0 -38
  107. package/build/tools/cursor_read_conversation.d.ts +0 -7
  108. package/build/tools/cursor_read_conversation.js +0 -36
  109. package/docs/.mcp-probe/layout.json +0 -11
  110. package/docs/CNAME +0 -1
  111. package/docs/assets/font/MaterialSymbolsOutlined.codepoints +0 -4102
  112. package/docs/assets/font/MaterialSymbolsOutlined.ttf +0 -0
  113. package/docs/assets/font/noto-sans-sc-400.ttf +0 -0
  114. package/docs/assets/font/noto-sans-sc-700.ttf +0 -0
  115. package/docs/assets/font/noto-sans-sc-900.ttf +0 -0
  116. package/docs/assets/js/i18n.js +0 -375
  117. package/docs/assets/js/tailwind.js +0 -83
  118. package/docs/assets/logo-zh.png +0 -0
  119. package/docs/assets/logo.png +0 -0
  120. package/docs/data/tools.js +0 -523
  121. package/docs/i18n/all-tools/en.json +0 -190
  122. package/docs/i18n/all-tools/ja.json +0 -171
  123. package/docs/i18n/all-tools/ko.json +0 -171
  124. package/docs/i18n/all-tools/zh-CN.json +0 -190
  125. package/docs/i18n/en.json +0 -626
  126. package/docs/i18n/ja.json +0 -602
  127. package/docs/i18n/ko.json +0 -602
  128. package/docs/i18n/zh-CN.json +0 -626
  129. package/docs/index.html +0 -327
  130. package/docs/memory-local-setup.md +0 -314
  131. package/docs/memory-local-setup.zh-CN.md +0 -283
  132. package/docs/pages/all-tools.html +0 -515
  133. package/docs/pages/examples.html +0 -717
  134. package/docs/pages/getting-started.html +0 -964
  135. package/docs/pages/migration.html +0 -308
  136. package/docs/specs/user-auth/design.md +0 -82
  137. package/docs/specs/user-auth/requirements.md +0 -52
  138. package/docs/specs/user-auth/tasks.md +0 -55
  139. /package/build/{lib/__tests__/memory-orchestration.unit.test.d.ts → tools/__tests__/read_memory_asset.unit.test.d.ts} +0 -0
  140. /package/build/{lib/__tests__/memory-payload.unit.test.d.ts → utils/design-docs-generator.d.ts} +0 -0
  141. /package/build/{tools/__tests__/cursor-history.unit.test.d.ts → utils/design-docs-generator.js} +0 -0
package/docs/index.html DELETED
@@ -1,327 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>MCP Probe Kit - AI 驱动的完整研发工具集 | 22个工具覆盖开发全流程</title>
7
-
8
- <!-- SEO Meta Tags -->
9
- <meta name="description" content="MCP Probe Kit 提供 22 个 AI 驱动的研发工具,覆盖需求分析、代码开发、质量保障、Bug修复、版本发布全流程。支持 Cursor、Cline、Claude Desktop,100% 结构化输出。">
10
- <meta name="keywords" content="MCP Probe Kit, AI开发工具, 代码生成, 代码审查, Git工具, UI开发, 研发效率, Cursor, Cline, Claude, MCP Server">
11
- <meta name="author" content="小墨 (Kyle) - ByteZoneX">
12
- <meta name="robots" content="index, follow">
13
- <link rel="canonical" href="https://mcp-probe-kit.bytezonex.com/">
14
- <link rel="icon" type="image/x-icon" href="https://www.bytezonex.com/favicon.ico">
15
-
16
- <!-- Open Graph / Facebook -->
17
- <meta property="og:type" content="website">
18
- <meta property="og:url" content="https://mcp-probe-kit.bytezonex.com/">
19
- <meta property="og:title" content="MCP Probe Kit - AI 驱动的完整研发工具集">
20
- <meta property="og:description" content="22 个 AI 工具覆盖开发全流程,从需求到上线一站式解决。支持 Cursor、Cline、Claude Desktop。">
21
-
22
- <!-- Twitter -->
23
- <meta property="twitter:card" content="summary_large_image">
24
- <meta property="twitter:url" content="https://mcp-probe-kit.bytezonex.com/">
25
- <meta property="twitter:title" content="MCP Probe Kit - AI 驱动的完整研发工具集">
26
- <meta property="twitter:description" content="22 个 AI 工具覆盖开发全流程,从需求到上线一站式解决。">
27
-
28
- <script src="assets/js/tailwind.js" data-cfasync="false"></script>
29
- <script>
30
- tailwind.config = {
31
- theme: {
32
- extend: {
33
- colors: {
34
- primary: {
35
- DEFAULT: '#2563EB',
36
- hover: '#1D4ED8',
37
- light: '#3B82F6',
38
- },
39
- text: {
40
- primary: '#0F172A',
41
- secondary: '#475569',
42
- tertiary: '#64748B',
43
- },
44
- bg: {
45
- page: '#F8FAFC',
46
- card: '#FFFFFF',
47
- hover: '#F1F5F9',
48
- },
49
- border: {
50
- DEFAULT: '#E2E8F0',
51
- hover: '#CBD5E1',
52
- },
53
- },
54
- boxShadow: {
55
- sm: '0 1px 2px rgba(0, 0, 0, 0.05)',
56
- md: '0 4px 6px rgba(0, 0, 0, 0.07)',
57
- lg: '0 10px 15px rgba(0, 0, 0, 0.1)',
58
- },
59
- fontFamily: {
60
- sans: ['-apple-system', 'BlinkMacSystemFont', '"PingFang SC"', '"Microsoft YaHei"', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', '"Noto Sans CJK SC"', 'sans-serif'],
61
- mono: ['ui-monospace', '"SF Mono"', '"Cascadia Code"', '"Consolas"', 'Menlo', 'Monaco', '"PingFang SC"', '"Microsoft YaHei"', '"Courier New"', 'monospace']
62
- },
63
- }
64
- }
65
- }
66
- </script>
67
- <style>
68
- html { scroll-behavior: smooth; }
69
- .card-link:hover .link-arrow { transform: translateX(4px); }
70
- .link-arrow { transition: transform 0.2s; }
71
- /* 移动端侧边栏 */
72
- .sidebar-drawer { transition: transform 0.3s ease; }
73
- @media (max-width: 767px) {
74
- .sidebar-drawer { transform: translateX(-100%); }
75
- .sidebar-drawer.open { transform: translateX(0); }
76
- }
77
- .backdrop { opacity: 0; pointer-events: none; transition: opacity 0.3s ease; }
78
- .backdrop.active { opacity: 1; pointer-events: auto; }
79
-
80
- /* i18n 加载优化:防止内容闪烁 */
81
- body:not(.i18n-ready) [data-i18n] {
82
- visibility: hidden;
83
- }
84
- body.i18n-ready [data-i18n] {
85
- visibility: visible;
86
- }
87
- </style>
88
- </head>
89
- <body class="font-sans bg-bg-page text-text-primary leading-relaxed min-h-screen flex flex-col">
90
- <!-- A. 顶部导航栏 -->
91
- <nav class="fixed top-0 left-0 right-0 h-14 bg-white/95 backdrop-blur-md border-b border-border z-50">
92
- <div class="h-full px-4 flex items-center justify-between max-w-[1200px] mx-auto">
93
- <a href="./index.html" class="flex items-center gap-2 text-base font-semibold text-text-primary no-underline">
94
- <span>🚀</span>
95
- <span class="sm:inline hidden">MCP Probe Kit</span>
96
- </a>
97
- <div class="flex items-center gap-3">
98
- <div class="hidden md:flex items-center gap-4">
99
- <a href="./pages/all-tools.html" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors" data-i18n="nav.docs">文档</a>
100
- <a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors flex items-center gap-1">
101
- <span data-i18n="nav.mainSite">主站</span> ByteZoneX<span class="text-xs">↗</span>
102
- </a>
103
- <a href="https://github.com/mybolide/mcp-probe-kit" target="_blank" rel="noopener" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors flex items-center gap-1">GitHub<span class="text-xs">↗</span></a>
104
- <a href="https://www.npmjs.com/package/mcp-probe-kit" target="_blank" rel="noopener" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors flex items-center gap-1">npm<span class="text-xs">↗</span></a>
105
- <div id="lang-switcher-container"></div>
106
- </div>
107
- <button onclick="toggleSidebar()" class="md:hidden p-2 text-text-secondary hover:text-primary transition-colors">
108
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
109
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/>
110
- </svg>
111
- </button>
112
- </div>
113
- </div>
114
- </nav>
115
-
116
- <!-- 侧边栏遮罩 -->
117
- <div class="fixed inset-0 bg-black/50 z-40 backdrop opacity-0 pointer-events-none transition-opacity duration-300 md:hidden" onclick="toggleSidebar()" id="backdrop"></div>
118
-
119
- <!-- 移动端侧边栏 -->
120
- <aside class="fixed left-0 top-14 bottom-0 w-64 bg-white border-r border-border z-50 sidebar-drawer overflow-y-auto md:hidden" id="sidebar">
121
- <div class="p-4">
122
- <div class="mb-4">
123
- <div class="text-xs font-semibold text-text-tertiary uppercase tracking-wider mb-2 px-2">快速开始</div>
124
- <a href="./index.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm font-medium bg-blue-50 text-primary no-underline border-l-3 border-primary">
125
- <span>🏠</span>
126
- <span>文档首页</span>
127
- </a>
128
- <a href="./pages/getting-started.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
129
- <span>📖</span>
130
- <span>安装配置</span>
131
- </a>
132
- </div>
133
-
134
- <div class="mb-4">
135
- <div class="text-xs font-semibold text-text-tertiary uppercase tracking-wider mb-2 px-2">工具文档</div>
136
- <a href="./pages/all-tools.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
137
- <span>🛠️</span>
138
- <span>所有工具</span>
139
- <span class="ml-auto bg-bg-page text-xs px-2 py-0.5 rounded-full">22</span>
140
- </a>
141
- </div>
142
-
143
- <div class="mb-4">
144
- <div class="text-xs font-semibold text-text-tertiary uppercase tracking-wider mb-2 px-2">指南</div>
145
- <a href="./pages/migration.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
146
- <span>🚀</span>
147
- <span>迁移指南</span>
148
- </a>
149
- <a href="./pages/examples.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
150
- <span>💡</span>
151
- <span>最佳实践</span>
152
- </a>
153
- </div>
154
-
155
- <div class="pt-4 border-t border-border">
156
- <a href="https://github.com/mybolide/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
157
- <span>💻</span>
158
- <span>GitHub</span>
159
- <span class="ml-auto text-xs">↗</span>
160
- </a>
161
- <a href="https://npmjs.com/package/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
162
- <span>📦</span>
163
- <span>npm</span>
164
- <span class="ml-auto text-xs">↗</span>
165
- </a>
166
- </div>
167
-
168
- <!-- QR Code -->
169
- <div class="mt-4 pt-4 border-t border-border">
170
- <div class="text-center">
171
- <div class="text-xs font-semibold text-text-tertiary mb-2">关注公众号</div>
172
- <img src="https://oss.bolzjb.com/wx_qrcode.jpg" alt="微信公众号" class="w-[100px] h-[100px] mx-auto rounded-lg border border-border" />
173
- <div class="text-xs text-text-tertiary mt-2">获取更多技术分享</div>
174
- </div>
175
- </div>
176
- </div>
177
- </aside>
178
-
179
- <!-- B. Hero 首屏 -->
180
- <section class="bg-gradient-to-br from-primary to-primary-hover text-white py-12 px-6 text-center mt-14">
181
- <div class="max-w-[800px] mx-auto">
182
- <h1 class="text-3xl sm:text-4xl md:text-5xl font-bold mb-3 tracking-tight" data-i18n="hero.title">🚀 MCP Probe Kit</h1>
183
- <p class="text-base sm:text-lg opacity-95 mb-2" data-i18n="hero.subtitle">AI 开发增强工具集 · 文档中心</p>
184
- <div class="inline-block bg-white/20 px-3 py-1 rounded-full text-sm font-semibold mb-6 md:mb-8">v3.0.10</div>
185
- <div class="flex gap-3 md:gap-4 justify-center flex-wrap">
186
- <a href="./pages/getting-started.html" class="bg-white text-primary px-5 py-2.5 sm:px-6 sm:py-3 rounded-md text-sm sm:text-base font-semibold hover:-translate-y-0.5 hover:shadow-lg transition-all duration-200 inline-flex items-center gap-1.5 no-underline cursor-pointer border-0" data-i18n="hero.quickStart">快速开始</a>
187
- <a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="bg-white/15 text-white px-5 py-2.5 sm:px-6 sm:py-3 rounded-md text-sm sm:text-base font-semibold hover:bg-white/25 transition-all duration-200 inline-flex items-center gap-1.5 no-underline border border-white/30" data-i18n="hero.visitMainSite">
188
- 访问主站 ByteZoneX ↗
189
- </a>
190
- </div>
191
- </div>
192
- </section>
193
-
194
- <!-- C. 主内容区 -->
195
- <main class="flex-1 max-w-[1200px] mx-auto px-4 sm:px-6 py-8 md:py-12 w-full">
196
- <div class="grid grid-cols-1 sm:grid-cols-2 gap-4 sm:gap-6">
197
- <!-- 1. 快速开始 -->
198
- <article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
199
- <div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
200
- <h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
201
- <span>📖</span>
202
- <span data-i18n="sections.quickStart.title">快速开始</span>
203
- </h2>
204
- </div>
205
- <p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.quickStart.description">5 分钟快速上手 MCP Probe Kit v3.0.10</p>
206
- <nav class="flex flex-col gap-0">
207
- <a href="./pages/getting-started.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
208
- <span data-i18n="sections.quickStart.installConfig">安装配置</span>
209
- <span class="link-arrow text-text-tertiary text-base">→</span>
210
- </a>
211
- </nav>
212
- </article>
213
-
214
- <!-- 2. 工具文档 -->
215
- <article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
216
- <div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
217
- <h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
218
- <span>🛠️</span>
219
- <span data-i18n="sections.tools.title">工具文档</span>
220
- </h2>
221
- </div>
222
- <p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.tools.description">22 个实用工具的完整参考,含图谱洞察与编排工作流</p>
223
- <nav class="flex flex-col gap-0">
224
- <a href="./pages/all-tools.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
225
- <div class="flex items-center gap-2">
226
- <span data-i18n="sections.tools.allTools">所有工具</span>
227
- <span class="bg-bg-hover text-text-secondary px-2 py-0.5 rounded-full text-xs font-semibold">22</span>
228
- </div>
229
- <span class="link-arrow text-text-tertiary text-base">→</span>
230
- </a>
231
- </nav>
232
- </article>
233
-
234
- <!-- 3. 指南 -->
235
- <article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
236
- <div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
237
- <h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
238
- <span>📚</span>
239
- <span data-i18n="sections.guides.title">指南</span>
240
- </h2>
241
- </div>
242
- <p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.guides.description">迁移指南和最佳实践</p>
243
- <nav class="flex flex-col gap-0">
244
- <a href="./pages/migration.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
245
- <span data-i18n="sections.guides.migration">v2.x → v3.0 迁移指南</span>
246
- <span class="link-arrow text-text-tertiary text-base">→</span>
247
- </a>
248
- <a href="./pages/examples.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
249
- <span data-i18n="sections.guides.bestPractices">最佳实践</span>
250
- <span class="link-arrow text-text-tertiary text-base">→</span>
251
- </a>
252
- </nav>
253
- </article>
254
-
255
- <!-- 4. 资源 -->
256
- <article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
257
- <div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
258
- <h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
259
- <span>🔗</span>
260
- <span data-i18n="sections.resources.title">资源</span>
261
- </h2>
262
- </div>
263
- <p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.resources.description">源代码和社区支持</p>
264
- <nav class="flex flex-col gap-0">
265
- <a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
266
- <div class="flex items-center gap-2">
267
- <span data-i18n="sections.resources.mainSite">ByteZoneX 主站</span>
268
- <span class="text-xs text-text-tertiary">↗</span>
269
- </div>
270
- <span class="link-arrow text-text-tertiary text-base">→</span>
271
- </a>
272
- <a href="https://github.com/mybolide/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
273
- <div class="flex items-center gap-2">
274
- <span data-i18n="sections.resources.githubRepo">GitHub 仓库</span>
275
- <span class="text-xs text-text-tertiary">↗</span>
276
- </div>
277
- <span class="link-arrow text-text-tertiary text-base">→</span>
278
- </a>
279
- <a href="https://www.npmjs.com/package/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
280
- <div class="flex items-center gap-2">
281
- <span data-i18n="sections.resources.npmPackage">npm 包</span>
282
- <span class="text-xs text-text-tertiary">↗</span>
283
- </div>
284
- <span class="link-arrow text-text-tertiary text-base">→</span>
285
- </a>
286
- <a href="https://github.com/mybolide/mcp-probe-kit/issues" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
287
- <div class="flex items-center gap-2">
288
- <span data-i18n="sections.resources.issues">问题反馈</span>
289
- <span class="text-xs text-text-tertiary">↗</span>
290
- </div>
291
- <span class="link-arrow text-text-tertiary text-base">→</span>
292
- </a>
293
- </nav>
294
- </article>
295
- </div>
296
- </main>
297
-
298
- <!-- D. Footer -->
299
- <footer class="bg-bg-card border-t border-border px-4 sm:px-6 py-6 mt-auto">
300
- <div class="max-w-[1200px] mx-auto flex flex-col sm:flex-row justify-between items-center gap-4 text-sm text-text-secondary">
301
- <div><span data-i18n="footer.madeWith">Made with ❤️ by</span> <a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="text-primary hover:text-primary-hover transition-colors duration-200 no-underline">小墨 (Kyle)</a></div>
302
- <div>
303
- © 2024-2026 MCP Probe Kit · <span data-i18n="footer.license">MIT License</span> ·
304
- <a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="text-primary hover:text-primary-hover transition-colors duration-200 no-underline"><span data-i18n="footer.mainSite">主站 ByteZoneX</span> ↗</a>
305
- </div>
306
- </div>
307
- </footer>
308
-
309
- <script>
310
- // 侧边栏切换
311
- function toggleSidebar() {
312
- const sidebar = document.getElementById('sidebar');
313
- const backdrop = document.getElementById('backdrop');
314
- const isOpen = sidebar.classList.contains('open');
315
- if (isOpen) {
316
- sidebar.classList.remove('open');
317
- backdrop.classList.remove('active');
318
- } else {
319
- sidebar.classList.add('open');
320
- backdrop.classList.add('active');
321
- }
322
- }
323
- </script>
324
- <script src="./assets/js/i18n.js"></script>
325
- </body>
326
- </html>
327
-
@@ -1,314 +0,0 @@
1
- # Local Memory Stack (Qdrant + Nomic Embed)
2
-
3
- This guide documents a **lightweight local setup** for mcp-probe-kit memory tools (`search_memory`, `memorize_asset`, `read_memory_asset`, `scan_and_extract_patterns`):
4
-
5
- - **Qdrant** — vector database (port `50008`)
6
- - **Infinity (nomic-embed)** — embedding API (port `50012`), replaces Ollama for users who want a smaller footprint
7
-
8
- Both services are typically deployed with Docker Compose under a shared `docker-start` layout. Ports use the `500xx` convention to avoid conflicts.
9
-
10
- | Service | Host port | Container port | Purpose |
11
- |---------|-----------|----------------|---------|
12
- | Qdrant HTTP | `50008` | `6333` | REST API, dashboard |
13
- | Qdrant gRPC | `50009` | `6334` | gRPC API |
14
- | Nomic Embed (Infinity) | `50012` | `7997` | OpenAI-compatible embeddings |
15
-
16
- ---
17
-
18
- ## 1. Qdrant
19
-
20
- ### Service info
21
-
22
- | Item | Value |
23
- |------|-------|
24
- | Image | `qdrant/qdrant:latest` |
25
- | Container name | `qdrant` |
26
- | HTTP | `http://127.0.0.1:50008` |
27
- | gRPC | `127.0.0.1:50009` |
28
- | Data | `./data` → `/qdrant/storage` |
29
- | Snapshots | `./snapshots` → `/qdrant/snapshots` |
30
- | Auth | `QDRANT_API_KEY` in `.env` (header `api-key`) |
31
-
32
- ### `docker-compose.yml`
33
-
34
- ```yaml
35
- services:
36
- qdrant:
37
- image: qdrant/qdrant:latest
38
- container_name: qdrant
39
- restart: always
40
- env_file:
41
- - .env
42
- ports:
43
- - "50008:6333"
44
- - "50009:6334"
45
- volumes:
46
- - ./data:/qdrant/storage
47
- - ./snapshots:/qdrant/snapshots
48
- environment:
49
- - QDRANT__SERVICE__HTTP_PORT=6333
50
- - QDRANT__SERVICE__GRPC_PORT=6334
51
- - QDRANT__LOG_LEVEL=INFO
52
- - QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}
53
- healthcheck:
54
- test:
55
- - "CMD"
56
- - "bash"
57
- - "-c"
58
- - "exec 3<>/dev/tcp/127.0.0.1/6333 && printf 'GET /collections HTTP/1.1\r\nHost: localhost\r\napi-key: ${QDRANT_API_KEY}\r\nConnection: close\r\n\r\n' >&3 && IFS= read -r line <&3 && [[ \"$$line\" == *\"200\"* ]]"
59
- interval: 30s
60
- timeout: 10s
61
- retries: 5
62
- start_period: 30s
63
- ```
64
-
65
- ### `.env.example`
66
-
67
- ```bash
68
- # copy: cp .env.example .env
69
- # generate key: python -c "import secrets; print(secrets.token_urlsafe(32))"
70
-
71
- QDRANT_API_KEY=change-me-to-a-long-random-string
72
- QDRANT_URL=http://127.0.0.1:50008
73
- ```
74
-
75
- ### First deploy
76
-
77
- ```powershell
78
- cd qdrant
79
- copy .env.example .env
80
- # Edit .env — set a long random QDRANT_API_KEY
81
- docker compose up -d
82
- ```
83
-
84
- ### Verify
85
-
86
- ```bash
87
- # Health / collections (requires api-key when API_KEY is enabled)
88
- curl http://127.0.0.1:50008/collections \
89
- -H "api-key: YOUR_QDRANT_API_KEY"
90
-
91
- # Web UI (enter the same key in the dashboard)
92
- # http://127.0.0.1:50008/dashboard
93
- ```
94
-
95
- ### Common commands
96
-
97
- ```powershell
98
- docker compose up -d # start
99
- docker compose down # stop
100
- docker compose logs -f qdrant # logs
101
- docker compose restart qdrant # restart
102
- ```
103
-
104
- ### Notes
105
-
106
- - After enabling `QDRANT__SERVICE__API_KEY`, **all** REST/gRPC requests must include header `api-key`.
107
- - mcp-probe-kit sends this via `MEMORY_QDRANT_API_KEY`.
108
- - Collection `mcp_probe_memory` is created automatically on first `memorize_asset` write (Cosine distance; vector size inferred from the first embedding).
109
-
110
- ---
111
-
112
- ## 2. Nomic Embed (Infinity)
113
-
114
- Lightweight embedding server based on [Infinity](https://github.com/michaelfeil/infinity). Model: `nomic-ai/nomic-embed-text-v1.5` (768 dimensions). No Ollama required.
115
-
116
- ### Service info
117
-
118
- | Item | Value |
119
- |------|-------|
120
- | Image | `michaelf34/infinity:0.0.70` |
121
- | Container name | `nomic-embed` |
122
- | Host port | `50012` → container `7997` |
123
- | Model | `nomic-ai/nomic-embed-text-v1.5` |
124
- | Vector dim | **768** |
125
- | Engine | `torch` (CPU if no GPU) |
126
- | Auth | `INFINITY_API_KEY` → `Authorization: Bearer <key>` |
127
- | Model cache | Docker volume `hf_cache` → `/app/.cache` |
128
-
129
- ### `docker-compose.yml`
130
-
131
- ```yaml
132
- services:
133
- nomic-embed:
134
- image: michaelf34/infinity:0.0.70
135
- container_name: nomic-embed
136
- restart: unless-stopped
137
- ports:
138
- - "50012:7997"
139
- volumes:
140
- - hf_cache:/app/.cache
141
- environment:
142
- INFINITY_API_KEY: ${INFINITY_API_KEY}
143
- command:
144
- - v2
145
- - --model-id
146
- - nomic-ai/nomic-embed-text-v1.5
147
- - --revision
148
- - main
149
- - --dtype
150
- - float32
151
- - --batch-size
152
- - "8"
153
- - --engine
154
- - torch
155
- - --port
156
- - "7997"
157
- - --no-bettertransformer
158
- healthcheck:
159
- test:
160
- - "CMD"
161
- - "curl"
162
- - "-f"
163
- - "http://127.0.0.1:7997/health"
164
- interval: 30s
165
- timeout: 10s
166
- retries: 5
167
- start_period: 120s
168
-
169
- volumes:
170
- hf_cache:
171
- ```
172
-
173
- ### `.env.example`
174
-
175
- ```bash
176
- INFINITY_API_KEY=change-me-to-a-long-random-string
177
- ```
178
-
179
- ### First deploy
180
-
181
- ```powershell
182
- cd nomic-embed
183
- copy .env.example .env
184
- # Edit .env — set INFINITY_API_KEY (long random string)
185
- docker compose up -d
186
- docker logs -f nomic-embed # wait for "ready to batch requests"
187
- ```
188
-
189
- First start downloads the HuggingFace model (**~2–5 minutes** cold start).
190
-
191
- ### Verify
192
-
193
- ```bash
194
- curl http://127.0.0.1:50012/health
195
-
196
- curl http://127.0.0.1:50012/models \
197
- -H "Authorization: Bearer YOUR_INFINITY_API_KEY"
198
-
199
- # Important: path is /embeddings — NOT /v1/embeddings
200
- curl http://127.0.0.1:50012/embeddings \
201
- -H "Authorization: Bearer YOUR_INFINITY_API_KEY" \
202
- -H "Content-Type: application/json" \
203
- -d '{"model":"nomic-ai/nomic-embed-text-v1.5","input":"hello world"}'
204
- ```
205
-
206
- Response: `data[0].embedding` is a **768**-float array.
207
-
208
- Swagger: `http://127.0.0.1:50012/docs`
209
-
210
- ### Performance (CPU, indicative)
211
-
212
- | Scenario | ~Latency |
213
- |----------|----------|
214
- | Single short text (warm) | 30–50 ms |
215
- | First request | ~150 ms |
216
- | Batch 8 | ~150 ms |
217
- | Resident memory | ~1 GB |
218
-
219
- Suitable for MCP memory and occasional writes; not for high-concurrency bulk indexing.
220
-
221
- ---
222
-
223
- ## 3. mcp-probe-kit MCP configuration
224
-
225
- **Recommended:** Qdrant on `50008` + Infinity on `50012` with `openai-compatible` provider.
226
-
227
- ```json
228
- {
229
- "mcpServers": {
230
- "mcp-probe-kit": {
231
- "command": "npx",
232
- "args": ["-y", "mcp-probe-kit@latest"],
233
- "env": {
234
- "MEMORY_QDRANT_URL": "http://127.0.0.1:50008",
235
- "MEMORY_QDRANT_API_KEY": "YOUR_QDRANT_API_KEY",
236
- "MEMORY_QDRANT_COLLECTION": "mcp_probe_memory",
237
- "MEMORY_EMBEDDING_PROVIDER": "openai-compatible",
238
- "MEMORY_EMBEDDING_URL": "http://127.0.0.1:50012/embeddings",
239
- "MEMORY_EMBEDDING_MODEL": "nomic-ai/nomic-embed-text-v1.5",
240
- "MEMORY_EMBEDDING_API_KEY": "YOUR_INFINITY_API_KEY",
241
- "MEMORY_SEARCH_LIMIT": "3",
242
- "MEMORY_SUMMARY_MAX_CHARS": "280"
243
- }
244
- }
245
- }
246
- }
247
- ```
248
-
249
- Claude Code: put the same keys under `mcpServers.mcp-probe-kit.env` in `.mcp.json`.
250
-
251
- After changing env, **fully restart** your MCP client (e.g. quit and reopen Cursor).
252
-
253
- ### Environment variable reference
254
-
255
- | Variable | Required | Description |
256
- |----------|----------|-------------|
257
- | `MEMORY_QDRANT_URL` | Yes (read/write) | Qdrant base URL, e.g. `http://127.0.0.1:50008` |
258
- | `MEMORY_QDRANT_API_KEY` | If Qdrant auth enabled | Sent as `api-key` header |
259
- | `MEMORY_QDRANT_COLLECTION` | No | Default `mcp_probe_memory` |
260
- | `MEMORY_EMBEDDING_URL` | Yes (write/search) | e.g. `http://127.0.0.1:50012/embeddings` |
261
- | `MEMORY_EMBEDDING_MODEL` | Yes (write/search) | `nomic-ai/nomic-embed-text-v1.5` |
262
- | `MEMORY_EMBEDDING_PROVIDER` | No | Must be `openai-compatible` for Infinity |
263
- | `MEMORY_EMBEDDING_API_KEY` | Yes for Infinity | Bearer token = `INFINITY_API_KEY` |
264
- | `MEMORY_SEARCH_LIMIT` | No | Default `3` |
265
- | `MEMORY_SUMMARY_MAX_CHARS` | No | Default `280` |
266
-
267
- ---
268
-
269
- ## 4. End-to-end smoke test
270
-
271
- ```bash
272
- # 1) Qdrant
273
- curl -s http://127.0.0.1:50008/collections -H "api-key: YOUR_QDRANT_API_KEY"
274
-
275
- # 2) Embedding
276
- curl -s -X POST http://127.0.0.1:50012/embeddings \
277
- -H "Authorization: Bearer YOUR_INFINITY_API_KEY" \
278
- -H "Content-Type: application/json" \
279
- -d '{"model":"nomic-ai/nomic-embed-text-v1.5","input":"mcp-probe-kit test"}' \
280
- | jq '.data[0].embedding | length'
281
- # Expected: 768
282
- ```
283
-
284
- Then in the IDE, call `memorize_asset` once and `read_memory_asset` / semantic search via orchestration tools.
285
-
286
- ---
287
-
288
- ## 5. Troubleshooting
289
-
290
- | Symptom | Fix |
291
- |---------|-----|
292
- | Qdrant `401` | Set `MEMORY_QDRANT_API_KEY` to match `qdrant/.env` |
293
- | Embedding `401` | Use `Authorization: Bearer` + correct `INFINITY_API_KEY` |
294
- | Embedding `404` | URL must be `http://127.0.0.1:50012/embeddings`, not `/v1/embeddings` |
295
- | `nomic-embed` health stuck on `starting` | First model download; check `docker logs nomic-embed` |
296
- | Log `No CUDA runtime` | Normal on CPU |
297
- | Dimension mismatch in Qdrant | Collection was created with another model; delete collection or use a new `MEMORY_QDRANT_COLLECTION` name |
298
- | Memory write disabled | Ensure all three are set: `MEMORY_QDRANT_URL`, `MEMORY_EMBEDDING_URL`, `MEMORY_EMBEDDING_MODEL` |
299
-
300
- ---
301
-
302
- ## 6. Alternatives
303
-
304
- | Stack | When to use |
305
- |-------|-------------|
306
- | **Qdrant + Infinity (this guide)** | Default for local dev; lighter than Ollama |
307
- | Qdrant + Ollama | If you already run Ollama for chat models |
308
- | Qdrant + hosted OpenAI-compatible API | No local embedding container |
309
-
310
- See also [README — Optional Memory System Setup](../README.md#optional-memory-system-setup).
311
-
312
- ---
313
-
314
- **中文说明**: 同内容中文版见 [memory-local-setup.zh-CN.md](./memory-local-setup.zh-CN.md).