phinix 0.2.2 → 0.2.4
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/.qoder/repowiki/zh/content//345/274/200/345/217/221/344/270/216/346/265/213/350/257/225.md +332 -0
- package/.qoder/repowiki/zh/content//345/277/253/351/200/237/345/274/200/345/247/213.md +329 -0
- package/.qoder/repowiki/zh/content//346/217/222/344/273/266/347/263/273/347/273/237/AutoTable /346/217/222/344/273/266/AutoTable /346/217/222/344/273/266.md" +183 -0
- package/.qoder/repowiki/zh/content//346/217/222/344/273/266/347/263/273/347/273/237/AutoTable /346/217/222/344/273/266/generate-auto-table-action /345/267/245/345/205/267.md" +95 -0
- package/.qoder/repowiki/zh/content//346/217/222/344/273/266/347/263/273/347/273/237/AutoTable /346/217/222/344/273/266/generate-auto-table-column /345/267/245/345/205/267.md" +256 -0
- package/.qoder/repowiki/zh/content//346/217/222/344/273/266/347/263/273/347/273/237/AutoTable /346/217/222/344/273/266/get-auto-table-demo /345/267/245/345/205/267.md" +187 -0
- package/.qoder/repowiki/zh/content//346/217/222/344/273/266/347/263/273/347/273/237//346/217/222/344/273/266/346/236/266/346/236/204.md +159 -0
- package/.qoder/repowiki/zh/content//346/217/222/344/273/266/347/263/273/347/273/237//346/217/222/344/273/266/347/263/273/347/273/237.md +172 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//346/240/270/345/277/203/345/212/237/350/203/275.md +429 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//350/216/267/345/217/226/345/220/216/347/253/257/346/216/245/345/217/243/345/256/232/344/271/211 (get_api_definition).md" +183 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//350/216/267/345/217/226/347/273/204/344/273/266/345/210/227/350/241/250 (get_component_list).md" +171 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//350/216/267/345/217/226/347/273/204/344/273/266/345/256/232/344/271/211 (get_component_define).md" +234 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//350/216/267/345/217/226/347/273/204/344/273/266/346/226/207/346/241/243 (get_component_readme).md" +232 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//350/216/267/345/217/226/347/273/204/344/273/266/346/272/220/347/240/201 (get_component_source).md" +231 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//350/216/267/345/217/226/347/273/204/344/273/266/347/244/272/344/276/213 (get_component_demos).md" +330 -0
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/212/237/350/203/275//350/216/267/345/217/226/351/241/271/347/233/256/347/237/245/350/257/206 (get_project_knowledge).md" +293 -0
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/347/256/241/347/220/206//345/237/213/347/202/271/347/273/237/350/256/241/351/205/215/347/275/256//345/237/213/347/202/271/347/273/237/350/256/241/351/205/215/347/275/256.md +299 -0
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/347/256/241/347/220/206//345/237/213/347/202/271/347/273/237/350/256/241/351/205/215/347/275/256//346/225/260/346/215/256/344/270/212/346/212/245/347/255/226/347/225/245.md +384 -0
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/347/256/241/347/220/206//345/237/213/347/202/271/347/273/237/350/256/241/351/205/215/347/275/256//346/240/270/345/277/203/351/205/215/347/275/256/351/241/271/350/257/246/350/247/243.md +306 -0
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/347/256/241/347/220/206//345/237/213/347/202/271/347/273/237/350/256/241/351/205/215/347/275/256//350/277/275/350/270/252/346/234/272/345/210/266/345/256/236/347/216/260/345/216/237/347/220/206.md +355 -0
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/347/256/241/347/220/206//351/205/215/347/275/256/347/256/241/347/220/206.md +302 -0
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/347/256/241/347/220/206//351/241/271/347/233/256/346/240/271/347/233/256/345/275/225/351/205/215/347/275/256.md +294 -0
- package/.qoder/repowiki/zh/content//351/241/271/347/233/256/346/246/202/350/277/260.md +265 -0
- package/.qoder/repowiki/zh/content//351/241/271/347/233/256/347/273/223/346/236/204/350/246/201/346/261/202.md +189 -0
- package/.qoder/repowiki/zh/meta/repowiki-metadata.json +1 -0
- package/dist/index.js +0 -0
- package/dist/server.js +213 -20
- package/dist/server.js.map +1 -1
- package/dist/tools/componentDefine.d.ts +14 -0
- package/dist/tools/componentDefine.d.ts.map +1 -1
- package/dist/tools/componentDefine.js +87 -4
- package/dist/tools/componentDefine.js.map +1 -1
- package/dist/tools/componentDemos.d.ts.map +1 -1
- package/dist/tools/componentDemos.js +92 -6
- package/dist/tools/componentDemos.js.map +1 -1
- package/dist/tools/componentList.d.ts +16 -1
- package/dist/tools/componentList.d.ts.map +1 -1
- package/dist/tools/componentList.js +79 -4
- package/dist/tools/componentList.js.map +1 -1
- package/dist/tools/componentReadme.d.ts.map +1 -1
- package/dist/tools/componentReadme.js +4 -2
- package/dist/tools/componentReadme.js.map +1 -1
- package/dist/tools/componentSource.d.ts.map +1 -1
- package/dist/tools/componentSource.js +4 -2
- package/dist/tools/componentSource.js.map +1 -1
- package/dist/tools/fileContextWithDeps.d.ts +75 -0
- package/dist/tools/fileContextWithDeps.d.ts.map +1 -0
- package/dist/tools/fileContextWithDeps.js +277 -0
- package/dist/tools/fileContextWithDeps.js.map +1 -0
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.js +2 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/projectKnowledge.d.ts +7 -6
- package/dist/tools/projectKnowledge.d.ts.map +1 -1
- package/dist/tools/projectKnowledge.js +57 -6
- package/dist/tools/projectKnowledge.js.map +1 -1
- package/dist/tools/useAPI.d.ts +8 -1
- package/dist/tools/useAPI.d.ts.map +1 -1
- package/dist/tools/useAPI.js +37 -4
- package/dist/tools/useAPI.js.map +1 -1
- package/dist/utils/dependencyExtractor.d.ts +15 -0
- package/dist/utils/dependencyExtractor.d.ts.map +1 -0
- package/dist/utils/dependencyExtractor.js +124 -0
- package/dist/utils/dependencyExtractor.js.map +1 -0
- package/dist/utils/dependencyFilter.d.ts +33 -0
- package/dist/utils/dependencyFilter.d.ts.map +1 -0
- package/dist/utils/dependencyFilter.js +87 -0
- package/dist/utils/dependencyFilter.js.map +1 -0
- package/dist/utils/pathResolver.d.ts +13 -0
- package/dist/utils/pathResolver.d.ts.map +1 -0
- package/dist/utils/pathResolver.js +146 -0
- package/dist/utils/pathResolver.js.map +1 -0
- package/package.json +1 -1
- package/src/resources/components-info.json +0 -4
- package/src/server.js +229 -38
- package/src/tools/componentDefine.js +91 -4
- package/src/tools/componentDemos.js +103 -6
- package/src/tools/componentList.js +80 -4
- package/src/tools/componentReadme.js +8 -2
- package/src/tools/componentSource.js +8 -2
- package/src/tools/fileContextWithDeps.js +338 -0
- package/src/tools/index.js +7 -7
- package/src/tools/projectKnowledge.js +60 -6
- package/src/tools/useAPI.js +37 -4
- package/src/utils/dependencyExtractor.js +159 -0
- package/src/utils/dependencyFilter.js +103 -0
- package/src/utils/pathResolver.js +165 -0
- package/test-absolute-path.js +0 -0
- package/test-baseurl-path.js +0 -0
package/.qoder/repowiki/zh/content//345/274/200/345/217/221/344/270/216/346/265/213/350/257/225.md
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
# 开发与测试
|
|
2
|
+
|
|
3
|
+
<cite>
|
|
4
|
+
**本文引用的文件**
|
|
5
|
+
- [package.json](file://package.json)
|
|
6
|
+
- [README.md](file://README.md)
|
|
7
|
+
- [test-mcp.sh](file://test-mcp.sh)
|
|
8
|
+
- [quick-test.js](file://quick-test.js)
|
|
9
|
+
- [debug-client.js](file://debug-client.js)
|
|
10
|
+
- [src/index.js](file://src/index.js)
|
|
11
|
+
- [src/server.js](file://src/server.js)
|
|
12
|
+
</cite>
|
|
13
|
+
|
|
14
|
+
## 目录
|
|
15
|
+
1. [简介](#简介)
|
|
16
|
+
2. [项目结构](#项目结构)
|
|
17
|
+
3. [核心组件](#核心组件)
|
|
18
|
+
4. [架构总览](#架构总览)
|
|
19
|
+
5. [详细组件分析](#详细组件分析)
|
|
20
|
+
6. [依赖关系分析](#依赖关系分析)
|
|
21
|
+
7. [性能考虑](#性能考虑)
|
|
22
|
+
8. [故障排查指南](#故障排查指南)
|
|
23
|
+
9. [结论](#结论)
|
|
24
|
+
10. [附录](#附录)
|
|
25
|
+
|
|
26
|
+
## 简介
|
|
27
|
+
本指南聚焦于本仓库的开发与测试流程,围绕以下目标展开:
|
|
28
|
+
- 解释如何使用 npm run dev 进入开发模式,以便在代码变更时自动重启服务。
|
|
29
|
+
- 详解三类测试脚本:test-mcp.sh(通过 STDIO 直连 MCP 服务器进行协议层测试)、quick-test.js(快速验证核心工具链路与返回结构)、debug-client.js(功能更全面的调试客户端,可列出工具、调用多个工具进行端到端验证)。
|
|
30
|
+
- 说明各脚本的预期输出与行为,帮助开发者快速定位问题。
|
|
31
|
+
|
|
32
|
+
## 项目结构
|
|
33
|
+
该仓库采用“入口文件 -> 服务器实现 -> 工具注册”的分层结构:
|
|
34
|
+
- 入口文件负责启动服务器模块。
|
|
35
|
+
- 服务器模块完成 MCP 服务初始化、能力声明、工具注册、插件扫描与连接 STDIO 传输。
|
|
36
|
+
- 测试脚本通过 STDIO 与服务器交互,模拟 MCP 客户端行为。
|
|
37
|
+
|
|
38
|
+
```mermaid
|
|
39
|
+
graph TB
|
|
40
|
+
A["src/index.js<br/>入口"] --> B["src/server.js<br/>MCP 服务器实现"]
|
|
41
|
+
B --> C["STDIO 传输<br/>StdioServerTransport"]
|
|
42
|
+
B --> D["工具注册<br/>get_project_knowledge / get_component_* / get_api_definition"]
|
|
43
|
+
B --> E["插件扫描<br/>src/plugins/*"]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
图表来源
|
|
47
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
48
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
49
|
+
|
|
50
|
+
章节来源
|
|
51
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
52
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
53
|
+
|
|
54
|
+
## 核心组件
|
|
55
|
+
- 开发模式脚本
|
|
56
|
+
- npm run dev:使用 tsx --watch 监听 src/index.js 并在文件变化时自动重启,便于本地开发调试。
|
|
57
|
+
- MCP 服务器
|
|
58
|
+
- 通过 STDIO 传输与外部客户端通信,注册一组工具(项目知识、组件列表、组件定义、源码、README、示例、API 定义),并在启动时预加载项目知识。
|
|
59
|
+
- 测试客户端
|
|
60
|
+
- quick-test.js:以 MCP 客户端方式连接服务器,调用 get_component_list、get_component_details、get_api_definition 等工具,校验返回结构与边界条件。
|
|
61
|
+
- debug-client.js:列出可用工具、调用组件列表与搜索,输出结构化响应,便于端到端验证。
|
|
62
|
+
- test-mcp.sh:通过 STDIO 直接发送 JSON-RPC 请求,验证 tools/list 与 tools/call 的协议层行为。
|
|
63
|
+
|
|
64
|
+
章节来源
|
|
65
|
+
- [package.json](file://package.json#L10-L16)
|
|
66
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
67
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
68
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
69
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
70
|
+
|
|
71
|
+
## 架构总览
|
|
72
|
+
下图展示了从测试脚本到 MCP 服务器的交互路径,以及服务器内部的工具注册与插件扫描流程。
|
|
73
|
+
|
|
74
|
+
```mermaid
|
|
75
|
+
sequenceDiagram
|
|
76
|
+
participant Dev as "开发者终端"
|
|
77
|
+
participant Script as "测试脚本<br/>quick-test.js / debug-client.js / test-mcp.sh"
|
|
78
|
+
participant Server as "MCP 服务器<br/>src/server.js"
|
|
79
|
+
participant Tools as "工具实现<br/>get_* 工具"
|
|
80
|
+
participant Plugins as "插件扫描<br/>src/plugins/*"
|
|
81
|
+
Dev->>Script : 运行测试脚本
|
|
82
|
+
Script->>Server : 通过 STDIO 发送请求
|
|
83
|
+
Server->>Plugins : 启动时扫描并注册插件
|
|
84
|
+
Server->>Tools : 注册工具项目知识、组件系列、API
|
|
85
|
+
Script->>Server : 调用工具如 get_component_list
|
|
86
|
+
Server->>Tools : 分发调用
|
|
87
|
+
Tools-->>Server : 返回结构化结果
|
|
88
|
+
Server-->>Script : 返回 JSON-RPC 响应
|
|
89
|
+
Script-->>Dev : 输出日志与断言结果
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
图表来源
|
|
93
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
94
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
95
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
96
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
97
|
+
|
|
98
|
+
## 详细组件分析
|
|
99
|
+
|
|
100
|
+
### 开发模式:npm run dev
|
|
101
|
+
- 目标:在本地开发时,监视源码变更并自动重启服务器,提升迭代效率。
|
|
102
|
+
- 行为要点:
|
|
103
|
+
- 使用 tsx --watch 监听 src/index.js。
|
|
104
|
+
- 当文件变化时,自动重启进程,保持服务持续可用。
|
|
105
|
+
- 使用建议:
|
|
106
|
+
- 在修改服务器逻辑、工具实现或插件后,观察控制台输出确认热重载生效。
|
|
107
|
+
- 若出现异常退出,检查控制台错误堆栈并修复后再继续。
|
|
108
|
+
|
|
109
|
+
章节来源
|
|
110
|
+
- [package.json](file://package.json#L10-L16)
|
|
111
|
+
|
|
112
|
+
### 测试脚本:test-mcp.sh(协议层测试)
|
|
113
|
+
- 目的:通过 STDIO 直接向服务器发送 JSON-RPC 请求,验证 MCP 协议与工具调用的基本通路。
|
|
114
|
+
- 关键步骤:
|
|
115
|
+
- 列出可用工具:tools/list
|
|
116
|
+
- 调用 get_component_list(limit=5)
|
|
117
|
+
- 调用 get_component_list(search="table", limit=3)
|
|
118
|
+
- 预期输出特征:
|
|
119
|
+
- 成功时返回 JSON 结构,包含工具列表与工具调用结果。
|
|
120
|
+
- 失败时返回错误对象(如方法名无效、参数不合法等)。
|
|
121
|
+
- 常见问题:
|
|
122
|
+
- 服务器未启动或 STDIO 未就绪:脚本会立即报错。
|
|
123
|
+
- 工具名拼写错误:返回方法不存在的错误。
|
|
124
|
+
- 参数缺失或类型不符:返回参数校验错误。
|
|
125
|
+
|
|
126
|
+
章节来源
|
|
127
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
128
|
+
|
|
129
|
+
### 测试脚本:quick-test.js(核心功能快速验证)
|
|
130
|
+
- 目的:以 MCP 客户端方式连接服务器,快速验证核心工具链路与返回结构,覆盖边界条件。
|
|
131
|
+
- 覆盖场景:
|
|
132
|
+
- 调用 get_component_list(limit=3)
|
|
133
|
+
- 调用 get_component_list(search="table", limit=2)
|
|
134
|
+
- 调用 get_component_details(不存在的组件):验证“未找到”语义
|
|
135
|
+
- 调用 get_component_details(存在的组件,概览与完整信息):验证文件状态、实现/定义/README/示例字段长度
|
|
136
|
+
- 调用 get_api_definition(存在与不存在的 API):验证成功与失败分支
|
|
137
|
+
- 预期输出特征:
|
|
138
|
+
- 成功时返回 data 字段,包含组件列表、文件状态、内容长度等。
|
|
139
|
+
- 失败时返回错误信息或“未找到”提示。
|
|
140
|
+
- 断言建议:
|
|
141
|
+
- 组件列表长度与 limit/search 一致。
|
|
142
|
+
- 文件状态字段存在且合理。
|
|
143
|
+
- 实现/定义/README/示例内容长度为数值。
|
|
144
|
+
- API 查询返回结构与错误提示符合预期。
|
|
145
|
+
|
|
146
|
+
```mermaid
|
|
147
|
+
sequenceDiagram
|
|
148
|
+
participant QT as "quick-test.js"
|
|
149
|
+
participant S as "MCP 服务器"
|
|
150
|
+
participant T as "工具实现"
|
|
151
|
+
QT->>S : connect()
|
|
152
|
+
QT->>S : callTool(get_component_list, {limit : 3})
|
|
153
|
+
S->>T : get_component_list({limit : 3})
|
|
154
|
+
T-->>S : {componentList}
|
|
155
|
+
S-->>QT : {data}
|
|
156
|
+
QT->>S : callTool(get_component_list, {search : "table", limit : 2})
|
|
157
|
+
S->>T : get_component_list({search : "table", limit : 2})
|
|
158
|
+
T-->>S : {componentList}
|
|
159
|
+
S-->>QT : {data}
|
|
160
|
+
QT->>S : callTool(get_component_details, {componentName : "NonExistentComponent"})
|
|
161
|
+
S->>T : get_component_details(...)
|
|
162
|
+
T-->>S : {found : false,...}
|
|
163
|
+
S-->>QT : {data}
|
|
164
|
+
QT->>S : callTool(get_component_details, {componentName : "DPHeader", includeImplementation : false})
|
|
165
|
+
S->>T : get_component_details(...)
|
|
166
|
+
T-->>S : {found : true,fileStatus,...}
|
|
167
|
+
S-->>QT : {data}
|
|
168
|
+
QT->>S : callTool(get_component_details, {componentName : "DPHeader", includeImplementation : true})
|
|
169
|
+
S->>T : get_component_details(...)
|
|
170
|
+
T-->>S : {found : true,projectRoot,fileStatus,files,...}
|
|
171
|
+
S-->>QT : {data}
|
|
172
|
+
QT->>S : callTool(get_api_definition, {url : "/api/..."})
|
|
173
|
+
S->>T : get_use_api(...)
|
|
174
|
+
T-->>S : {data}
|
|
175
|
+
S-->>QT : {data}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
图表来源
|
|
179
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
180
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
181
|
+
|
|
182
|
+
章节来源
|
|
183
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
184
|
+
|
|
185
|
+
### 测试脚本:debug-client.js(端到端调试)
|
|
186
|
+
- 目的:列出可用工具、调用组件列表与搜索,输出结构化响应,便于端到端验证。
|
|
187
|
+
- 关键步骤:
|
|
188
|
+
- 连接服务器
|
|
189
|
+
- listTools 获取工具清单
|
|
190
|
+
- 调用 get_component_list(limit=5)
|
|
191
|
+
- 调用 get_component_list(search="table")
|
|
192
|
+
- 预期输出特征:
|
|
193
|
+
- listTools 返回工具数组。
|
|
194
|
+
- 工具调用返回 data 字段,包含组件列表与计数。
|
|
195
|
+
- 使用建议:
|
|
196
|
+
- 将输出复制到编辑器中查看缩进,便于核对字段完整性。
|
|
197
|
+
- 如遇连接失败,检查服务器是否已启动且无异常退出。
|
|
198
|
+
|
|
199
|
+
```mermaid
|
|
200
|
+
sequenceDiagram
|
|
201
|
+
participant DC as "debug-client.js"
|
|
202
|
+
participant S as "MCP 服务器"
|
|
203
|
+
DC->>S : connect()
|
|
204
|
+
DC->>S : listTools()
|
|
205
|
+
S-->>DC : {tools}
|
|
206
|
+
DC->>S : callTool(get_component_list, {limit : 5})
|
|
207
|
+
S-->>DC : {data}
|
|
208
|
+
DC->>S : callTool(get_component_list, {search : "table", limit : 3})
|
|
209
|
+
S-->>DC : {data}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
图表来源
|
|
213
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
214
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
215
|
+
|
|
216
|
+
章节来源
|
|
217
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
218
|
+
|
|
219
|
+
### MCP 服务器:启动与工具注册
|
|
220
|
+
- 启动流程:
|
|
221
|
+
- 初始化 MCP 服务器实例,声明能力与描述。
|
|
222
|
+
- 包装埋点统计(analytics),随后注册工具与插件。
|
|
223
|
+
- 通过 STDIO 传输建立连接,打印可用工具列表与资源文件位置。
|
|
224
|
+
- 预加载项目知识,提升首次使用响应速度。
|
|
225
|
+
- 工具注册:
|
|
226
|
+
- 注册 get_project_knowledge、get_component_list、get_component_define、get_component_source、get_component_readme、get_component_demos、get_api_definition。
|
|
227
|
+
- 插件扫描:
|
|
228
|
+
- 启动时扫描 src/plugins/* 目录,动态导入每个插件的 registerPlugin 并执行注册。
|
|
229
|
+
|
|
230
|
+
```mermaid
|
|
231
|
+
flowchart TD
|
|
232
|
+
Start(["启动服务器"]) --> Init["初始化 MCP 服务器"]
|
|
233
|
+
Init --> Wrap["包装埋点统计"]
|
|
234
|
+
Wrap --> RegisterTools["注册内置工具"]
|
|
235
|
+
RegisterTools --> ScanPlugins["扫描插件目录"]
|
|
236
|
+
ScanPlugins --> ImportPlugin["导入插件入口"]
|
|
237
|
+
ImportPlugin --> CallRegister["调用 registerPlugin(server)"]
|
|
238
|
+
CallRegister --> Connect["建立 STDIO 连接"]
|
|
239
|
+
Connect --> Preload["预加载项目知识"]
|
|
240
|
+
Preload --> Ready(["服务就绪"])
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
图表来源
|
|
244
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
245
|
+
|
|
246
|
+
章节来源
|
|
247
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
248
|
+
|
|
249
|
+
## 依赖关系分析
|
|
250
|
+
- 开发与运行时依赖
|
|
251
|
+
- @modelcontextprotocol/sdk:提供 MCP 客户端与服务器、STDIO 传输、工具注册与调用能力。
|
|
252
|
+
- tsx:开发模式下监听并运行 TypeScript/JS 文件。
|
|
253
|
+
- zod:用于工具参数的 Schema 校验。
|
|
254
|
+
- 测试脚本与服务器的耦合点
|
|
255
|
+
- quick-test.js 与 debug-client.js 通过 STDIO 与服务器交互,依赖服务器工具注册与 STDIO 传输。
|
|
256
|
+
- test-mcp.sh 直接向服务器发送 JSON-RPC 请求,依赖服务器对 tools/list 与 tools/call 的实现。
|
|
257
|
+
|
|
258
|
+
```mermaid
|
|
259
|
+
graph LR
|
|
260
|
+
Pkg["package.json<br/>scripts & deps"] --> Dev["npm run dev"]
|
|
261
|
+
Dev --> TSX["tsx --watch"]
|
|
262
|
+
TSX --> Entry["src/index.js"]
|
|
263
|
+
Entry --> Server["src/server.js"]
|
|
264
|
+
QT["quick-test.js"] --> Server
|
|
265
|
+
DC["debug-client.js"] --> Server
|
|
266
|
+
SH["test-mcp.sh"] --> Server
|
|
267
|
+
SDK["@modelcontextprotocol/sdk"] --> Server
|
|
268
|
+
Zod["zod"] --> Server
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
图表来源
|
|
272
|
+
- [package.json](file://package.json#L10-L16)
|
|
273
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
274
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
275
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
276
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
277
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
278
|
+
|
|
279
|
+
章节来源
|
|
280
|
+
- [package.json](file://package.json#L10-L16)
|
|
281
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
282
|
+
|
|
283
|
+
## 性能考虑
|
|
284
|
+
- 热重载与开发效率
|
|
285
|
+
- 使用 npm run dev 时,tsx --watch 会在文件变更后重启进程。建议在大型改动后进行全量测试,避免频繁小改导致的多次重启。
|
|
286
|
+
- 服务器预加载
|
|
287
|
+
- 服务器启动时预加载项目知识,有助于减少首次调用延迟;若项目知识文件较大,可关注启动时间。
|
|
288
|
+
- 工具调用的返回大小
|
|
289
|
+
- 某些工具(如源码、README、示例)可能返回较长文本,建议在测试中使用合理的 maxContentLength/limit 参数,避免输出过大影响可读性。
|
|
290
|
+
|
|
291
|
+
## 故障排查指南
|
|
292
|
+
- 服务器未启动或无法连接
|
|
293
|
+
- 现象:测试脚本立即报错或无响应。
|
|
294
|
+
- 排查:确认 npm run dev 已启动,控制台显示“MCP Server started on stdio”与“Available tools”等日志。
|
|
295
|
+
- 工具名错误
|
|
296
|
+
- 现象:返回“方法不存在”或“工具未找到”。
|
|
297
|
+
- 排查:核对工具名与 README 中的工具清单一致。
|
|
298
|
+
- 参数不合法
|
|
299
|
+
- 现象:返回参数校验错误或空数据。
|
|
300
|
+
- 排查:对照 README 中的参数说明,确保必填项与类型正确。
|
|
301
|
+
- 项目知识或组件信息缺失
|
|
302
|
+
- 现象:get_project_knowledge 或组件相关工具返回异常。
|
|
303
|
+
- 排查:确认 src/resources/project-knowledge.md 与 src/resources/components-info.json 存在且内容完整。
|
|
304
|
+
- 插件未生效
|
|
305
|
+
- 现象:期望的工具未出现在工具列表。
|
|
306
|
+
- 排查:确认插件目录结构与 registerPlugin 导出正确,服务器启动日志中应显示“注册插件: ...”。
|
|
307
|
+
|
|
308
|
+
章节来源
|
|
309
|
+
- [README.md](file://README.md#L297-L343)
|
|
310
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
311
|
+
|
|
312
|
+
## 结论
|
|
313
|
+
- 开发阶段优先使用 npm run dev,结合 quick-test.js 与 debug-client.js 进行快速验证。
|
|
314
|
+
- 协议层测试可使用 test-mcp.sh,确保 STDIO 与 JSON-RPC 的基本通路正常。
|
|
315
|
+
- 服务器启动时会预加载项目知识并注册工具与插件,确保首次调用的稳定性。
|
|
316
|
+
- 遇到问题时,依据脚本输出与服务器日志进行逐项排查,优先确认服务器状态与工具清单。
|
|
317
|
+
|
|
318
|
+
## 附录
|
|
319
|
+
- 常用命令
|
|
320
|
+
- 开发模式:npm run dev
|
|
321
|
+
- 快速测试:node quick-test.js
|
|
322
|
+
- 端到端调试:node debug-client.js
|
|
323
|
+
- 协议层测试:./test-mcp.sh
|
|
324
|
+
- 参考文档
|
|
325
|
+
- README 中的“开发和测试”、“MCP 工具说明”、“项目结构要求”等章节提供了工具参数与预期行为的详细说明。
|
|
326
|
+
|
|
327
|
+
章节来源
|
|
328
|
+
- [README.md](file://README.md#L297-L343)
|
|
329
|
+
- [package.json](file://package.json#L10-L16)
|
|
330
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
331
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
332
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# 快速开始
|
|
2
|
+
|
|
3
|
+
<cite>
|
|
4
|
+
**本文引用的文件**
|
|
5
|
+
- [README.md](file://README.md)
|
|
6
|
+
- [package.json](file://package.json)
|
|
7
|
+
- [src/index.js](file://src/index.js)
|
|
8
|
+
- [src/server.js](file://src/server.js)
|
|
9
|
+
- [src/config.js](file://src/config.js)
|
|
10
|
+
- [src/tools/index.js](file://src/tools/index.js)
|
|
11
|
+
- [src/tools/componentList.js](file://src/tools/componentList.js)
|
|
12
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json)
|
|
13
|
+
- [mcp-config.json](file://mcp-config.json)
|
|
14
|
+
- [debug-client.js](file://debug-client.js)
|
|
15
|
+
- [quick-test.js](file://quick-test.js)
|
|
16
|
+
- [test-mcp.sh](file://test-mcp.sh)
|
|
17
|
+
</cite>
|
|
18
|
+
|
|
19
|
+
## 目录
|
|
20
|
+
1. [简介](#简介)
|
|
21
|
+
2. [项目结构](#项目结构)
|
|
22
|
+
3. [核心组件](#核心组件)
|
|
23
|
+
4. [架构总览](#架构总览)
|
|
24
|
+
5. [详细组件分析](#详细组件分析)
|
|
25
|
+
6. [依赖关系分析](#依赖关系分析)
|
|
26
|
+
7. [性能考虑](#性能考虑)
|
|
27
|
+
8. [故障排查指南](#故障排查指南)
|
|
28
|
+
9. [结论](#结论)
|
|
29
|
+
10. [附录](#附录)
|
|
30
|
+
|
|
31
|
+
## 简介
|
|
32
|
+
本指南面向首次使用者,帮助你在本地快速搭建并运行 phinpilot MCP 服务器,完成以下目标:
|
|
33
|
+
- 明确环境要求(Node.js 18+)
|
|
34
|
+
- 安装依赖并启动服务器(两种方式)
|
|
35
|
+
- 在 Cursor IDE 中配置 MCP 服务器(提供 JSON 示例)
|
|
36
|
+
- 解释 mcp-config.json 的结构
|
|
37
|
+
- 使用 debug-client.js 验证服务器是否正常工作,并调用核心工具(如 get_component_list)
|
|
38
|
+
|
|
39
|
+
## 项目结构
|
|
40
|
+
phinpilot 是一个基于 Model Context Protocol (MCP) 的服务器,通过 STDIO 传输与客户端通信。其核心入口、配置、工具注册与资源文件分布如下:
|
|
41
|
+
- 入口文件:src/index.js
|
|
42
|
+
- 服务器主程序:src/server.js
|
|
43
|
+
- 配置解析:src/config.js(解析项目根目录、埋点配置)
|
|
44
|
+
- 工具注册:src/tools/index.js(导出各工具的 Schema 与实现)
|
|
45
|
+
- 资源文件:src/resources/components-info.json(组件清单)、src/resources/project-knowledge.md(项目知识)
|
|
46
|
+
- MCP 配置:mcp-config.json(Cursor/MCP 客户端配置)
|
|
47
|
+
- 调试与测试:debug-client.js、quick-test.js、test-mcp.sh
|
|
48
|
+
|
|
49
|
+
```mermaid
|
|
50
|
+
graph TB
|
|
51
|
+
A["src/index.js<br/>入口"] --> B["src/server.js<br/>服务器主程序"]
|
|
52
|
+
B --> C["src/config.js<br/>配置解析"]
|
|
53
|
+
B --> D["src/tools/index.js<br/>工具注册"]
|
|
54
|
+
D --> E["src/tools/componentList.js<br/>组件列表工具"]
|
|
55
|
+
B --> F["src/resources/components-info.json<br/>组件清单"]
|
|
56
|
+
G["mcp-config.json<br/>MCP 客户端配置"] --> B
|
|
57
|
+
H["debug-client.js<br/>调试客户端"] --> B
|
|
58
|
+
I["quick-test.js<br/>快速测试"] --> B
|
|
59
|
+
J["test-mcp.sh<br/>STDIO 测试脚本"] --> B
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
图表来源
|
|
63
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
64
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
65
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
66
|
+
- [src/tools/index.js](file://src/tools/index.js#L1-L47)
|
|
67
|
+
- [src/tools/componentList.js](file://src/tools/componentList.js#L1-L89)
|
|
68
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
69
|
+
- [mcp-config.json](file://mcp-config.json#L1-L10)
|
|
70
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
71
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
72
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
73
|
+
|
|
74
|
+
章节来源
|
|
75
|
+
- [README.md](file://README.md#L45-L71)
|
|
76
|
+
- [package.json](file://package.json#L1-L47)
|
|
77
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
78
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
79
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
80
|
+
- [src/tools/index.js](file://src/tools/index.js#L1-L47)
|
|
81
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
82
|
+
- [mcp-config.json](file://mcp-config.json#L1-L10)
|
|
83
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
84
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
85
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
86
|
+
|
|
87
|
+
## 核心组件
|
|
88
|
+
- 入口与启动
|
|
89
|
+
- 入口文件:src/index.js 导入并启动服务器主程序。
|
|
90
|
+
- 启动方式一:npm start(使用 tsx 直接运行 src/index.js)
|
|
91
|
+
- 启动方式二:通过命令行参数或环境变量指定项目根目录
|
|
92
|
+
- 服务器主程序
|
|
93
|
+
- 创建 MCP 服务器实例,注册埋点统计中间件,再注册各类工具(如 get_component_list、get_project_knowledge 等)。
|
|
94
|
+
- 启动 STDIO 传输,打印可用工具列表与资源文件位置。
|
|
95
|
+
- 配置解析
|
|
96
|
+
- 优先级:命令行参数 > 环境变量 > 当前工作目录
|
|
97
|
+
- 埋点配置支持开关、上报地址、批量大小、重试次数等
|
|
98
|
+
- 工具注册
|
|
99
|
+
- 通过 src/tools/index.js 统一导出各工具的 Schema 与实现,服务器逐一注册
|
|
100
|
+
- 资源文件
|
|
101
|
+
- 组件清单:src/resources/components-info.json(包含组件名称与使用场景)
|
|
102
|
+
- 项目知识:src/resources/project-knowledge.md(项目背景知识与开发规范)
|
|
103
|
+
|
|
104
|
+
章节来源
|
|
105
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
106
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
107
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
108
|
+
- [src/tools/index.js](file://src/tools/index.js#L1-L47)
|
|
109
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
110
|
+
|
|
111
|
+
## 架构总览
|
|
112
|
+
下面的序列图展示了从启动到工具调用的关键流程,包括 STDIO 传输、工具注册、资源加载与调试客户端验证。
|
|
113
|
+
|
|
114
|
+
```mermaid
|
|
115
|
+
sequenceDiagram
|
|
116
|
+
participant CLI as "终端"
|
|
117
|
+
participant NPM as "npm 脚本"
|
|
118
|
+
participant Entry as "src/index.js"
|
|
119
|
+
participant Server as "src/server.js"
|
|
120
|
+
participant Config as "src/config.js"
|
|
121
|
+
participant Tools as "src/tools/index.js"
|
|
122
|
+
participant Res as "src/resources/components-info.json"
|
|
123
|
+
participant Debug as "debug-client.js"
|
|
124
|
+
CLI->>NPM : 运行 npm start
|
|
125
|
+
NPM->>Entry : 启动入口
|
|
126
|
+
Entry->>Server : 导入服务器主程序
|
|
127
|
+
Server->>Config : 解析项目根目录
|
|
128
|
+
Server->>Tools : 注册埋点与工具
|
|
129
|
+
Server->>Res : 加载组件清单
|
|
130
|
+
Server-->>CLI : 输出可用工具与资源路径
|
|
131
|
+
CLI->>Debug : 运行调试客户端
|
|
132
|
+
Debug->>Server : STDIO 连接
|
|
133
|
+
Debug->>Server : 列出工具
|
|
134
|
+
Debug->>Server : 调用 get_component_list
|
|
135
|
+
Server-->>Debug : 返回组件列表
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
图表来源
|
|
139
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
140
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
141
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
142
|
+
- [src/tools/index.js](file://src/tools/index.js#L1-L47)
|
|
143
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
144
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
145
|
+
|
|
146
|
+
## 详细组件分析
|
|
147
|
+
|
|
148
|
+
### 启动与运行
|
|
149
|
+
- 环境要求
|
|
150
|
+
- Node.js 18+(引擎声明)
|
|
151
|
+
- 安装依赖
|
|
152
|
+
- 使用 npm install 安装项目依赖
|
|
153
|
+
- 启动服务器
|
|
154
|
+
- 方式一:直接启动(使用当前目录作为项目根目录)
|
|
155
|
+
- npm start(脚本指向 tsx src/index.js)
|
|
156
|
+
- 方式二:指定项目根目录
|
|
157
|
+
- 通过环境变量 PROJECT_ROOT 指定
|
|
158
|
+
- 或通过命令行参数(支持 --project-root=路径 或位置参数)
|
|
159
|
+
- 资源文件要求
|
|
160
|
+
- 组件清单文件:src/resources/components-info.json
|
|
161
|
+
- 项目知识文件:src/resources/project-knowledge.md(服务器会预加载)
|
|
162
|
+
|
|
163
|
+
章节来源
|
|
164
|
+
- [README.md](file://README.md#L45-L71)
|
|
165
|
+
- [package.json](file://package.json#L1-L47)
|
|
166
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
167
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
168
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
169
|
+
|
|
170
|
+
### Cursor IDE 中配置 MCP 服务器
|
|
171
|
+
- 在 Cursor 的配置文件中添加 mcpServers,键名为 phinix
|
|
172
|
+
- command 指向 node,args 指向 src/index.js
|
|
173
|
+
- cwd 设置为项目根目录
|
|
174
|
+
- env 可配置埋点相关参数(可选)
|
|
175
|
+
- mcp-config.json 提供了一个最小化示例,可据此在 Cursor 中调整
|
|
176
|
+
|
|
177
|
+
章节来源
|
|
178
|
+
- [README.md](file://README.md#L72-L94)
|
|
179
|
+
- [mcp-config.json](file://mcp-config.json#L1-L10)
|
|
180
|
+
|
|
181
|
+
### mcp-config.json 结构说明
|
|
182
|
+
- mcpServers:MCP 服务器集合
|
|
183
|
+
- 键名:服务器标识(如 phinix)
|
|
184
|
+
- command:执行命令(如 node)
|
|
185
|
+
- args:命令参数(如 ["src/index.js"])
|
|
186
|
+
- cwd:工作目录(项目根目录)
|
|
187
|
+
- env:环境变量(可选)
|
|
188
|
+
|
|
189
|
+
章节来源
|
|
190
|
+
- [mcp-config.json](file://mcp-config.json#L1-L10)
|
|
191
|
+
|
|
192
|
+
### 使用 debug-client.js 验证服务器
|
|
193
|
+
- debug-client.js 通过 STDIO 连接 MCP 服务器,执行以下步骤:
|
|
194
|
+
- 连接服务器
|
|
195
|
+
- 列出工具
|
|
196
|
+
- 调用 get_component_list(限制返回数量)
|
|
197
|
+
- 调用 get_component_list(带搜索关键词)
|
|
198
|
+
- 你可以直接运行该脚本验证服务器是否正常工作
|
|
199
|
+
|
|
200
|
+
章节来源
|
|
201
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
202
|
+
- [README.md](file://README.md#L299-L309)
|
|
203
|
+
|
|
204
|
+
### 核心工具调用流程(以 get_component_list 为例)
|
|
205
|
+
- 服务器在启动时注册工具,组件列表工具负责读取组件清单文件并返回组件列表
|
|
206
|
+
- 调用链路:客户端 -> STDIO -> 服务器 -> 工具实现 -> 返回结果
|
|
207
|
+
|
|
208
|
+
```mermaid
|
|
209
|
+
sequenceDiagram
|
|
210
|
+
participant Client as "客户端"
|
|
211
|
+
participant STDIO as "STDIO 传输"
|
|
212
|
+
participant Server as "服务器"
|
|
213
|
+
participant Tool as "组件列表工具"
|
|
214
|
+
participant Res as "组件清单文件"
|
|
215
|
+
Client->>STDIO : 调用 get_component_list
|
|
216
|
+
STDIO->>Server : 转发工具调用
|
|
217
|
+
Server->>Tool : 执行 getComponentList
|
|
218
|
+
Tool->>Res : 读取组件清单
|
|
219
|
+
Res-->>Tool : 返回清单数据
|
|
220
|
+
Tool-->>Server : 组装响应
|
|
221
|
+
Server-->>Client : 返回组件列表
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
图表来源
|
|
225
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
226
|
+
- [src/tools/index.js](file://src/tools/index.js#L1-L47)
|
|
227
|
+
- [src/tools/componentList.js](file://src/tools/componentList.js#L1-L89)
|
|
228
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
229
|
+
|
|
230
|
+
## 依赖关系分析
|
|
231
|
+
- 入口依赖
|
|
232
|
+
- src/index.js 仅导入 src/server.js
|
|
233
|
+
- 服务器依赖
|
|
234
|
+
- src/server.js 依赖 src/config.js(解析项目根目录与埋点配置)、src/tools/index.js(工具注册)、STDIO 传输
|
|
235
|
+
- 工具依赖
|
|
236
|
+
- src/tools/index.js 统一导出各工具的 Schema 与实现
|
|
237
|
+
- 组件列表工具依赖 src/resources/components-info.json
|
|
238
|
+
- 配置依赖
|
|
239
|
+
- src/config.js 从命令行参数、环境变量与当前工作目录解析项目根目录
|
|
240
|
+
- MCP 客户端依赖
|
|
241
|
+
- debug-client.js、quick-test.js、test-mcp.sh 通过 STDIO 与服务器交互
|
|
242
|
+
|
|
243
|
+
```mermaid
|
|
244
|
+
graph LR
|
|
245
|
+
Entry["src/index.js"] --> Server["src/server.js"]
|
|
246
|
+
Server --> Config["src/config.js"]
|
|
247
|
+
Server --> Tools["src/tools/index.js"]
|
|
248
|
+
Tools --> CompList["src/tools/componentList.js"]
|
|
249
|
+
CompList --> Res["src/resources/components-info.json"]
|
|
250
|
+
Debug["debug-client.js"] --> Server
|
|
251
|
+
Quick["quick-test.js"] --> Server
|
|
252
|
+
Sh["test-mcp.sh"] --> Server
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
图表来源
|
|
256
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
257
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
258
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
259
|
+
- [src/tools/index.js](file://src/tools/index.js#L1-L47)
|
|
260
|
+
- [src/tools/componentList.js](file://src/tools/componentList.js#L1-L89)
|
|
261
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
262
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
263
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
264
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
265
|
+
|
|
266
|
+
章节来源
|
|
267
|
+
- [src/index.js](file://src/index.js#L1-L5)
|
|
268
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
269
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
270
|
+
- [src/tools/index.js](file://src/tools/index.js#L1-L47)
|
|
271
|
+
- [src/tools/componentList.js](file://src/tools/componentList.js#L1-L89)
|
|
272
|
+
- [src/resources/components-info.json](file://src/resources/components-info.json#L1-L200)
|
|
273
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
274
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
275
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
276
|
+
|
|
277
|
+
## 性能考虑
|
|
278
|
+
- 组件清单文件加载:组件列表工具会尝试多个可能路径并缓存首个成功加载的路径,避免重复 IO
|
|
279
|
+
- 预加载项目知识:服务器启动时预加载项目知识,确保首次使用时响应更快
|
|
280
|
+
- 埋点配置:批量上报大小与重试次数可调,建议根据网络状况与吞吐量进行优化
|
|
281
|
+
|
|
282
|
+
章节来源
|
|
283
|
+
- [src/server.js](file://src/server.js#L1-L139)
|
|
284
|
+
- [src/tools/componentList.js](file://src/tools/componentList.js#L1-L89)
|
|
285
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
286
|
+
|
|
287
|
+
## 故障排查指南
|
|
288
|
+
- 无法找到组件清单文件
|
|
289
|
+
- 现象:组件列表工具返回“找不到组件信息文件”
|
|
290
|
+
- 处理:确认 src/resources/components-info.json 存在且可读
|
|
291
|
+
- 项目根目录设置错误
|
|
292
|
+
- 现象:服务器无法定位组件文件或资源文件
|
|
293
|
+
- 处理:通过环境变量 PROJECT_ROOT 或命令行参数指定正确的项目根目录
|
|
294
|
+
- MCP 连接失败
|
|
295
|
+
- 现象:调试客户端或测试脚本报错
|
|
296
|
+
- 处理:检查 npm start 是否正常启动;确认 STDIO 传输正常;使用 test-mcp.sh 验证
|
|
297
|
+
- Cursor 配置无效
|
|
298
|
+
- 现象:Cursor 无法连接 MCP 服务器
|
|
299
|
+
- 处理:核对 mcp-config.json 的 command、args、cwd、env 字段;确保路径正确
|
|
300
|
+
|
|
301
|
+
章节来源
|
|
302
|
+
- [src/tools/componentList.js](file://src/tools/componentList.js#L1-L89)
|
|
303
|
+
- [src/config.js](file://src/config.js#L1-L54)
|
|
304
|
+
- [debug-client.js](file://debug-client.js#L1-L56)
|
|
305
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|
|
306
|
+
- [README.md](file://README.md#L329-L343)
|
|
307
|
+
|
|
308
|
+
## 结论
|
|
309
|
+
通过本指南,你已经完成了:
|
|
310
|
+
- 环境准备与依赖安装
|
|
311
|
+
- 两种启动方式(直接启动与指定项目根目录)
|
|
312
|
+
- Cursor 中 MCP 服务器的配置方法
|
|
313
|
+
- 使用 debug-client.js 验证服务器并调用核心工具
|
|
314
|
+
- 了解服务器架构、工具注册与资源文件要求
|
|
315
|
+
|
|
316
|
+
下一步建议:
|
|
317
|
+
- 准备好 src/resources/components-info.json 与 src/resources/project-knowledge.md
|
|
318
|
+
- 在 Cursor 中打开 MCP 服务器并调用 get_project_knowledge 以获取项目规范
|
|
319
|
+
- 使用 get_component_list 与其它工具探索组件生态
|
|
320
|
+
|
|
321
|
+
## 附录
|
|
322
|
+
- 快速测试脚本
|
|
323
|
+
- quick-test.js:提供更全面的工具测试流程(组件列表、搜索、组件详情、API 定义等)
|
|
324
|
+
- STDIO 测试脚本
|
|
325
|
+
- test-mcp.sh:通过 STDIO 发送 JSON-RPC 请求,验证工具列表与调用
|
|
326
|
+
|
|
327
|
+
章节来源
|
|
328
|
+
- [quick-test.js](file://quick-test.js#L1-L142)
|
|
329
|
+
- [test-mcp.sh](file://test-mcp.sh#L1-L13)
|