tryastro-mcp 0.2.1 → 0.2.3
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 +2 -2
- package/package.json +3 -2
- package/server.js +38 -59
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ Use the published npm package:
|
|
|
45
45
|
"mcpServers": {
|
|
46
46
|
"tryastro-mcp": {
|
|
47
47
|
"command": "npx",
|
|
48
|
-
"args": ["-y", "tryastro-mcp@0.2.
|
|
48
|
+
"args": ["-y", "tryastro-mcp@0.2.3"]
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -56,7 +56,7 @@ Use the published npm package:
|
|
|
56
56
|
1. Update `version` in `/package.json`.
|
|
57
57
|
2. Login: `npm login`.
|
|
58
58
|
3. Publish: `npm publish --access public`.
|
|
59
|
-
4. Verify install: `npx -y tryastro-mcp@0.2.
|
|
59
|
+
4. Verify install: `npx -y tryastro-mcp@0.2.3`.
|
|
60
60
|
|
|
61
61
|
## Data and source model
|
|
62
62
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tryastro-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "MCP server for TryAstro scenarios and standard support requests",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "server.js",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"app-store-optimization"
|
|
14
14
|
],
|
|
15
15
|
"bin": {
|
|
16
|
-
"tryastro-mcp": "./bin/astro-mcp.js"
|
|
16
|
+
"tryastro-mcp": "./bin/astro-mcp.js",
|
|
17
|
+
"astro-mcp": "./bin/astro-mcp.js"
|
|
17
18
|
},
|
|
18
19
|
"exports": {
|
|
19
20
|
".": "./server.js"
|
package/server.js
CHANGED
|
@@ -7,7 +7,7 @@ import { fileURLToPath } from "node:url";
|
|
|
7
7
|
function loadServerInfo() {
|
|
8
8
|
const fallback = {
|
|
9
9
|
name: "tryastro-mcp",
|
|
10
|
-
version: "0.2.
|
|
10
|
+
version: "0.2.3",
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
try {
|
|
@@ -56,119 +56,98 @@ const STANDARD_TOPICS = [
|
|
|
56
56
|
{
|
|
57
57
|
id: "capabilities",
|
|
58
58
|
title: "Product capabilities",
|
|
59
|
-
patterns: [
|
|
60
|
-
/what can .*astro|feature|capabilit|возможност|что умеет/i,
|
|
61
|
-
/keyword|competitor|localization|rankings|ratings|review/i,
|
|
62
|
-
],
|
|
59
|
+
patterns: [/what can .*astro|feature|capabilit/i, /keyword|competitor|localization|rankings|ratings|review/i],
|
|
63
60
|
answerRu:
|
|
64
|
-
"Astro
|
|
61
|
+
"Astro is focused on ASO operations: keyword research, competitor analysis, localization workflows, keyword ranking monitoring, ratings/reviews monitoring, and ASO data import/export.",
|
|
65
62
|
answerEn:
|
|
66
63
|
"Astro is focused on ASO operations: keyword research, competitor analysis, localization workflows, keyword ranking monitoring, ratings/reviews monitoring, and ASO data import/export.",
|
|
67
64
|
next: [
|
|
68
|
-
"
|
|
69
|
-
"
|
|
65
|
+
"Select a scenario through scenario_catalog and run the matching scenario tool.",
|
|
66
|
+
"Lock the target countries and locales before starting keyword and localization workflows.",
|
|
70
67
|
],
|
|
71
68
|
sources: [SOURCES.homepage, SOURCES.docs],
|
|
72
69
|
},
|
|
73
70
|
{
|
|
74
71
|
id: "pricing_billing",
|
|
75
72
|
title: "Pricing and billing",
|
|
76
|
-
patterns: [
|
|
77
|
-
/pricing|price|cost|billing|subscription|подписк|тариф|цена|стоимост/i,
|
|
78
|
-
/refund|возврат|renew|продлен/i,
|
|
79
|
-
],
|
|
73
|
+
patterns: [/pricing|price|cost|billing|subscription/i, /refund|renew/i],
|
|
80
74
|
answerRu:
|
|
81
|
-
"
|
|
75
|
+
"The site shows a single annual plan: $108/year (about $9/month). Refund policy: 14 days from purchase via hello@tryastro.app. Billing is handled via Lemon Squeezy.",
|
|
82
76
|
answerEn:
|
|
83
77
|
"The site shows a single annual plan: $108/year (about $9/month). Refund policy: 14 days from purchase via hello@tryastro.app. Billing is handled via Lemon Squeezy.",
|
|
84
78
|
next: [
|
|
85
|
-
"
|
|
86
|
-
"
|
|
79
|
+
"Check the pricing page before payment for the latest amount and currency.",
|
|
80
|
+
"For a refund, send purchase details by email within the 14-day window.",
|
|
87
81
|
],
|
|
88
82
|
sources: [SOURCES.pricing, SOURCES.terms],
|
|
89
83
|
},
|
|
90
84
|
{
|
|
91
85
|
id: "platform_coverage",
|
|
92
86
|
title: "Platform and geo coverage",
|
|
93
|
-
patterns: [
|
|
94
|
-
/platform|device|ios|ipados|macos|visionos|store|country|geo|регион|страны|поддержк/i,
|
|
95
|
-
/apple search ads|stores/i,
|
|
96
|
-
],
|
|
87
|
+
patterns: [/platform|device|ios|ipados|macos|visionos|store|country|geo/i, /apple search ads|stores/i],
|
|
97
88
|
answerRu:
|
|
98
|
-
"Astro
|
|
89
|
+
"Astro is available on iOS, iPadOS, macOS, and VisionOS, with macOS 14+ required for desktop. Product messaging mentions 60+ Apple Search Ads countries and support for 91 stores in keyword search.",
|
|
99
90
|
answerEn:
|
|
100
91
|
"Astro is available on iOS, iPadOS, macOS, and VisionOS, with macOS 14+ required for desktop. Product messaging mentions 60+ Apple Search Ads countries and support for 91 stores in keyword search.",
|
|
101
92
|
next: [
|
|
102
|
-
"
|
|
103
|
-
"
|
|
93
|
+
"Capture target stores and locales in one document before running scenarios.",
|
|
94
|
+
"If coverage details differ, cross-check both docs and the app.",
|
|
104
95
|
],
|
|
105
96
|
sources: [SOURCES.homepage, SOURCES.firstAccess],
|
|
106
97
|
},
|
|
107
98
|
{
|
|
108
99
|
id: "privacy_legal",
|
|
109
100
|
title: "Privacy and legal",
|
|
110
|
-
patterns: [
|
|
111
|
-
/privacy|gdpr|legal|terms|dpa|subprocessor|данные|персональ|политик|услови/i,
|
|
112
|
-
/security|безопас/i,
|
|
113
|
-
],
|
|
101
|
+
patterns: [/privacy|gdpr|legal|terms|dpa|subprocessor/i, /security/i],
|
|
114
102
|
answerRu:
|
|
115
|
-
"
|
|
103
|
+
"According to the Privacy page, user data is stored locally on the device and Astro does not send it to Astro servers by default. Legal terms and usage restrictions are defined in Terms.",
|
|
116
104
|
answerEn:
|
|
117
105
|
"According to the Privacy page, user data is stored locally on the device and Astro does not send it to Astro servers by default. Legal terms and usage restrictions are defined in Terms.",
|
|
118
106
|
next: [
|
|
119
|
-
"
|
|
120
|
-
"
|
|
107
|
+
"For compliance checks, review DPA/Sub-processors links in the footer before purchase.",
|
|
108
|
+
"For legal questions, escalate to hello@tryastro.app.",
|
|
121
109
|
],
|
|
122
110
|
sources: [SOURCES.privacy, SOURCES.terms],
|
|
123
111
|
},
|
|
124
112
|
{
|
|
125
113
|
id: "support_feedback",
|
|
126
114
|
title: "Support and feedback",
|
|
127
|
-
patterns: [
|
|
128
|
-
/support|help|ticket|contact|feedback|roadmap|баг|поддержк|тикет|контакт/i,
|
|
129
|
-
/hello@tryastro\.app/i,
|
|
130
|
-
],
|
|
115
|
+
patterns: [/support|help|ticket|contact|feedback|roadmap/i, /hello@tryastro\.app/i],
|
|
131
116
|
answerRu:
|
|
132
|
-
"
|
|
117
|
+
"Core documentation is available at docs.tryastro.app. For subscription and refund requests, use hello@tryastro.app. The site also mentions feature requests and support ticket channels.",
|
|
133
118
|
answerEn:
|
|
134
119
|
"Core documentation is available at docs.tryastro.app. For subscription and refund requests, use hello@tryastro.app. The site also mentions feature requests and support ticket channels.",
|
|
135
120
|
next: [
|
|
136
|
-
"
|
|
137
|
-
"
|
|
121
|
+
"Include exact store/country/date range and screenshots in support tickets.",
|
|
122
|
+
"For product requests, check docs first and then submit the gap as a feature request.",
|
|
138
123
|
],
|
|
139
124
|
sources: [SOURCES.docs, SOURCES.homepage, SOURCES.terms],
|
|
140
125
|
},
|
|
141
126
|
{
|
|
142
127
|
id: "migration_transfer",
|
|
143
128
|
title: "Migration and transfer",
|
|
144
|
-
patterns: [
|
|
145
|
-
/import|export|migration|transfer|switch|перенос|миграц|импорт|экспорт|лиценз/i,
|
|
146
|
-
/apptweak|sensor tower|mobile action|appfollow/i,
|
|
147
|
-
],
|
|
129
|
+
patterns: [/import|export|migration|transfer|switch/i, /apptweak|sensor tower|mobile action|appfollow/i],
|
|
148
130
|
answerRu:
|
|
149
|
-
"Astro
|
|
131
|
+
"Astro supports keyword import/export via CSV and full history migration through the model.sqlite file. License transfer to another Mac is described as a separate Lemon Squeezy flow.",
|
|
150
132
|
answerEn:
|
|
151
133
|
"Astro supports keyword import/export via CSV and full history migration through the model.sqlite file. License transfer to another Mac is described as a separate Lemon Squeezy flow.",
|
|
152
134
|
next: [
|
|
153
|
-
"
|
|
154
|
-
"
|
|
135
|
+
"Use the model.sqlite flow for full history migration, not CSV.",
|
|
136
|
+
"Sign out on the old device before transferring the license.",
|
|
155
137
|
],
|
|
156
138
|
sources: [SOURCES.importExport, SOURCES.transfer, SOURCES.terms],
|
|
157
139
|
},
|
|
158
140
|
{
|
|
159
141
|
id: "official_mcp_status",
|
|
160
142
|
title: "Official MCP availability",
|
|
161
|
-
patterns: [
|
|
162
|
-
/mcp|cursor|server|api|integration|интеграц|подключ/i,
|
|
163
|
-
/official|официальн/i,
|
|
164
|
-
],
|
|
143
|
+
patterns: [/mcp|cursor|server|api|integration/i, /official/i],
|
|
165
144
|
answerRu:
|
|
166
|
-
"
|
|
145
|
+
"Astro Terms mention MCP as a planned capability. That implies the official MCP may not yet be publicly released, so the server in this repository is built as an independent integration.",
|
|
167
146
|
answerEn:
|
|
168
147
|
"Astro Terms mention MCP as a planned capability. That implies the official MCP may not yet be publicly released, so the server in this repository is built as an independent integration.",
|
|
169
148
|
next: [
|
|
170
|
-
"
|
|
171
|
-
"
|
|
149
|
+
"Use this MCP as a workflow assistant for Astro scenarios.",
|
|
150
|
+
"Re-check docs/terms regularly for any official API or MCP endpoint updates.",
|
|
172
151
|
],
|
|
173
152
|
sources: [SOURCES.terms, SOURCES.docs],
|
|
174
153
|
},
|
|
@@ -178,32 +157,32 @@ const SCENARIO_SUMMARY = [
|
|
|
178
157
|
{
|
|
179
158
|
id: "scenario_onboarding_first_value",
|
|
180
159
|
title: "Onboarding to first value",
|
|
181
|
-
goal: "
|
|
160
|
+
goal: "Set up the account, app, and baseline metrics on the first working day.",
|
|
182
161
|
},
|
|
183
162
|
{
|
|
184
163
|
id: "scenario_keyword_research",
|
|
185
164
|
title: "Keyword research loop",
|
|
186
|
-
goal: "
|
|
165
|
+
goal: "Collect and prioritize the keyword core for target stores.",
|
|
187
166
|
},
|
|
188
167
|
{
|
|
189
168
|
id: "scenario_competitor_analysis",
|
|
190
169
|
title: "Competitor benchmarking",
|
|
191
|
-
goal: "
|
|
170
|
+
goal: "Build competitor gap analysis and identify fast growth opportunities.",
|
|
192
171
|
},
|
|
193
172
|
{
|
|
194
173
|
id: "scenario_localization_strategy",
|
|
195
174
|
title: "Localization expansion",
|
|
196
|
-
goal: "
|
|
175
|
+
goal: "Plan and launch localization by countries/locales with priorities.",
|
|
197
176
|
},
|
|
198
177
|
{
|
|
199
178
|
id: "scenario_rankings_and_ratings",
|
|
200
179
|
title: "Rankings and ratings monitoring",
|
|
201
|
-
goal: "
|
|
180
|
+
goal: "Run a recurring loop for rankings control and feedback quality tracking.",
|
|
202
181
|
},
|
|
203
182
|
{
|
|
204
183
|
id: "scenario_migration_and_transfer",
|
|
205
184
|
title: "Migration/import and license transfer",
|
|
206
|
-
goal: "
|
|
185
|
+
goal: "Migrate from other ASO tools or between devices without data loss.",
|
|
207
186
|
},
|
|
208
187
|
];
|
|
209
188
|
|
|
@@ -356,8 +335,8 @@ const TOOL_DEFINITIONS = [
|
|
|
356
335
|
},
|
|
357
336
|
language: {
|
|
358
337
|
type: "string",
|
|
359
|
-
enum: ["
|
|
360
|
-
default: "
|
|
338
|
+
enum: ["en", "ru"],
|
|
339
|
+
default: "en",
|
|
361
340
|
},
|
|
362
341
|
},
|
|
363
342
|
required: ["query"],
|
|
@@ -618,7 +597,7 @@ const TOOL_HANDLERS = {
|
|
|
618
597
|
|
|
619
598
|
standard_answer: (args = {}) => {
|
|
620
599
|
const query = safeText(args.query, "");
|
|
621
|
-
const language = safeText(args.language, "
|
|
600
|
+
const language = safeText(args.language, "en").toLowerCase() === "ru" ? "ru" : "en";
|
|
622
601
|
|
|
623
602
|
if (!query) {
|
|
624
603
|
return asError("Input validation error: query is required.");
|