Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Free App Store competitive intelligence for Claude — rival downloads, revenue, and ASO keywords.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ASO_CACHE_TTL_HOURSต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"app-store-operator": {
"command": "npx",
"args": [
"-y",
"app-store-operator"
],
"env": {
"ASO_CACHE_TTL_HOURS": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add app-store-operator --env ASO_CACHE_TTL_HOURS='ใส่ค่าของคุณ' -- npx -y app-store-operatorเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"app-store-operator": {
"command": "npx",
"args": [
"-y",
"app-store-operator"
],
"env": {
"ASO_CACHE_TTL_HOURS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"app-store-operator": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"app-store-operator"
],
"env": {
"ASO_CACHE_TTL_HOURS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ASO_CACHE_TTL_HOURS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub meyusufdemirci ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.3.5) เข้า registry 3 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Tethered Trust
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Fit, compatibility and recall checks for AI agents before they buy: verdicts, evidence, receipts.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
App Store competitive intelligence, inside Claude.
App Store Operator is an MCP server that brings App Store research directly into your AI assistant. Instead of switching to a dashboard, you ask Claude for ranked keyword results, competitor download and revenue estimates, or App Store Connect-ready In-App Event copy — and get the answer in the same conversation where you are making the decision.
Built for indie iOS developers who want research inside their workflow rather than in another browser tab. Free and open source (MIT). A lightweight alternative to SensorTower, AppTweak, and AppFollow for iOS-only competitive research.
claude mcp add --transport stdio app-store-operator -- npx -y app-store-operator@latest
→ app-store-operator.com · Setup guide
Searches the App Store for competing apps on a given keyword and pulls detailed analytics from SensorTower — downloads, revenue, ratings, top markets, publisher info, and more.
search_app_store and prepare_iae work with no account at all. research_rivals and get_app_details open a browser once for a free SensorTower sign-in, then reuse that saved session — no paid plan, no API key.
Everything the server exposes — four tools, six prompts, seven resources — is read-only. Nothing writes to your App Store Connect account, to SensorTower, or anywhere but a local cache file.
research_rivalsFinds the top 3 apps for a keyword and returns a full metrics report for each.
| Parameter | Type | Description |
|---|---|---|
keyword | string | Search term to look up (e.g. meditation, psikoloji) |
country | string | Two-letter country code (e.g. us, tr, gb) |
Returns for each competitor:
Cached for 24 hours, so asking again about the same keyword and country costs nothing and opens no browser.
search_app_storeSearches the App Store for a keyword and returns ranked results as a markdown table — instantly, no SensorTower required.
| Parameter | Type | Description |
|---|---|---|
keyword | string | Search term to look up |
country | string | Two-letter country code |
limit | number | Number of results to return (1–25, default 3) |
Use this to discover which apps rank before deciding which to analyse. Follow up with get_app_details for analytics on specific apps.
get_app_detailsFetches SensorTower analytics for one or more app IDs you already have.
| Parameter | Type | Description |
|---|---|---|
app_ids | array | Numeric App Store IDs (e.g. from search_app_store) |
country | string | Two-letter country code |
Returns for each app:
Never cached — every call scrapes fresh, at roughly 10–20 seconds per app ID.
prepare_iaeGenerates iOS App Store In-App Event (IAE) copy — 3 variations in the target language, then a final report.
| Parameter | Type | Description |
|---|---|---|
keywords | array | Ordered keywords by priority (index 0–2 = Tier 1, 3–6 = Tier 2, 7–9 = Tier 3) |
locale | string | Target locale (e.g. en-us, en-gb, de-de, tr, ja, ko) |
event_purpose | string | What the event is about and why users should care |
audience | string | Target audience (e.g. students, professionals, parents) |
event_context | string | Real-world hook tying the event to a moment (e.g. a holiday, season) |
goal | string | Primary conversion goal (e.g. attract new users, boost engagement) |
tone | string | Copy tone: Engaging, Playful, Motivational, Authoritative, Calm, or Urgent |
Returns: a structured brief used to generate 3 copy variations, each with event name (≤30 chars), short description (≤50 chars), and long description (≤120 chars).
Any field SensorTower does not expose, or keeps behind its paywall, comes back as N/A. The server reports the gap rather than filling it, and the prompts below tell the assistant to do the same.
Six ready-made workflows that already chain the tools above, so you don't have to describe the sequence yourself. In Claude Code they appear as slash commands; other clients surface them in a prompt picker.
| Prompt | Arguments | What it does |
|---|---|---|
competitor_snapshot | keyword, country | Pulls rival analytics for a keyword, then reads out who owns it and how contested it is |
keyword_shortlist | seed_keyword, country, count? | Expands a seed keyword into candidates, tests each against live search results, and ranks them *attack / watch / skip* |
app_teardown | app_ids, country | Teardown of known apps — scale, standing, monetisation, reach, momentum, acquisition |
positioning_gap | keyword, country, my_app_id | Puts your app on the same measuring stick as the incumbents and separates *behind* from *attackable* |
metadata_rewrite | app_name, keyword, country, must_keep? | Three name / subtitle / keyword-field variations, character-counted against Apple's limits |
in_app_event | event_context, locale, keywords?, audience?, tone? | Runs the full In-App Event flow, asking for whatever prepare_iae still needs |
Arguments marked ? are optional. Every prompt tells the assistant not to invent figures and, where SensorTower is involved, not to quietly fall back to a weaker tool when login is required.
Reference data and local state a client can attach as context without spending a tool call on it.
| URI | Type | Contents |
|---|---|---|
asops://guide/tool-selection | markdown | Which tool to use, what each costs, how the SensorTower login works |
asops://reference/country-codes | markdown | Two-letter storefront codes by region |
asops://reference/aso-fields | JSON | App Store Connect character limits and which fields are indexed for search |
asops://reference/iae-fields | JSON | In-App Event limits, artwork sizes, copy rules, keyword tiers |
asops://reference/iae-locales | JSON | Every locale prepare_iae accepts — generated from the same table the tool validates against |
asops://cache/research | JSON | What has already been researched on this machine, and whether it is still fresh |
asops://cache/research/{country}/{keyword} | JSON | One cached research_rivals result, without re-scraping |
Nothing here leaves your machine: the reference resources are static, and the two cache resources read ~/.app-store-operator/cache.json.
research_rivals and get_app_details. They drive a real, visible Chromium window so you can sign in to SensorTower, so they need a display — they do not work over plain SSH or inside a container. The other two tools have no such requirement.npx playwright install chromium yourself.Claude Code — run this command once:
claude mcp add --transport stdio app-store-operator -- npx -y app-store-operator@latest
Claude Desktop — add to your MCP config:
{
"mcpServers": { "app-store-operator": { "command": "npx", "args": ["app-store-operator@latest"] } } }
OpenAI Codex — run this command once:
codex mcp add app-store-operator -- npx -y app-store-operator@latest
Codex stores MCP servers in ~/.codex/config.toml. If you prefer to edit it directly:
[mcp_servers.app-store-operator]
command = "npx" args = ["-y", "app-store-operator@latest"]
startup_timeout_sec = 20 tool_timeout_sec = 180
Then restart Codex or start a new thread, and ask things like:
Research rivals for "hairstyle" in the GB App StoreSearch the App Store for "beard style" in FrancePrepare an in-app event for a summer hairstyle campaign in en-gbNo installation step needed — npx fetches and runs the package automatically.
The server communicates over stdio and is designed to be invoked by an MCP client. It advertises server-wide instructions during initialize so clients route between the tools correctly, and returns an MCP tool error when SensorTower login is required.
Both settings are optional environment variables on the server process.
| Variable | Default | What it does |
|---|---|---|
ASO_CACHE_TTL_HOURS | 24 | How long a research_rivals result stays fresh in the local cache before it is scraped again |
ASO_DEBUG_RATINGS | unset | Set to 1 to print SensorTower's ratings panel to stderr when a rating score or count comes back N/A — useful when reporting a scraping bug |
The repo ships a Dockerfile built on Playwright's official image:
docker build -t app-store-operator .
docker run -i --rm app-store-operator
The server speaks JSON-RPC over stdio, so no port is exposed — point your MCP client at the container's stdin/stdout. Note that a container has no display: search_app_store and prepare_iae work there, but the two SensorTower tools cannot open a login window and will fail rather than prompting you to sign in.
SensorTower data is scraped via Playwright because it is rendered client-side.
A browser window will open. This is deliberate, not a bug: SensorTower requires a login, so the first run opens a visible window for you to sign in. The session is saved to ~/.app-store-operator/profile and reused on every later call, so you only log in once. If a tool reports not_logged_in, finish signing in on that window and run the tool again.
Results from research_rivals are cached for 24 hours in ~/.app-store-operator/cache.json — override the TTL with the ASO_CACHE_TTL_HOURS environment variable.
research_rivals is fixed at the top 3 resulตัดมาแค่ช่วงต้น อ่านต่อใน repo