// ai client LIVE

Cursor

Cursor IDE, Streamable HTTP MCP with command logging

Cursor connects to the same shared AgentOS MCP server as Claude and Codex. Portfolio reads are available via MCP resources. A beforeSubmitPrompt hook logs every slash command invocation back to the AgentOS server so Cursor activity appears in the dashboard alongside Claude and Codex.

12 mcp tools 01 command hook 16 shared skills 3000 server port
connection [01]

Streamable HTTP to Shared Server

No separate Cursor-specific server. Cursor registers the shared agentOS-portfolio MCP server in its MCP config, connecting via the same endpoint used by Claude Code and Codex.

Server name
agentOS-portfolio

Registered in ~/.cursor/mcp.json by sync.ps1.

URL
127.0.0.1:3000/mcp

Streamable HTTP transport. Same server, same endpoint as the other two clients.

Enable after deploy
Settings → MCP

After running sync, open Cursor MCP Settings and enable the server if shown as disabled. Reload the Cursor window for hooks to take effect.

available_tools [02]

Portfolio MCP Tools

Cursor does not expose the operational tools (git, extension) that Codex does. Portfolio reads are the primary use case: give Cursor the same context about identity, projects, and preferences that Claude carries automatically via CLAUDE.md.

Tool Description
list_portfolio_files Lists all files in AgentOS/context-portfolio/. Returns filenames so the agent knows what context is available to read.
read_portfolio_file Reads any portfolio file by name or portfolio:// URI. Returns full file contents from disk. No caching, always current.
setup [03]

Four-Step Setup

The AgentOS Setup Wizard (available in the VSCode dashboard) can guide through these steps interactively. Manual steps if running without the wizard:

01
Ensure AGENTOSROOT is set

The sync script resolves the repo path from $env:AGENTOSROOT. Set it as a persistent Windows user environment variable if not already done. See the Claude setup page for the powershell command.

02
Verify the MCP server is running

Run pm2 status and confirm agentOS-portfolio shows as online. Start it with pm2 start mcp-server/server.js --name agentOS-portfolio if not running.

03
Run sync.ps1 push-runtime

& "$env:AGENTOSROOT\clients\cursor\sync.ps1" push-runtime

This deploys mcp-config.json to ~/.cursor/mcp.json, copies hooks.json, and deploys shared skills to ~/.cursor/skills/.

04
Enable in Cursor and reload

Open Cursor, go to Settings → MCP (or run Cursor: Open MCP Settings from the command palette). The agentOS-portfolio server should appear. Enable it if shown as disabled, then reload the Cursor window so hooks and MCP config take effect.

command_logging [04]

Invocation Tracking via hooks.json

Cursor supports a beforeSubmitPrompt hook. When configured, any slash command invocation posts to the AgentOS MCP server, tagging the event with tool: "Cursor". These appear in the dashboard Commands tab Invocation Log alongside Claude events.

# clients/cursor/hooks.json (deployed to ~/.cursor/hooks.json)
{
"beforeSubmitPrompt": "POST http://127.0.0.1:3000/command-log"
# Posts: { tool: "Cursor", command: "/jn-*", invokedAt: ... }
}
The hook requires the AgentOS MCP server to be running. If the server is offline, the POST fails silently and the command still runs in Cursor. Dashboard logging is a side-effect, not a dependency.
skills [05]

Shared jn-* Skills in Cursor

sync.ps1 deploys all 16 shared commands from clients/shared/skills/ to ~/.cursor/skills/. Available as /jn-* slash commands within Cursor sessions. Each invocation is captured by the hooks.json hook and posted to the dashboard.

See the Claude page for the full command list: all 16 commands are identical across Claude, Codex, and Cursor.

sync [06]

sync.ps1 Commands

Command What it does
push-runtime Deploys mcp-config.json to ~/.cursor/mcp.json, hooks.json, and shared skills. The repo is the source of truth.
pull-runtime Copies ~/.cursor/mcp.json back into the repo for inspection or comparison. Useful for auditing drift.
check-sync Reports whether the repo copy and ~/.cursor/ are in sync. Exits non-zero when drift is detected.