pabal-web-mcp 1.2.4 → 1.3.1
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/README.md +57 -194
- package/dist/bin/mcp-server.js +515 -54
- package/dist/chunk-W62HB2ZL.js +355 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +3 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,142 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
MCP (Model Context Protocol) server for bidirectional conversion between ASO (App Store Optimization) and web SEO data.
|
|
4
4
|
|
|
5
|
-
This library enables seamless reuse of ASO data for web SEO purposes, allowing you to convert ASO metadata directly into web SEO content and vice versa.
|
|
5
|
+
This library enables seamless reuse of ASO data for web SEO purposes, allowing you to convert ASO metadata directly into web SEO content and vice versa. **Build your own synced website** based on ASO data from App Store Connect and Google Play Console, keeping your app store listings and web presence perfectly synchronized.
|
|
6
|
+
|
|
7
|
+
> 💡 **Example**: Check out [labs.quartz.best](https://labs.quartz.best/) to see a live website built with this library, where app store data is automatically synced to create a beautiful, SEO-optimized web presence.
|
|
6
8
|
|
|
7
9
|
[](./i18n/README.ko.md)
|
|
8
10
|
|
|
9
|
-
## 🛠️
|
|
11
|
+
## 🛠️ Installation
|
|
10
12
|
|
|
11
13
|
### Requirements
|
|
12
14
|
|
|
13
15
|
- Node.js >= 18
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
> [!TIP]
|
|
17
|
-
> If you repeatedly do ASO/store tasks, add a client rule like "always use pabal-web-mcp" so the MCP server auto-invokes without typing it every time.
|
|
18
|
-
|
|
19
|
-
<details>
|
|
20
|
-
<summary><b>Install in Cursor</b></summary>
|
|
21
|
-
|
|
22
|
-
Add to `~/.cursor/mcp.json` (global) or project `.cursor/mcp.json`:
|
|
23
|
-
|
|
24
|
-
```json
|
|
25
|
-
{
|
|
26
|
-
"mcpServers": {
|
|
27
|
-
"pabal-web-mcp": {
|
|
28
|
-
"command": "npx",
|
|
29
|
-
"args": ["-y", "pabal-web-mcp"]
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Or if installed globally:
|
|
36
|
-
|
|
37
|
-
```json
|
|
38
|
-
{
|
|
39
|
-
"mcpServers": {
|
|
40
|
-
"pabal-web-mcp": {
|
|
41
|
-
"command": "pabal-web-mcp"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
</details>
|
|
48
|
-
|
|
49
|
-
<details>
|
|
50
|
-
<summary><b>Install in VS Code</b></summary>
|
|
51
|
-
|
|
52
|
-
Example `settings.json` MCP section:
|
|
53
|
-
|
|
54
|
-
```json
|
|
55
|
-
"mcp": {
|
|
56
|
-
"servers": {
|
|
57
|
-
"pabal-web-mcp": {
|
|
58
|
-
"type": "stdio",
|
|
59
|
-
"command": "npx",
|
|
60
|
-
"args": ["-y", "pabal-web-mcp"]
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Or if installed globally:
|
|
67
|
-
|
|
68
|
-
```json
|
|
69
|
-
"mcp": {
|
|
70
|
-
"servers": {
|
|
71
|
-
"pabal-web-mcp": {
|
|
72
|
-
"type": "stdio",
|
|
73
|
-
"command": "pabal-web-mcp"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
</details>
|
|
80
|
-
|
|
81
|
-
<details>
|
|
82
|
-
<summary><b>Install in Claude Code</b></summary>
|
|
16
|
+
- [pabal-mcp](https://github.com/quartz-labs-dev/pabal-mcp) must be installed and configured
|
|
83
17
|
|
|
84
|
-
|
|
85
|
-
> See the [official Claude Code MCP documentation](https://code.claude.com/docs/en/mcp#setting-up-enterprise-mcp-configuration) for detailed configuration options.
|
|
18
|
+
### Install as Library
|
|
86
19
|
|
|
87
|
-
|
|
20
|
+
Install this library in your website project:
|
|
88
21
|
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
22
|
+
```bash
|
|
23
|
+
npm install pabal-web-mcp
|
|
24
|
+
# or
|
|
25
|
+
yarn add pabal-web-mcp
|
|
26
|
+
# or
|
|
27
|
+
pnpm add pabal-web-mcp
|
|
98
28
|
```
|
|
99
29
|
|
|
100
|
-
|
|
30
|
+
## 🔐 Configure Credentials
|
|
101
31
|
|
|
102
|
-
|
|
103
|
-
{
|
|
104
|
-
"mcpServers": {
|
|
105
|
-
"pabal-web-mcp": {
|
|
106
|
-
"command": "pabal-web-mcp"
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
```
|
|
32
|
+
pabal-web-mcp uses the configuration file from `pabal-mcp`. For detailed credential setup instructions (App Store Connect API keys, Google Play service accounts, etc.), please refer to the [pabal-mcp README](https://github.com/quartz-labs-dev/pabal-mcp?tab=readme-ov-file#-configure-credentials).
|
|
111
33
|
|
|
112
|
-
|
|
34
|
+
### ⚠️ Important: Set dataDir Path
|
|
113
35
|
|
|
114
|
-
|
|
115
|
-
<summary><b>Install in Windsurf</b></summary>
|
|
36
|
+
**You must set `dataDir` in `~/.config/pabal-mcp/config.json` to the absolute path where your `pabal-web` project is stored on your local machine.**
|
|
116
37
|
|
|
117
38
|
```json
|
|
118
39
|
{
|
|
119
|
-
"
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
40
|
+
"dataDir": "/ABSOLUTE/PATH/TO/pabal-web",
|
|
41
|
+
"appStore": {
|
|
42
|
+
"issuerId": "xxxx",
|
|
43
|
+
"keyId": "xxxx",
|
|
44
|
+
"privateKeyPath": "./app-store-key.p8"
|
|
45
|
+
},
|
|
46
|
+
"googlePlay": {
|
|
47
|
+
"serviceAccountKeyPath": "./google-play-service-account.json"
|
|
124
48
|
}
|
|
125
49
|
}
|
|
126
50
|
```
|
|
127
51
|
|
|
128
|
-
|
|
52
|
+
Examples:
|
|
129
53
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
"pabal-web-mcp": {
|
|
134
|
-
"command": "pabal-web-mcp"
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
</details>
|
|
54
|
+
- macOS: `"/Users/username/projects/pabal-web"`
|
|
55
|
+
- Linux: `"/home/username/projects/pabal-web"`
|
|
56
|
+
- Windows: `"C:\\Users\\username\\projects\\pabal-web"`
|
|
141
57
|
|
|
142
58
|
## MCP Server
|
|
143
59
|
|
|
@@ -145,87 +61,34 @@ This package includes an MCP server for managing ASO data through Claude or othe
|
|
|
145
61
|
|
|
146
62
|
### Available Tools
|
|
147
63
|
|
|
148
|
-
| Tool
|
|
149
|
-
|
|
|
150
|
-
| `aso-to-public`
|
|
151
|
-
| `public-to-aso`
|
|
152
|
-
| `
|
|
153
|
-
| `
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
###
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### Importing Utilities
|
|
179
|
-
|
|
180
|
-
```typescript
|
|
181
|
-
import {
|
|
182
|
-
// ASO Converter
|
|
183
|
-
loadAsoFromConfig,
|
|
184
|
-
|
|
185
|
-
// Locale Constants
|
|
186
|
-
DEFAULT_LOCALE,
|
|
187
|
-
UNIFIED_LOCALES,
|
|
188
|
-
|
|
189
|
-
// Locale Converters
|
|
190
|
-
unifiedToAppStore,
|
|
191
|
-
unifiedToGooglePlay,
|
|
192
|
-
appStoreToUnified,
|
|
193
|
-
googlePlayToUnified,
|
|
194
|
-
} from "pabal-web-mcp";
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### Example: Loading ASO Data
|
|
198
|
-
|
|
199
|
-
```typescript
|
|
200
|
-
import { loadAsoFromConfig } from "pabal-web-mcp";
|
|
201
|
-
|
|
202
|
-
const asoData = loadAsoFromConfig("my-app");
|
|
203
|
-
console.log(asoData.appStore?.name);
|
|
204
|
-
console.log(asoData.googlePlay?.title);
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
## Types Reference
|
|
208
|
-
|
|
209
|
-
### ASO Types
|
|
210
|
-
|
|
211
|
-
- `AsoData` - Combined ASO data for both stores
|
|
212
|
-
- `AppStoreAsoData` - App Store specific ASO data
|
|
213
|
-
- `GooglePlayAsoData` - Google Play specific ASO data
|
|
214
|
-
- `AppStoreMultilingualAsoData` - Multilingual App Store data
|
|
215
|
-
- `GooglePlayMultilingualAsoData` - Multilingual Google Play data
|
|
216
|
-
|
|
217
|
-
### Product Types
|
|
218
|
-
|
|
219
|
-
- `ProductConfig` - Product configuration
|
|
220
|
-
- `ProductLocale` - Localized product content
|
|
221
|
-
- `LandingPage` - Landing page structure
|
|
222
|
-
- `AppPageData` - Complete app page data
|
|
223
|
-
|
|
224
|
-
### Locale Types
|
|
225
|
-
|
|
226
|
-
- `UnifiedLocale` - Unified locale code (e.g., "en-US", "ko-KR")
|
|
227
|
-
|
|
228
|
-
## Supported Locales
|
|
64
|
+
| Tool | Description |
|
|
65
|
+
| ------------------ | -------------------------------------------------------- |
|
|
66
|
+
| `aso-to-public` | Convert ASO data to public config format |
|
|
67
|
+
| `public-to-aso` | Convert public config to ASO data format |
|
|
68
|
+
| `keyword-research` | Plan/persist ASO keyword research (.aso/keywordResearch) |
|
|
69
|
+
| `improve-public` | Improve product locale content with AI suggestions |
|
|
70
|
+
| `init-project` | Initialize a new product project structure |
|
|
71
|
+
| `create-blog-html` | Generate static HTML blog posts with BLOG_META headers |
|
|
72
|
+
|
|
73
|
+
### Using external keyword MCP ([appreply-co/mcp-appstore](https://github.com/appreply-co/mcp-appstore))
|
|
74
|
+
|
|
75
|
+
1. Install deps in the existing clone: `cd external-tools/mcp-appstore && npm install`
|
|
76
|
+
2. Run server: `node server.js` (same cwd; `npm start` also works). If your MCP client allows, let the LLM start this process before keyword research and stop it after; otherwise start/stop it manually.
|
|
77
|
+
3. Register in your MCP client (example):
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"mcpServers": {
|
|
81
|
+
"mcp-appstore": {
|
|
82
|
+
"command": "node",
|
|
83
|
+
"args": ["/ABSOLUTE/PATH/TO/pabal-web-mcp/external-tools/mcp-appstore/server.js"],
|
|
84
|
+
"cwd": "/ABSOLUTE/PATH/TO/pabal-web-mcp/external-tools/mcp-appstore"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
4. Use it with `keyword-research` (saves to `.aso/keywordResearch/...`) before `improve-public` to supply keyword data.
|
|
90
|
+
|
|
91
|
+
### Supported Locales
|
|
229
92
|
|
|
230
93
|
Supports all languages supported by each store.
|
|
231
94
|
|