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.
- package/.github/workflows/test.yml +35 -0
- package/README.md +148 -0
- package/data/attribute_definitions.json +4248 -0
- package/data/attribute_semantics.json +137 -0
- package/data/binding_semantics.json +115 -0
- package/data/component_metadata.json +769 -0
- package/data/coverage.json +114 -0
- package/data/screen_identity.json +350 -0
- package/dist/cli_runner.d.ts +10 -0
- package/dist/cli_runner.js +33 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.js +67 -0
- package/dist/data/component_metadata.d.ts +30 -0
- package/dist/data/component_metadata.js +498 -0
- package/dist/data/derived.d.ts +198 -0
- package/dist/data/derived.js +293 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +130 -0
- package/dist/spec_loader.d.ts +110 -0
- package/dist/spec_loader.js +445 -0
- package/dist/tools/api/list_api_models.d.ts +10 -0
- package/dist/tools/api/list_api_models.js +37 -0
- package/dist/tools/api/list_api_specs.d.ts +19 -0
- package/dist/tools/api/list_api_specs.js +42 -0
- package/dist/tools/api/preview_api_model_sync.d.ts +11 -0
- package/dist/tools/api/preview_api_model_sync.js +34 -0
- package/dist/tools/context/get_project_config.d.ts +3 -0
- package/dist/tools/context/get_project_config.js +20 -0
- package/dist/tools/context/list_component_specs.d.ts +3 -0
- package/dist/tools/context/list_component_specs.js +35 -0
- package/dist/tools/context/list_layouts.d.ts +3 -0
- package/dist/tools/context/list_layouts.js +118 -0
- package/dist/tools/context/list_screen_specs.d.ts +3 -0
- package/dist/tools/context/list_screen_specs.js +37 -0
- package/dist/tools/context/read_layout_file.d.ts +3 -0
- package/dist/tools/context/read_layout_file.js +25 -0
- package/dist/tools/context/read_spec_file.d.ts +3 -0
- package/dist/tools/context/read_spec_file.js +27 -0
- package/dist/tools/doc/doc_generate_component.d.ts +3 -0
- package/dist/tools/doc/doc_generate_component.js +38 -0
- package/dist/tools/doc/doc_generate_html.d.ts +3 -0
- package/dist/tools/doc/doc_generate_html.js +46 -0
- package/dist/tools/doc/doc_generate_spec.d.ts +3 -0
- package/dist/tools/doc/doc_generate_spec.js +38 -0
- package/dist/tools/doc/doc_init_component.d.ts +3 -0
- package/dist/tools/doc/doc_init_component.js +30 -0
- package/dist/tools/doc/doc_init_spec.d.ts +3 -0
- package/dist/tools/doc/doc_init_spec.js +33 -0
- package/dist/tools/doc/doc_rules_init.d.ts +3 -0
- package/dist/tools/doc/doc_rules_init.js +25 -0
- package/dist/tools/doc/doc_rules_show.d.ts +3 -0
- package/dist/tools/doc/doc_rules_show.js +21 -0
- package/dist/tools/doc/doc_validate_component.d.ts +3 -0
- package/dist/tools/doc/doc_validate_component.js +39 -0
- package/dist/tools/doc/doc_validate_spec.d.ts +3 -0
- package/dist/tools/doc/doc_validate_spec.js +40 -0
- package/dist/tools/jui/jui_build.d.ts +3 -0
- package/dist/tools/jui/jui_build.js +31 -0
- package/dist/tools/jui/jui_generate_converter.d.ts +3 -0
- package/dist/tools/jui/jui_generate_converter.js +43 -0
- package/dist/tools/jui/jui_generate_project.d.ts +3 -0
- package/dist/tools/jui/jui_generate_project.js +43 -0
- package/dist/tools/jui/jui_generate_screen.d.ts +3 -0
- package/dist/tools/jui/jui_generate_screen.js +22 -0
- package/dist/tools/jui/jui_init.d.ts +3 -0
- package/dist/tools/jui/jui_init.js +42 -0
- package/dist/tools/jui/jui_migrate_layouts.d.ts +3 -0
- package/dist/tools/jui/jui_migrate_layouts.js +25 -0
- package/dist/tools/jui/jui_sync_tool.d.ts +3 -0
- package/dist/tools/jui/jui_sync_tool.js +33 -0
- package/dist/tools/jui/jui_verify.d.ts +3 -0
- package/dist/tools/jui/jui_verify.js +43 -0
- package/dist/tools/spec/get_binding_rules.d.ts +3 -0
- package/dist/tools/spec/get_binding_rules.js +8 -0
- package/dist/tools/spec/get_data_source.d.ts +3 -0
- package/dist/tools/spec/get_data_source.js +41 -0
- package/dist/tools/spec/get_modifier_order.d.ts +3 -0
- package/dist/tools/spec/get_modifier_order.js +14 -0
- package/dist/tools/spec/get_platform_mapping.d.ts +3 -0
- package/dist/tools/spec/get_platform_mapping.js +20 -0
- package/dist/tools/spec/get_screen_identity.d.ts +3 -0
- package/dist/tools/spec/get_screen_identity.js +22 -0
- package/dist/tools/spec/lookup_attribute.d.ts +3 -0
- package/dist/tools/spec/lookup_attribute.js +14 -0
- package/dist/tools/spec/lookup_component.d.ts +3 -0
- package/dist/tools/spec/lookup_component.js +15 -0
- package/dist/tools/spec/search_components.d.ts +3 -0
- package/dist/tools/spec/search_components.js +14 -0
- package/dist/tools/test/test_artifacts_pull.d.ts +3 -0
- package/dist/tools/test/test_artifacts_pull.js +48 -0
- package/dist/tools/test/test_artifacts_status.d.ts +3 -0
- package/dist/tools/test/test_artifacts_status.js +28 -0
- package/dist/tools/test/test_generate_description.d.ts +3 -0
- package/dist/tools/test/test_generate_description.js +27 -0
- package/dist/tools/test/test_generate_flow.d.ts +3 -0
- package/dist/tools/test/test_generate_flow.js +29 -0
- package/dist/tools/test/test_generate_screen.d.ts +3 -0
- package/dist/tools/test/test_generate_screen.js +29 -0
- package/dist/tools/test/test_mock_generate.d.ts +3 -0
- package/dist/tools/test/test_mock_generate.js +64 -0
- package/dist/tools/test/test_report.d.ts +3 -0
- package/dist/tools/test/test_report.js +26 -0
- package/dist/tools/test/test_validate.d.ts +3 -0
- package/dist/tools/test/test_validate.js +43 -0
- package/docs/design.md +227 -0
- package/install.sh +90 -0
- package/package.json +24 -0
- package/scripts/fetch-definitions.js +101 -0
- package/scripts/fetch-manifest.js +60 -0
- package/src/cli_runner.ts +55 -0
- package/src/config.ts +88 -0
- package/src/data/derived.ts +305 -0
- package/src/index.ts +157 -0
- package/src/spec_loader.ts +591 -0
- package/src/tools/api/list_api_models.ts +44 -0
- package/src/tools/api/list_api_specs.ts +53 -0
- package/src/tools/api/preview_api_model_sync.ts +41 -0
- package/src/tools/context/get_project_config.ts +27 -0
- package/src/tools/context/list_component_specs.ts +44 -0
- package/src/tools/context/list_layouts.ts +131 -0
- package/src/tools/context/list_screen_specs.ts +46 -0
- package/src/tools/context/read_layout_file.ts +35 -0
- package/src/tools/context/read_spec_file.ts +38 -0
- package/src/tools/doc/doc_generate_component.ts +43 -0
- package/src/tools/doc/doc_generate_html.ts +40 -0
- package/src/tools/doc/doc_generate_spec.ts +43 -0
- package/src/tools/doc/doc_init_component.ts +32 -0
- package/src/tools/doc/doc_init_spec.ts +37 -0
- package/src/tools/doc/doc_rules_init.ts +29 -0
- package/src/tools/doc/doc_rules_show.ts +27 -0
- package/src/tools/doc/doc_validate_component.ts +47 -0
- package/src/tools/doc/doc_validate_spec.ts +48 -0
- package/src/tools/jui/jui_build.ts +31 -0
- package/src/tools/jui/jui_generate_converter.ts +41 -0
- package/src/tools/jui/jui_generate_project.ts +37 -0
- package/src/tools/jui/jui_generate_screen.ts +28 -0
- package/src/tools/jui/jui_init.ts +38 -0
- package/src/tools/jui/jui_migrate_layouts.ts +29 -0
- package/src/tools/jui/jui_sync_tool.ts +33 -0
- package/src/tools/jui/jui_verify.ts +43 -0
- package/src/tools/spec/get_binding_rules.ts +16 -0
- package/src/tools/spec/get_data_source.ts +53 -0
- package/src/tools/spec/get_modifier_order.ts +22 -0
- package/src/tools/spec/get_platform_mapping.ts +28 -0
- package/src/tools/spec/get_screen_identity.ts +31 -0
- package/src/tools/spec/lookup_attribute.ts +22 -0
- package/src/tools/spec/lookup_component.ts +23 -0
- package/src/tools/spec/search_components.ts +22 -0
- package/src/tools/test/test_artifacts_pull.ts +47 -0
- package/src/tools/test/test_artifacts_status.ts +34 -0
- package/src/tools/test/test_generate_description.ts +33 -0
- package/src/tools/test/test_generate_flow.ts +33 -0
- package/src/tools/test/test_generate_screen.ts +33 -0
- package/src/tools/test/test_mock_generate.ts +58 -0
- package/src/tools/test/test_report.ts +32 -0
- package/src/tools/test/test_validate.ts +43 -0
- package/tests/__snapshots__/derived.test.ts.snap +279 -0
- package/tests/bundled_snapshot.test.ts +155 -0
- package/tests/cli_runner.test.ts +120 -0
- package/tests/config.test.ts +212 -0
- package/tests/derived.test.ts +114 -0
- package/tests/helpers.ts +272 -0
- package/tests/setup.ts +27 -0
- package/tests/snapshot_completeness.test.ts +152 -0
- package/tests/spec_loader.test.ts +488 -0
- package/tests/tools_cli.test.ts +687 -0
- package/tests/tools_context.test.ts +274 -0
- package/tests/tools_spec.test.ts +225 -0
- package/tests/tools_test.test.ts +284 -0
- package/tsconfig.json +15 -0
- package/uninstall.sh +46 -0
- 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`)
|