ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

ViewDoctor

โดย KamnevVladimirรุ่น 0.1.7i★ –iรันบนเครื่อง
ชื่อใน registryio.github.KamnevVladimir/viewdoctor

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Local SwiftUI changed/staged checks with compact agent output and multi-module ownership.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: อื่น ๆ

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

ดาวน์โหลดไฟล์ .mcpb ของผู้ทำ

ลิงก์ไปที่ไฟล์ของผู้ทำเอง เราไม่ได้เก็บหรือแพ็กใหม่ เปิดไฟล์แล้ว Claude Desktop จะติดตั้งให้

พิมพ์คำสั่งนี้ใน Terminal

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 10 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub KamnevVladimir ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด อื่น ๆi

  • ดาวมากกว่า 0% ของอีก 19002 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 29% ของอีก 19002 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 19002 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

ViewDoctor ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.7) เข้า registry 2 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี MCPB ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Gufi

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

โดย formulahendryเริ่มต้น↓ 66/สัปดาห์★ 440อัปเดต 14 เดือนที่ผ่านมา

รันบนเครื่อง

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

โดย desktop-commanderกำลังโต★ 211อัปเดต วันนี้

รันบนคลาวด์✓ desktopcommander.app

Gufi

Your AI builds and runs your business system: tables, apps, automations, records, tasks, reports.

โดย gufi.devเริ่มต้นอัปเดต วันนี้

รันบนคลาวด์✓ gufi.dev

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

ViewDoctor

Check SwiftUI diffs with module ownership attached.

ViewDoctor maps modules from Swift Package Manager, Tuist, Xcode projects, and common source layouts before it scans SwiftUI code. Run it after a human or coding agent changes a diff; the result stays local and can be read as terminal text, compact agent JSON, full versioned JSON, or SARIF.

Modules/Profile/Sources/ProfileView.swift:42:18: warning: VD001 [tuist:Modules/Profile/Profile]: DateFormatter is constructed inside a body property.

ViewDoctor: 1 finding(s) in 12 file(s), 4 module(s).

The review loop

A small generated diff should not require sending the repository back to a general model just to look for three known SwiftUI risks. ViewDoctor gives those checks stable rule IDs, exact locations, module ownership, and bounded output:

edit -> scan changed files -> fix findings -> verify once

  • It reads source locally and has no telemetry.
  • Manifest-derived identifiers keep findings useful in large repositories.
  • Agent JSON keeps the location, module, message, and fix without repeating verbose human context; full JSON keeps explanations for integrations.
  • Deterministic ordering and exit codes make the same command useful in CI.

ViewDoctor complements the Swift compiler, SwiftLint, Periphery, and Instruments. It does not replace builds, profiling, or architecture review.

Install and run

Requires Swift 6.2 or newer for source builds.

git clone https://github.com/KamnevVladimir/ViewDoctor.git

cd ViewDoctor swift build -c release .build/release/viewdoctor scan /path/to/project

Analyze only the current git diff—the recommended mode for coding agents:

viewdoctor scan . --git-diff --format agent

viewdoctor scan . --base origin/main --format agent

--git-diff includes tracked changes and new untracked Swift files. A newly generated view is therefore not skipped just because it has not been added to Git yet.

Run a strict pre-commit checkpoint against the index only:

viewdoctor scan . --staged --fail-on warning

Inspect discovered modules and dependencies:

viewdoctor graph .

Generate GitHub Code Scanning output:

viewdoctor scan . --base origin/main --format sarif > viewdoctor.sarif

Discover commands and the installed version without opening the README:

viewdoctor --help

viewdoctor --version

Changed files, pre-commit, and CI

These are separate checkpoints rather than aliases:

WorkflowCommandWhat is included
Agent or human checkpoint--git-difftracked working-tree/index changes plus untracked Swift files
Pull request checkpoint--base origin/mainchanges since the base plus untracked Swift files
Pre-commit hook--stagedstaged Swift files only
Full auditno Git optionevery discovered Swift file

Use --fail-on warning when warnings must block a hook or CI job. The default remains error, so adopting ViewDoctor does not silently turn every warning into a breaking gate.

Multi-module architecture

ViewDoctor builds a normalized graph from all manifests it discovers:

Build systemDiscovery sourceModule ownership
SwiftPMPackage.swift targets and dependenciesSources/
TuistProject.swift targets, source globs, and project pathsproject/target source roots
Xcode.xcodeproj/project.pbxproj native targetstarget source roots
Folder layoutModules, Apps, Sources, Testsdeterministic fallback

When providers overlap, the longest matching source root wins. The graph model exposes a reverse dependency-cone operation for integrations and future affected-module rules. The current three source rules still scan only the selected files; they do not pretend to validate unchanged dependents.

Manifest calls are parsed as bounded SwiftSyntax expressions, so one target's dependencies cannot bleed into the next target. Tuist .project(target:path:) edges are resolved relative to the manifest or project root, and self-edges are discarded. viewdoctor graph . also emits diagnostics when a Tuist manifest imports ProjectDescriptionHelpers: helper-generated targets are executable Swift and cannot be expanded by a static parser. ViewDoctor reports that limit instead of presenting a partial graph as complete.

Rules

RuleDefaultDetects
VD001warningreusable or expensive object construction in SwiftUI body
VD002notecollection transformations repeated inside body
VD003warningdetached task creation inside body

Rules intentionally use conservative language: a finding is a reviewable risk, not a claim that profiling has proven a performance regression.

The current release has three rules. It does not yet enforce dependency direction, detect cycles, or prove runtime performance. Those are explicit roadmap items rather than implied capabilities.

GitHub Action

Run ViewDoctor in CI on a macOS runner with Swift 6.2 or newer. The action builds the pinned Swift package, scans the checked-out repository, and can upload SARIF findings to GitHub Code Scanning.

name: ViewDoctor

on: pull_request:

permissions: contents: read security-events: write

jobs: analyze: runs-on: macos-26 steps:

  • uses: actions/checkout@v6 with: fetch-depth: 0
  • uses: KamnevVladimir/ViewDoctor@v0 with: diff-base: origin/main fail-on: warning

Set upload-sarif: false when the workflow cannot grant security-events: write, such as a restricted fork workflow. Use a full release tag such as v0.1.7 when you need an immutable dependency; v0 is the maintained major-version pointer.

Output contract

Full JSON reports include schemaVersion, relative source locations, stable rule IDs, module IDs, explanations, remediation, and a module graph summary. --format agent is a smaller JSON contract for the edit/fix loop: it retains the exact finding and fix but replaces the repeated module list with a count. Integrations that need every field should consume full JSON or SARIF.

Optional .viewdoctor.json:

{

"excludedPaths": ["Generated", "Vendor"], "disabledRules": ["VD002"], "minimumSeverity": "warning", "maxFindings": 100 }

minimumSeverity controls which findings are reported. --fail-on controls only the process exit code, so a CI gate can be stricter without changing the shared report configuration.

Exit codes:

  • 0: scan completed below the --fail-on threshold;
  • 1: at least one finding met the threshold;
  • 2: arguments or scan startup failed.

Coding-agent integration

The repository contains a Codex/OpenAI skill and local MCP server in plugin/. The MCP tools call the same CLI without a shell, keep source on the local machine, and expose scans and module graphs to coding agents. The CLI remains the source of truth; the skill and MCP server are thin adapters.

The release also includes a macOS MCP Bundle. Install ViewDoctor-v0.1.7.mcpb in any client that supports MCPB, or discover it in the official MCP Registry as io.github.KamnevVladimir/viewdoctor. The bundle contains the local CLI and stdio adapter; repository source is not sent to a hosted service.

The workflow changes in this release came from concrete integration failures, not a larger rule wishlist. The evidence and scope decisions are documented in docs/PAIN_DRIVEN_UX.md.

Roadmap

  • baselines for existing findings;
  • module dependency-cycle and undeclared-import rules;
  • body complexity and identity rules with low-noise fixtures;
  • signed release artifacts and package-manager installation;
  • incremental cache and dependency-cone analysis.

Privacy

ViewDoctor reads local Swift and manifest files. It does not make network requests during analysis and does not collect telemetry. Public examples and tests use synthetic source only.

Built by KamnevApps while shipping production SwiftUI applications. Licensed under MIT.

ถาม PopNx