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.
- package/README.md +74 -7
- package/data/knowledge.json +1 -0
- package/dist/analyzers/memory.d.ts +12 -0
- package/dist/analyzers/memory.js +81 -0
- package/dist/analyzers/memory.js.map +1 -0
- package/dist/analyzers/performance.d.ts +10 -0
- package/dist/analyzers/performance.js +106 -0
- package/dist/analyzers/performance.js.map +1 -0
- package/dist/analyzers/security.d.ts +2 -0
- package/dist/analyzers/security.js +82 -0
- package/dist/analyzers/security.js.map +1 -0
- package/dist/analyzers/skill.d.ts +34 -0
- package/dist/analyzers/skill.js +483 -0
- package/dist/analyzers/skill.js.map +1 -0
- package/dist/analyzers/testing.d.ts +16 -0
- package/dist/analyzers/testing.js +135 -0
- package/dist/analyzers/testing.js.map +1 -0
- package/dist/analyzers/types.d.ts +19 -1
- package/dist/analyzers/types.js +65 -3
- package/dist/analyzers/types.js.map +1 -1
- package/dist/index.js +162 -5
- package/dist/index.js.map +1 -1
- package/dist/knowledge-server.d.ts +2 -0
- package/dist/knowledge-server.js +44 -0
- package/dist/knowledge-server.js.map +1 -0
- package/dist/knowledge.d.ts +78 -0
- package/dist/knowledge.js +69 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/report.d.ts +10 -0
- package/dist/report.js +40 -0
- package/dist/report.js.map +1 -1
- package/dist/resources.d.ts +67 -0
- package/dist/resources.js +222 -0
- package/dist/resources.js.map +1 -0
- package/dist/result.d.ts +203 -0
- package/dist/result.js +135 -0
- package/dist/result.js.map +1 -0
- package/dist/scan.d.ts +9 -0
- package/dist/scan.js +110 -0
- package/dist/scan.js.map +1 -1
- package/dist/version.d.ts +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/mcp.json +76 -11
- 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 —
|
|
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 #
|
|
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
|
|
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
|
|
177
|
-
| `ios-agent-skill` repo / `SKILL.md` | `2.
|
|
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
|
-
|
|
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
|
|