jui-tools-mcp-server 2.5.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 (172) hide show
  1. package/.github/workflows/test.yml +35 -0
  2. package/README.md +148 -0
  3. package/data/attribute_definitions.json +4248 -0
  4. package/data/attribute_semantics.json +137 -0
  5. package/data/binding_semantics.json +115 -0
  6. package/data/component_metadata.json +769 -0
  7. package/data/coverage.json +114 -0
  8. package/data/screen_identity.json +350 -0
  9. package/dist/cli_runner.d.ts +10 -0
  10. package/dist/cli_runner.js +33 -0
  11. package/dist/config.d.ts +19 -0
  12. package/dist/config.js +67 -0
  13. package/dist/data/component_metadata.d.ts +30 -0
  14. package/dist/data/component_metadata.js +498 -0
  15. package/dist/data/derived.d.ts +198 -0
  16. package/dist/data/derived.js +293 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +130 -0
  19. package/dist/spec_loader.d.ts +110 -0
  20. package/dist/spec_loader.js +445 -0
  21. package/dist/tools/api/list_api_models.d.ts +10 -0
  22. package/dist/tools/api/list_api_models.js +37 -0
  23. package/dist/tools/api/list_api_specs.d.ts +19 -0
  24. package/dist/tools/api/list_api_specs.js +42 -0
  25. package/dist/tools/api/preview_api_model_sync.d.ts +11 -0
  26. package/dist/tools/api/preview_api_model_sync.js +34 -0
  27. package/dist/tools/context/get_project_config.d.ts +3 -0
  28. package/dist/tools/context/get_project_config.js +20 -0
  29. package/dist/tools/context/list_component_specs.d.ts +3 -0
  30. package/dist/tools/context/list_component_specs.js +35 -0
  31. package/dist/tools/context/list_layouts.d.ts +3 -0
  32. package/dist/tools/context/list_layouts.js +118 -0
  33. package/dist/tools/context/list_screen_specs.d.ts +3 -0
  34. package/dist/tools/context/list_screen_specs.js +37 -0
  35. package/dist/tools/context/read_layout_file.d.ts +3 -0
  36. package/dist/tools/context/read_layout_file.js +25 -0
  37. package/dist/tools/context/read_spec_file.d.ts +3 -0
  38. package/dist/tools/context/read_spec_file.js +27 -0
  39. package/dist/tools/doc/doc_generate_component.d.ts +3 -0
  40. package/dist/tools/doc/doc_generate_component.js +38 -0
  41. package/dist/tools/doc/doc_generate_html.d.ts +3 -0
  42. package/dist/tools/doc/doc_generate_html.js +46 -0
  43. package/dist/tools/doc/doc_generate_spec.d.ts +3 -0
  44. package/dist/tools/doc/doc_generate_spec.js +38 -0
  45. package/dist/tools/doc/doc_init_component.d.ts +3 -0
  46. package/dist/tools/doc/doc_init_component.js +30 -0
  47. package/dist/tools/doc/doc_init_spec.d.ts +3 -0
  48. package/dist/tools/doc/doc_init_spec.js +33 -0
  49. package/dist/tools/doc/doc_rules_init.d.ts +3 -0
  50. package/dist/tools/doc/doc_rules_init.js +25 -0
  51. package/dist/tools/doc/doc_rules_show.d.ts +3 -0
  52. package/dist/tools/doc/doc_rules_show.js +21 -0
  53. package/dist/tools/doc/doc_validate_component.d.ts +3 -0
  54. package/dist/tools/doc/doc_validate_component.js +39 -0
  55. package/dist/tools/doc/doc_validate_spec.d.ts +3 -0
  56. package/dist/tools/doc/doc_validate_spec.js +40 -0
  57. package/dist/tools/jui/jui_build.d.ts +3 -0
  58. package/dist/tools/jui/jui_build.js +31 -0
  59. package/dist/tools/jui/jui_generate_converter.d.ts +3 -0
  60. package/dist/tools/jui/jui_generate_converter.js +43 -0
  61. package/dist/tools/jui/jui_generate_project.d.ts +3 -0
  62. package/dist/tools/jui/jui_generate_project.js +43 -0
  63. package/dist/tools/jui/jui_generate_screen.d.ts +3 -0
  64. package/dist/tools/jui/jui_generate_screen.js +22 -0
  65. package/dist/tools/jui/jui_init.d.ts +3 -0
  66. package/dist/tools/jui/jui_init.js +42 -0
  67. package/dist/tools/jui/jui_migrate_layouts.d.ts +3 -0
  68. package/dist/tools/jui/jui_migrate_layouts.js +25 -0
  69. package/dist/tools/jui/jui_sync_tool.d.ts +3 -0
  70. package/dist/tools/jui/jui_sync_tool.js +33 -0
  71. package/dist/tools/jui/jui_verify.d.ts +3 -0
  72. package/dist/tools/jui/jui_verify.js +43 -0
  73. package/dist/tools/spec/get_binding_rules.d.ts +3 -0
  74. package/dist/tools/spec/get_binding_rules.js +8 -0
  75. package/dist/tools/spec/get_data_source.d.ts +3 -0
  76. package/dist/tools/spec/get_data_source.js +41 -0
  77. package/dist/tools/spec/get_modifier_order.d.ts +3 -0
  78. package/dist/tools/spec/get_modifier_order.js +14 -0
  79. package/dist/tools/spec/get_platform_mapping.d.ts +3 -0
  80. package/dist/tools/spec/get_platform_mapping.js +20 -0
  81. package/dist/tools/spec/get_screen_identity.d.ts +3 -0
  82. package/dist/tools/spec/get_screen_identity.js +22 -0
  83. package/dist/tools/spec/lookup_attribute.d.ts +3 -0
  84. package/dist/tools/spec/lookup_attribute.js +14 -0
  85. package/dist/tools/spec/lookup_component.d.ts +3 -0
  86. package/dist/tools/spec/lookup_component.js +15 -0
  87. package/dist/tools/spec/search_components.d.ts +3 -0
  88. package/dist/tools/spec/search_components.js +14 -0
  89. package/dist/tools/test/test_artifacts_pull.d.ts +3 -0
  90. package/dist/tools/test/test_artifacts_pull.js +48 -0
  91. package/dist/tools/test/test_artifacts_status.d.ts +3 -0
  92. package/dist/tools/test/test_artifacts_status.js +28 -0
  93. package/dist/tools/test/test_generate_description.d.ts +3 -0
  94. package/dist/tools/test/test_generate_description.js +27 -0
  95. package/dist/tools/test/test_generate_flow.d.ts +3 -0
  96. package/dist/tools/test/test_generate_flow.js +29 -0
  97. package/dist/tools/test/test_generate_screen.d.ts +3 -0
  98. package/dist/tools/test/test_generate_screen.js +29 -0
  99. package/dist/tools/test/test_mock_generate.d.ts +3 -0
  100. package/dist/tools/test/test_mock_generate.js +64 -0
  101. package/dist/tools/test/test_report.d.ts +3 -0
  102. package/dist/tools/test/test_report.js +26 -0
  103. package/dist/tools/test/test_validate.d.ts +3 -0
  104. package/dist/tools/test/test_validate.js +43 -0
  105. package/docs/design.md +227 -0
  106. package/install.sh +90 -0
  107. package/package.json +24 -0
  108. package/scripts/fetch-definitions.js +101 -0
  109. package/scripts/fetch-manifest.js +60 -0
  110. package/src/cli_runner.ts +55 -0
  111. package/src/config.ts +88 -0
  112. package/src/data/derived.ts +305 -0
  113. package/src/index.ts +157 -0
  114. package/src/spec_loader.ts +591 -0
  115. package/src/tools/api/list_api_models.ts +44 -0
  116. package/src/tools/api/list_api_specs.ts +53 -0
  117. package/src/tools/api/preview_api_model_sync.ts +41 -0
  118. package/src/tools/context/get_project_config.ts +27 -0
  119. package/src/tools/context/list_component_specs.ts +44 -0
  120. package/src/tools/context/list_layouts.ts +131 -0
  121. package/src/tools/context/list_screen_specs.ts +46 -0
  122. package/src/tools/context/read_layout_file.ts +35 -0
  123. package/src/tools/context/read_spec_file.ts +38 -0
  124. package/src/tools/doc/doc_generate_component.ts +43 -0
  125. package/src/tools/doc/doc_generate_html.ts +40 -0
  126. package/src/tools/doc/doc_generate_spec.ts +43 -0
  127. package/src/tools/doc/doc_init_component.ts +32 -0
  128. package/src/tools/doc/doc_init_spec.ts +37 -0
  129. package/src/tools/doc/doc_rules_init.ts +29 -0
  130. package/src/tools/doc/doc_rules_show.ts +27 -0
  131. package/src/tools/doc/doc_validate_component.ts +47 -0
  132. package/src/tools/doc/doc_validate_spec.ts +48 -0
  133. package/src/tools/jui/jui_build.ts +31 -0
  134. package/src/tools/jui/jui_generate_converter.ts +41 -0
  135. package/src/tools/jui/jui_generate_project.ts +37 -0
  136. package/src/tools/jui/jui_generate_screen.ts +28 -0
  137. package/src/tools/jui/jui_init.ts +38 -0
  138. package/src/tools/jui/jui_migrate_layouts.ts +29 -0
  139. package/src/tools/jui/jui_sync_tool.ts +33 -0
  140. package/src/tools/jui/jui_verify.ts +43 -0
  141. package/src/tools/spec/get_binding_rules.ts +16 -0
  142. package/src/tools/spec/get_data_source.ts +53 -0
  143. package/src/tools/spec/get_modifier_order.ts +22 -0
  144. package/src/tools/spec/get_platform_mapping.ts +28 -0
  145. package/src/tools/spec/get_screen_identity.ts +31 -0
  146. package/src/tools/spec/lookup_attribute.ts +22 -0
  147. package/src/tools/spec/lookup_component.ts +23 -0
  148. package/src/tools/spec/search_components.ts +22 -0
  149. package/src/tools/test/test_artifacts_pull.ts +47 -0
  150. package/src/tools/test/test_artifacts_status.ts +34 -0
  151. package/src/tools/test/test_generate_description.ts +33 -0
  152. package/src/tools/test/test_generate_flow.ts +33 -0
  153. package/src/tools/test/test_generate_screen.ts +33 -0
  154. package/src/tools/test/test_mock_generate.ts +58 -0
  155. package/src/tools/test/test_report.ts +32 -0
  156. package/src/tools/test/test_validate.ts +43 -0
  157. package/tests/__snapshots__/derived.test.ts.snap +279 -0
  158. package/tests/bundled_snapshot.test.ts +155 -0
  159. package/tests/cli_runner.test.ts +120 -0
  160. package/tests/config.test.ts +212 -0
  161. package/tests/derived.test.ts +114 -0
  162. package/tests/helpers.ts +272 -0
  163. package/tests/setup.ts +27 -0
  164. package/tests/snapshot_completeness.test.ts +152 -0
  165. package/tests/spec_loader.test.ts +488 -0
  166. package/tests/tools_cli.test.ts +687 -0
  167. package/tests/tools_context.test.ts +274 -0
  168. package/tests/tools_spec.test.ts +225 -0
  169. package/tests/tools_test.test.ts +284 -0
  170. package/tsconfig.json +15 -0
  171. package/uninstall.sh +46 -0
  172. package/vitest.config.ts +15 -0
@@ -0,0 +1,35 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ node-version: [20, 22]
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - uses: actions/setup-node@v4
19
+ with:
20
+ node-version: ${{ matrix.node-version }}
21
+ cache: npm
22
+
23
+ # --ignore-scripts keeps CI hermetic: the postinstall hook
24
+ # (scripts/fetch-definitions.js) would otherwise overwrite the committed
25
+ # data/ snapshot with whatever is currently on the jsonui-cli main
26
+ # branch, making the snapshot-validity tests validate remote data
27
+ # instead of this commit. Tests never touch the network either way.
28
+ - name: Install dependencies
29
+ run: npm ci --ignore-scripts
30
+
31
+ - name: Type-check and build
32
+ run: npm run build
33
+
34
+ - name: Run unit tests
35
+ run: npm test
package/README.md ADDED
@@ -0,0 +1,148 @@
1
+ # jui-tools MCP Server
2
+
3
+ JsonUI プロジェクト管理用 MCP サーバー。`jui` + `jsonui-doc` CLI のラッパーとコンポーネント仕様参照を提供。
4
+
5
+ AI agent が CLI 構文を知らなくても、MCP ツール経由で JsonUI の全操作を実行可能。
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ git clone git@github.com:Tai-Kimura/jsonui-mcp-server.git /tmp/jsonui-mcp-installer
11
+ bash /tmp/jsonui-mcp-installer/install.sh
12
+ rm -rf /tmp/jsonui-mcp-installer
13
+ ```
14
+
15
+ インストール後、`~/.claude.json` に MCP サーバーが登録される。
16
+
17
+ ### プロジェクトディレクトリの設定
18
+
19
+ 環境変数でデフォルトのプロジェクトディレクトリを設定可能:
20
+
21
+ ```json
22
+ {
23
+ "mcpServers": {
24
+ "jui-tools": {
25
+ "command": "node",
26
+ "args": ["/path/to/dist/index.js"],
27
+ "env": {
28
+ "JUI_PROJECT_DIR": "/path/to/your/project"
29
+ }
30
+ }
31
+ }
32
+ }
33
+ ```
34
+
35
+ 各ツールの `project_dir` パラメータで上書きも可能。
36
+
37
+ ## Update
38
+
39
+ ```bash
40
+ bash ~/.jsonui-mcp-server/install.sh
41
+ ```
42
+
43
+ ## Uninstall
44
+
45
+ ```bash
46
+ bash ~/.jsonui-mcp-server/uninstall.sh
47
+ ```
48
+
49
+ ## Available Tools (42)
50
+
51
+ ### Group A: コンポーネント仕様参照 (8)
52
+
53
+ | Tool | Description |
54
+ |------|-------------|
55
+ | `lookup_component` | コンポーネント仕様を取得(属性、binding、プラットフォーム別詳細) |
56
+ | `lookup_attribute` | 属性定義を取得(型、binding対応、使用コンポーネント) |
57
+ | `search_components` | キーワードでコンポーネント/属性を検索 |
58
+ | `get_modifier_order` | プラットフォーム別 modifier 適用順序 |
59
+ | `get_binding_rules` | binding 構文ルール(two-way / read-only) |
60
+ | `get_platform_mapping` | プラットフォーム間の値変換マッピング |
61
+ | `get_screen_identity` | スクリーン正準定義(screen とは何か・id 導出・表示判定述語) |
62
+ | `get_data_source` | データ由来(layer / path / mtime / 鮮度)の確認 |
63
+
64
+ ### Group B: プロジェクトコンテキスト (6)
65
+
66
+ | Tool | Description |
67
+ |------|-------------|
68
+ | `get_project_config` | jui.config.json の読み取り |
69
+ | `list_screen_specs` | 画面 spec 一覧(メタデータ付き) |
70
+ | `list_component_specs` | コンポーネント spec 一覧 |
71
+ | `list_layouts` | Layout JSON ファイル一覧 |
72
+ | `read_spec_file` | spec ファイルの内容を返す |
73
+ | `read_layout_file` | Layout JSON の内容を返す |
74
+
75
+ ### Group C: jui CLI (8)
76
+
77
+ | Tool | Description | CLI |
78
+ |------|-------------|-----|
79
+ | `jui_init` | プロジェクト初期化 | `jui init` |
80
+ | `jui_generate_project` | Layout JSON + ViewModel 生成 | `jui generate project` |
81
+ | `jui_generate_screen` | 画面 spec テンプレート作成 | `jui generate screen` |
82
+ | `jui_generate_converter` | カスタムコンポーネント converter 生成 | `jui generate converter` |
83
+ | `jui_build` | 全プラットフォームビルド | `jui build` |
84
+ | `jui_verify` | Layout JSON の差分検証 | `jui verify` |
85
+ | `jui_migrate_layouts` | レイアウト移行 | `jui migrate-layouts` |
86
+ | `jui_sync_tool` | ホームインストールのツールをプロジェクトローカルへ同期(extensions/ 保護) | `jui sync_tool` |
87
+
88
+ ### Group D: jsonui-doc CLI (9)
89
+
90
+ | Tool | Description | CLI |
91
+ |------|-------------|-----|
92
+ | `doc_init_spec` | 画面 spec テンプレート作成 | `jsonui-doc init spec` |
93
+ | `doc_init_component` | コンポーネント spec テンプレート作成 | `jsonui-doc init component` |
94
+ | `doc_validate_spec` | 画面 spec のバリデーション | `jsonui-doc validate spec` |
95
+ | `doc_validate_component` | コンポーネント spec のバリデーション | `jsonui-doc validate component` |
96
+ | `doc_generate_spec` | spec から HTML/MD ドキュメント生成 | `jsonui-doc generate spec` |
97
+ | `doc_generate_component` | コンポーネント spec からドキュメント生成 | `jsonui-doc generate component` |
98
+ | `doc_generate_html` | テストファイルから HTML ドキュメントサイト生成 | `jsonui-doc generate html` |
99
+ | `doc_rules_init` | カスタムバリデーションルール作成 | `jsonui-doc rules init` |
100
+ | `doc_rules_show` | 有効なバリデーションルール表示 | `jsonui-doc rules show` |
101
+
102
+ ### Group E: API モデル連携 (3)
103
+
104
+ | Tool | Description | CLI |
105
+ |------|-------------|-----|
106
+ | `list_api_specs` | API/swagger spec 一覧(halt 条件の事前検出付き) | `jui ls api-specs --json` |
107
+ | `list_api_models` | 生成済み DTO/Domain 一覧(orphan 検出付き) | `jui ls api-models --json` |
108
+ | `preview_api_model_sync` | swagger→DTO/Domain 同期の dry-run プレビュー(書き込みなし) | `jui g api --dry-run --json` |
109
+
110
+ ### Group F: jsonui-test CLI (8)
111
+
112
+ | Tool | Description | CLI |
113
+ |------|-------------|-----|
114
+ | `test_validate` | テストファイル(screen/flow + description)のバリデーション。既定では CLI 同様に flatten-install 副作用あり(`no_install=true` で検証のみ) | `jsonui-test validate [--no-install]` |
115
+ | `test_generate_screen` | screen テストテンプレート生成 | `jsonui-test generate test screen` |
116
+ | `test_generate_flow` | flow テストテンプレート生成 | `jsonui-test generate test flow` |
117
+ | `test_generate_description` | テストケースの description JSON 生成(screen/flow) | `jsonui-test generate description` |
118
+ | `test_report` | results JSON → JUnit XML / HTML レポート変換 | `jsonui-test report` |
119
+ | `test_mock_generate` | OpenAPI からモック scaffold(`check=true` で drift レポートのみ・書き込みなし) | `jsonui-test mock generate [--check]` |
120
+ | `test_artifacts_pull` | 最新実行のテスト成果物(スクリーンショット/録画)を iOS xcresult / Android 実機から artifacts ディレクトリへ取り込み | `jsonui-test artifacts pull --json` |
121
+ | `test_artifacts_status` | test-artifacts 設定の解決結果(出力先、iOS xcresult 探索、Android appId)と取り込み済みファイル一覧 | `jsonui-test artifacts status --json` |
122
+
123
+ > `jsonui-test mock serve`(常駐 HTTP + run-target 実行)は RCE 面のため **MCP 非公開**(CLI 直叩き限定)。
124
+
125
+ ## Testing
126
+
127
+ 単体テストは [vitest](https://vitest.dev/)(ESM ネイティブで本リポジトリのモジュール構成とそのまま噛み合うため採用)。
128
+
129
+ ```bash
130
+ npm ci --ignore-scripts # postinstall の snapshot fetch をスキップ(CI と同じ手順)
131
+ npm test # 全テスト実行
132
+ npm run test:watch # watch モード
133
+ ```
134
+
135
+ テストは完全に自己完結:
136
+
137
+ - ネットワーク・実 `jui` / `jsonui-doc` CLI・実プロジェクトには一切依存しない(`child_process` はモック、プロジェクトは tmp dir の fixture)
138
+ - `~/.jsonui-cli/` / `$JSONUI_CLI_PATH` / `$JUI_PROJECT_DIR` はテスト内で差し替え(`tests/setup.ts`)
139
+ - bundled snapshot(`data/*.json`)の妥当性テストはコミット済みの実データに対して走る。CI が `npm ci --ignore-scripts` を使うのはこのため(postinstall がリモート最新で `data/` を上書きするとコミット対象のデータを検証できなくなる)
140
+ - `scripts/fetch-definitions.js` のネットワーク挙動はテスト対象外
141
+
142
+ CI は `.github/workflows/test.yml`(Node 20 / 22 matrix、main への push と PR で実行)。
143
+
144
+ ## Prerequisites
145
+
146
+ - Node.js 18+
147
+ - `jui` CLI (`pip install jui-tools`)
148
+ - `jsonui-doc` CLI (`pip install jsonui-doc-cli`)