ios-agent-mcp 2.0.1 → 2.2.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.
Files changed (45) hide show
  1. package/README.md +74 -7
  2. package/data/knowledge.json +1 -0
  3. package/dist/analyzers/memory.d.ts +12 -0
  4. package/dist/analyzers/memory.js +81 -0
  5. package/dist/analyzers/memory.js.map +1 -0
  6. package/dist/analyzers/performance.d.ts +10 -0
  7. package/dist/analyzers/performance.js +106 -0
  8. package/dist/analyzers/performance.js.map +1 -0
  9. package/dist/analyzers/security.d.ts +2 -0
  10. package/dist/analyzers/security.js +82 -0
  11. package/dist/analyzers/security.js.map +1 -0
  12. package/dist/analyzers/skill.d.ts +34 -0
  13. package/dist/analyzers/skill.js +483 -0
  14. package/dist/analyzers/skill.js.map +1 -0
  15. package/dist/analyzers/testing.d.ts +16 -0
  16. package/dist/analyzers/testing.js +135 -0
  17. package/dist/analyzers/testing.js.map +1 -0
  18. package/dist/analyzers/types.d.ts +19 -1
  19. package/dist/analyzers/types.js +65 -3
  20. package/dist/analyzers/types.js.map +1 -1
  21. package/dist/index.js +162 -5
  22. package/dist/index.js.map +1 -1
  23. package/dist/knowledge-server.d.ts +2 -0
  24. package/dist/knowledge-server.js +44 -0
  25. package/dist/knowledge-server.js.map +1 -0
  26. package/dist/knowledge.d.ts +78 -0
  27. package/dist/knowledge.js +69 -0
  28. package/dist/knowledge.js.map +1 -0
  29. package/dist/report.d.ts +10 -0
  30. package/dist/report.js +40 -0
  31. package/dist/report.js.map +1 -1
  32. package/dist/resources.d.ts +67 -0
  33. package/dist/resources.js +222 -0
  34. package/dist/resources.js.map +1 -0
  35. package/dist/result.d.ts +203 -0
  36. package/dist/result.js +135 -0
  37. package/dist/result.js.map +1 -0
  38. package/dist/scan.d.ts +9 -0
  39. package/dist/scan.js +110 -0
  40. package/dist/scan.js.map +1 -1
  41. package/dist/version.d.ts +1 -0
  42. package/dist/version.js +4 -0
  43. package/dist/version.js.map +1 -0
  44. package/mcp.json +76 -11
  45. package/package.json +19 -10
package/README.md CHANGED
@@ -1,11 +1,22 @@
1
+ ## New in 2.2.0: Apple knowledge tools for more clients
2
+
3
+ This package includes two MCP binaries: `ios-agent-mcp` for local Swift project analysis and `ios-agent-knowledge` for public Apple references and app/icon planning. Claude, Codex and Gemini CLI can run either over stdio. The knowledge server also supports Streamable HTTP for a hosted ChatGPT connection.
4
+
5
+ ```bash
6
+ npx -y --package=ios-agent-mcp@2.2.0 ios-agent-knowledge
7
+ ```
8
+
9
+ Knowledge tools search 405 technologies and 96 update/release-note sources, retrieve guides, plan an app implementation, and specify separate Icon Composer layers. They do not write apps, access arbitrary project paths or claim native icon generation. [Setup](https://github.com/Nagarjuna2997/ios-agent-skill/blob/main/docs/mcp/installation.md).
10
+
1
11
  # ios-agent-mcp
2
12
 
3
13
  An MCP server that reviews Swift projects against the rules in
4
14
  [ios-agent-skill](https://github.com/Nagarjuna2997/ios-agent-skill).
5
15
 
6
16
  The skill teaches an agent how to *write* iOS code. This server lets an agent
7
- *check* it — six tools that read a Swift project and report defects with a file,
8
- a line, the consequence, and the fix.
17
+ *check* it — ten tools that read a Swift project and report defects with a file,
18
+ a line, the consequence, and the fix, plus one that lints a skill repository's
19
+ own metadata.
9
20
 
10
21
  ```
11
22
  You: Review my Swift project for concurrency problems.
@@ -80,6 +91,11 @@ npm install && npm run build
80
91
  | `review_swiftui` | Fixed font sizes and heights, `AnyView`, `.cornerRadius`, literal spacing, materials over solid backgrounds, view state on models, `ObservableObject`, `@EnvironmentObject`, `try!` |
81
92
  | `check_availability_guards` | Missing guards, **over-restrictive guards** (an iOS 26 API guarded at iOS 27 silently drops every iOS 26 device), Foundation Models without a runtime availability check |
82
93
  | `audit_app_store_readiness` | Permission frameworks with no Info.plist purpose string, missing `PrivacyInfo.xcprivacy`, unlocalized strings, unlabeled icon buttons, `print()` |
94
+ | `review_swift_memory` | Repeating `Timer` and `NotificationCenter` blocks capturing self, Combine sinks, non-`weak` delegates, stored closures, `unowned self` |
95
+ | `review_swift_security` | Hardcoded secrets, credentials in `UserDefaults`, disabled ATS, cleartext HTTP, TLS trust accepted without evaluation, MD5/SHA-1, Keychain accessibility |
96
+ | `review_swift_testing` | **Test files only.** Sleeping, tests with no assertion, live `URLSession`, `await` in an `XCTAssert` autoclosure, order-dependent static state |
97
+ | `review_swift_performance` | Formatters and collection work inside `body`, `ForEach` over indices, eager stacks in a `ScrollView`, blocking I/O on the render path |
98
+ | `lint_skill` | **Skill metadata, not Swift.** `SKILL.md` frontmatter, subagent `name`/filename mismatches, misspelled tool names, **read-only agents granted `Edit` or `Write`**, mirror files drifted from `SKILL.md`, broken doc references |
83
99
 
84
100
  Every tool takes one argument:
85
101
 
@@ -87,6 +103,47 @@ Every tool takes one argument:
87
103
  { "path": "/absolute/path/to/your/project" }
88
104
  ```
89
105
 
106
+ The first ten want a Swift project root. `lint_skill` wants an Agent Skill
107
+ repository root — the folder containing `SKILL.md`.
108
+
109
+ Every review tool also returns `structuredContent` — typed data with `summary`,
110
+ `score`, `counts`, `files_checked`, `issues`, and `suggestions` — alongside the
111
+ markdown, so a workflow can branch on a result without regexing prose.
112
+
113
+ ---
114
+
115
+ ## Resources
116
+
117
+ Tools are verbs the model chooses to call. Resources are nouns a client can read
118
+ without being asked, so a project's shape can be attached to context up front.
119
+
120
+ ```jsonc
121
+ {
122
+ "mcpServers": {
123
+ "ios-agent": {
124
+ "command": "npx",
125
+ "args": ["-y", "ios-agent-mcp", "--project", "/absolute/path/to/project"]
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ | Resource | Contains |
132
+ |---|---|
133
+ | `ios://project/info` | Counts, deployment target, UI framework, inferred architecture **with its evidence**, DI detection, frameworks |
134
+ | `ios://project/dependencies` | Third-party packages from `Package.swift` / `Package.resolved` / `Podfile`, plus Apple frameworks |
135
+ | `ios://project/issues` | Every finding across all nine categories, with counts by severity and category |
136
+
137
+ The root comes from `--project`, then `IOS_AGENT_PROJECT`, then the working
138
+ directory the client spawned the server in. **Every payload reports which root it
139
+ used**, so an empty project is never mistaken for a wrong path.
140
+
141
+ **There is deliberately no `ios://project/build-status`.** It would have to run
142
+ `xcodebuild`, which needs macOS and Xcode and breaks the
143
+ `filesystem: read, network: none` contract that lets this package install
144
+ anywhere in ~26 KB. Build and simulator state belong in the separate package that
145
+ already requires a full toolchain — see [ROADMAP.md](../ROADMAP.md).
146
+
90
147
  ---
91
148
 
92
149
  ## What it does and does not do
@@ -115,7 +172,7 @@ Test, mock, stub, and preview files are exempt from the app-code-only rules, and
115
172
  ```bash
116
173
  npm install
117
174
  npm run build # tsc
118
- npm test # 38 tests: unit + end-to-end over real MCP stdio
175
+ npm test # 123 tests: unit + end-to-end over real MCP stdio
119
176
  npm run typecheck
120
177
  ```
121
178
 
@@ -151,7 +208,7 @@ After publishing, verify:
151
208
 
152
209
  ```bash
153
210
  npm view ios-agent-mcp version # registry has it
154
- npx -y ios-agent-mcp --version # 1.0.0
211
+ npx -y ios-agent-mcp --version # 2.1.0
155
212
  npx -y ios-agent-mcp --help # usage, tool list, setup commands
156
213
  ```
157
214
 
@@ -173,10 +230,20 @@ The npm package version and the repository version are **independent**:
173
230
 
174
231
  | | Version | Why |
175
232
  |---|---|---|
176
- | `ios-agent-mcp` on npm | `1.0.0` | First release of this package |
177
- | `ios-agent-skill` repo / `SKILL.md` | `2.0.0` | Its own release history |
233
+ | `ios-agent-mcp` on npm | `2.1.0` | Generated from `package.json` see below |
234
+ | `ios-agent-skill` repo / `SKILL.md` | `2.1.0` | Kept in lockstep since 2.1.0 |
235
+
236
+ **The version lives in `package.json` and nowhere else.** `mcp.json`,
237
+ `package-lock.json`, the CLI, and the MCP handshake are all generated from it by
238
+ `npm run sync-version`, which `build` and `typecheck` run automatically.
239
+
240
+ This exists because **2.0.1 shipped to npm with an `mcp.json` declaring
241
+ `1.0.0`** — the version was maintained by hand in four places, so one was always
242
+ wrong and nothing checked. CI runs `sync-version --check`, so a hand-edit fails
243
+ the build rather than reaching the registry.
178
244
 
179
- This is not a mismatch. Bump the npm version only when the server changes.
245
+ Since 2.1.0 the skill and the server share a version. They were independent
246
+ before, which is exactly how 2.0.1 shipped with a manifest reading 1.0.0.
180
247
 
181
248
  ## License
182
249