@yaaif/platform-mcp
# @yaaif/platform-mcp
Stdio MCP bridge and Node installer for the YAAIF **Cursor**, **VS Code**, **IntelliJ IDEA**, **Claude Code**, **Codex**, and **OpenCode** plugins.
Plugin contract **1.4.0**. This package **1.3.5**. Each IDE keeps its own login state and OIDC client.
`--install` writes the platform profile and (for Cursor) copies plugin files. It does **not** register the plugin in the IDE. Finish in Cursor / Claude / Codex after the CLI exits.
| IDE | Plugin repo | Marketplace | Plugin ID | State directory | OIDC client |
| --- | --- | --- | --- | --- | --- |
| **Cursor** | [yaaif/cursor-plugin](https://github.com/yaaif/cursor-plugin) | `yaaif` | `yaaif` | `~/.yaaif/cursor` | `yaaif-cursor` |
| **Claude Code** | [yaaif/claude-plugin](https://github.com/yaaif/claude-plugin) | `yaaif` | `yaaif-platform` | `~/.yaaif/claude` | `yaaif-claude` |
| **Codex** | [yaaif/codex-plugin](https://github.com/yaaif/codex-plugin) | `yaaif` | `yaaif-platform` | `~/.yaaif/codex` | `yaaif-codex` |
## Dependencies
Install these on the **same OS** as the IDE (do not mix WSL Node with Windows Cursor).
| Dependency | Requirement | Who |
| --- | --- | --- |
| **Node.js** | ≥ 20 (`node -v`). Provides `npx`. | All |
| **npm package** | `@yaaif/platform-mcp@1.3.5` must be **Published** (`npm view @yaaif/platform-mcp version`) | All |
| **Git** | Clone Cursor plugin; Claude/Codex marketplace add clones GitHub | Cursor always; Claude/Codex marketplace |
| **Browser** | OIDC PKCE sign-in | All |
| **Cursor Desktop** | Plugins + MCP | Cursor |
| **Claude Code** | Desktop and/or `claude` CLI | Claude |
| **Codex** | App/CLI with local marketplaces | Codex |
| **YAAIF user** | Platform **`DEVELOPER`** role on the target tenant | All |
| **Network** | npm, GitHub, and the YAAIF host | All |
**Operator (once per environment):** enable public Keycloak clients `yaaif-cursor`, `yaaif-claude`, and `yaaif-codex` (PKCE, no client secret).
**Not required:** Go/Python/Docker, native `.pkg` / `.msi` / `.deb` installers, S2S secrets, desktop connection keys, or AI-gateway keys.
Run `npx` from your **home directory**, not from a checkout of this repo (that path fails with `yaaif-platform-mcp: command not found`).
```bash
cd ~
```
## Shared installer
The CLI asks you to choose hosted `https://platform.yaaif.ai` or another YAAIF URL.
```bash
npx -y @yaaif/platform-mcp@1.3.5 --install --client cursor|vscode|intellij|claude|codex|opencode
```
Non-interactive:
```bash
npx -y @yaaif/platform-mcp@1.3.5 --install --client claude --yaaif-url https://your.yaaif.host
npx -y @yaaif/platform-mcp@1.3.5 --install --client cursor --profile hosted --plugin-src ./cursor-plugin
```
`--no-login` skips the browser. `--offline` pins absolute `node` + `cli.js` for Claude/Codex (Cursor always uses absolute `node` + `cli.js`). `--force` overwrites a newer Cursor dest. `--cli-path` is required if the running CLI lives under an `npx` cache.
### Air-gap
On a machine with npm: `npm pack @yaaif/platform-mcp@1.3.5`. Copy the `.tgz` plus the plugin clone.
```bash
npm install -g ./yaaif-platform-mcp-1.3.5.tgz
yaaif-platform-mcp --install --client cursor|claude|codex --plugin-src <dir> --offline
```
---
## Cursor — end to end
1. **Install profile and copy plugin files**
```bash
cd ~
git clone https://github.com/yaaif/cursor-plugin.git
npx -y @yaaif/platform-mcp@1.3.5 --install --client cursor --plugin-src ./cursor-plugin
```
Choose hosted or your YAAIF URL and complete browser login.
Dest: `~/.cursor/plugins/local/yaaif` (Windows: `%USERPROFILE%\.cursor\plugins\local\yaaif`).
2. **Register in Cursor (required)**
Cursor → **Plugins** → **+ Add** → **Add local plugin** → that path → **Developer: Reload Window**.
3. **Verify**
`/yaaif-login` then `/yaaif-doctor` until `ready: true`.
Marketplace alternative (when published): install **yaaif** from Cursor Marketplace, configure plugin variables if needed, reload, then `/yaaif-login` and `/yaaif-doctor`.
---
## Claude Code — end to end
1. **Sign in** (does not add the plugin)
```bash
cd ~
npx -y @yaaif/platform-mcp@1.3.5 --install --client claude
```
2. **Add marketplace and install plugin (required)**
```bash
claude plugin marketplace add yaaif/claude-plugin
claude plugin install yaaif-platform@yaaif
```
Or **Customize → Plugins → Add** → GitHub `yaaif/claude-plugin` → install **`yaaif-platform`**. Do not search for `yaaif/yaaif-platform`.
Local only: `claude plugin marketplace add /path/to/claude-plugin` or `claude --plugin-dir /path/to/claude-plugin`.
3. **New session**
Quit Claude Code, open a new session, optionally `/plugin configure yaaif-platform@yaaif`, then `/yaaif-platform:yaaif-login` and `/yaaif-platform:yaaif-doctor`.
MCP start command: `npx -y @yaaif/platform-mcp@1.3.5 --client claude`.
---
## Codex — end to end
1. **Sign in** (does not add the plugin)
```bash
cd ~
npx -y @yaaif/platform-mcp@1.3.5 --install --client codex
```
2. **Add marketplace and install plugin (required)**
```bash
git clone https://github.com/yaaif/codex-plugin.git
```
In Codex, add the clone as a local marketplace named **`yaaif`**, install **YAAIF** (`yaaif-platform`), then start a **new** task.
3. **Verify**
`$yaaif-login` then `$yaaif-doctor`. Codex has no `userConfig` and no `commands/`; short names are alias skills.
MCP start command: `npx -y @yaaif/platform-mcp@1.3.5 --client codex`.
---
## Profiles
| Profile | When |
| --- | --- |
| **Hosted** | `https://platform.yaaif.ai` |
| **Custom URL** | Customer host, e.g. `https://yaaif.mydin.com` (OIDC `{url}/auth/realms/yaaif`) |
| **`local`** | All APIs on `https://platform.yaaif.local` |
| **`local-hybrid`** | OIDC on `.com` / tunnel, APIs on `.local` |
Optional `YAAIF_EXTRA_CA_FILE` for a local/corporate CA. Tokens stay in `~/.yaaif/<ide>/session.json` (`0600`). Do not commit that directory.
## Local development
```bash
npm install
npm test
npm run build
node dist/cli.js --client cursor
```
`--setup detect|profile|login|whoami|all` remains available after install.
## License
Apache-2.0
TDQS
Scored across 203 tools
Multiple tools overlap significantly: yaaif_ops_telemetry has six explicit aliases, and file retrieval is spread across yaaif_files_list, yaaif_session_files_list, yaaif_load_artifacts, yaaif_file_load_context, and yaaif_file_get_extracted with only subtle differences. The ~50 agent_spec_* tools and several mcp_deployment_* variants further blur boundaries, so an agent can easily misselect despite descriptive text.
The yaaif_ prefix is consistent, but verb/noun ordering is mixed (e.g., yaaif_agent_list vs yaaif_list_ambient_workflows), and some tools break the pattern entirely (yaaif_doctor, yaaif_whoami, yaaif_mcp_link_or_create). Domain clusters like ops_* and agent_spec_* are internally consistent, but the overall convention is a blend rather than a uniform scheme.
203 tools is an extreme count for any MCP server; even a full platform API would be better served by a smaller, curated toolkit with grouped resources instead of 200+ named functions. Many tools are aliases or micro-operations (e.g., six ops_telemetry aliases and dozens of agent_spec_* tools), so the count adds navigation overhead without proportional capability.
The tool surface is extraordinarily broad, covering platform/auth, agents, skills, MCP deployments, API keys, users, approvals, desktop packages, files, ops/telemetry, and the full Scenario agent-spec lifecycle. Minor gaps exist—no agent/skill/user delete tools and some workflows require external UI steps—but most create/read/update operations are covered.