# Manage and build with Claude Web, Claude Code, and Codex (UI × MCP)

With PM on Rails, **AI agents such as Claude Web, Claude Code, Codex, and Cursor** can read and write the requirements, stories, and tasks a PM shaped on screen. The UI (what people look at) and MCP (the port AI tools plug into) share **the same graph**, so PM work and engineering work never drift apart.

![PM on Rails Claude Code / Codex integration. The coding agent reads requirements, acceptance criteria and tasks. Before: you passed a task title and let it guess. After: implementation starts with a map.](https://pmonrails.com/docs-img/mcp-tools.png)

## Connect (setup)

### Claude Web / remote MCP

In a Claude Web custom connector, register `https://pmonrails.com/api/mcp` as the PM on Rails MCP URL. Authentication goes through OAuth, so you never have to paste a personal access token into Claude Web. Client ID and Secret can stay empty.

1. Open `Customize → Connectors → Add custom connector` in Claude Web.
2. Enter `https://pmonrails.com/api/mcp` as the URL.
3. Approve the workspace and the permissions on the PM on Rails consent screen.

### Claude Code / CLI

1. Run `npm install -g pm-on-rails` in a terminal to install the CLI (Node.js 20 or later is required).
2. Run `pm-on-rails login` and approve in the browser that opens. The token is stored in your OS keychain.
3. Run `pm-on-rails mcp install` and the MCP connection is registered with Claude Code (it runs `claude mcp add` under the hood; by default the connection is available from every project). Restart Claude Code after registering.
4. For other MCP-capable agents such as Codex and Cursor, issue an access token (PAT) in Token management under "Personal settings → Integrations", then configure the endpoint and the token.

> A token belongs to a single workspace. For the full list of what it can do, see the [MCP feature reference](https://pmonrails.com/en/docs/mcp-reference.md).

## One development loop (how it plays out)

The PM organizes and reviews in Claude Web, and the engineer moves straight into implementation with Claude Code / Codex.

1. **See what to pick up** — "Show me the unstarted tasks in the current sprint" returns the task list and their contents.
2. **Understand the background and the definition of done** — "Tell me the background and the acceptance criteria for this task" **follows the chain** from requirement card to requirement to story to scenario and lays it out.
3. **Assign it to yourself and start** — "I'll take this one" assigns the task to you and moves it to In progress.
4. **The branch and the pull request link themselves** — the response you get when you start a task includes a **branch name** and **a single line to paste into the pull request body** (the fixed format `PMR-Task: <ID>`, written literally rather than localized). Use them as they are and the task and the pull request are linked **without typing a UUID by hand** ([GitHub integration](https://pmonrails.com/en/docs/github.md)).
5. **You notice spec changes made after you started** — even if the PM changes a requirement while you are implementing, the agent can detect that upstream moved after you picked the task up ([Change tracking](https://pmonrails.com/en/docs/change-tracking.md)).
6. **Merging completes the task** — when the pull request is merged into the default branch (main), the task turns Done automatically and the parent story's status is recalculated (a merge into a feature branch is treated as waiting).

## What you can do

Conversation alone covers the operations below. For the exhaustive list, see the [MCP feature reference](https://pmonrails.com/en/docs/mcp-reference.md).

- **Read** — lists and details of tasks, stories, and requirements, following the chain, searching for similar requirements and past decisions, project statistics.
- **Create and change** — create and update requirement cards, requirements, stories, acceptance scenarios, and tasks; change statuses; assign to yourself; complete.
- **Handle bugs** — file a bug, record what it affects, record how it was resolved, promote it into a requirement so it does not come back.
- **Export and integrate** — Markdown export, turning a story into a GitHub issue, linking a pull request to a task.
- **Estimate** — get a suggested effort estimate for a task.
- **Run in bulk** — run several operations in one go (if one fails partway, all of them are rolled back).

## Choosing between the UI and Claude Web / Claude Code / Codex

| What you want to do | Screen (UI) | AI agent (MCP) |
| --- | --- | --- |
| Agree on requirements and scope with the stakeholder | ◎ | △ |
| See the whole picture on the roadmap and the board | ◎ | ○ (good at summaries) |
| Let a PM organize and update through conversation | ○ | ◎ (Claude Web) |
| Update tasks and scenarios while implementing | ○ | ◎ (Claude Code / Codex) |
| Write code while reading the background and acceptance criteria | △ | ◎ (Claude Code / Codex) |
| File or update a large batch at once | △ | ◎ |
| Export to Markdown / GitHub | ○ | ○ |

Whichever side you work from, **the same graph** is updated and the same business rules and safety checks apply.

## Safety

- Every operation stays within the workspace and project permissions tied to the token.
- The same confirmations and rules as the screens apply to operations coming from an agent.

## Next steps

- [User stories and scenarios](https://pmonrails.com/en/docs/stories.md) / [Change tracking](https://pmonrails.com/en/docs/change-tracking.md) / [Manage progress](https://pmonrails.com/en/docs/progress.md)
- Tool details → [Claude Web, Claude Code, and MCP integration](https://pmonrails.com/en/docs/mcp.md)

---

https://pmonrails.com/en/docs/ai-coding
