{
  "markdown": "# ThinkReview MCP\n\nHosted [Model Context Protocol](https://modelcontextprotocol.io) server for **AI code reviews** on pull request and merge request URLs.\n\nConnect **Cursor**, **Claude Code**, **Claude Desktop**, or **GitHub Copilot**, paste a PR/MR URL, and get a structured review — without pasting a diff into chat.\n\n| | |\n|---|---|\n| **Endpoint** | `https://mcp.thinkreview.dev/v1` |\n| **Transport** | Streamable HTTP |\n| **Auth** | **OAuth (recommended)** or Bearer token |\n| **Registry** | [`io.github.Thinkode/thinkreview`](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.Thinkode%2Fthinkreview/versions/latest) |\n| **Product** | [thinkreview.dev/features/mcp](https://thinkreview.dev/features/mcp) |\n| **Docs** | [thinkreview.dev/docs/mcp-integration](https://thinkreview.dev/docs/mcp-integration/) |\n| **Setup** | [portal.thinkreview.dev/mcp](https://portal.thinkreview.dev/mcp) |\n\n> This repository is for **visibility and client documentation**. ThinkReview MCP runs as a **remote hosted server**. The review engine, auth, billing, and git integrations stay on ThinkReview infrastructure and are not published here.\n\n---\n\n## What it does\n\nThinkReview MCP exposes one tool:\n\n### `review_url_code`\n\nRun a live code review on a GitHub, GitLab, Azure DevOps, or Bitbucket PR/MR URL.\n\nThinkReview fetches changed files through your **stored git credentials** (portal Integrations) and returns a structured review: summary, suggestions, security notes, best practices, and suggested follow-up questions.\n\n| Parameter | Required | Description |\n|---|---|---|\n| `prUrl` | Yes | Full or domain-style PR/MR URL (e.g. `https://github.com/org/repo/pull/42`) |\n| `language` | No | Response language (default: English) |\n| `mrId` | No | Optional tracking ID for your workflow |\n| `forceRegenerate` | No | `true` to bypass cache and force a new review |\n\nURL reviews use the **same review credits** as the ThinkReview browser extension.\n\n---\n\n## Authentication\n\nChoose one method. Interactive configs for both are on [portal.thinkreview.dev/mcp](https://portal.thinkreview.dev/mcp).\n\n| Method | How it works | Best for |\n|---|---|---|\n| **OAuth (recommended)** | URL-only MCP config → **Authenticate** in the browser on the ThinkReview portal | Cursor, Claude Code, Claude Desktop, Copilot |\n| **Bearer token** | Long-lived portal token in `Authorization: Bearer <token>` headers | Extension, CI, or clients that cannot complete OAuth |\n\nOAuth sessions are **separate** from the extension Bearer token. Regenerating the Bearer token does **not** revoke OAuth MCP sessions.\n\n---\n\n## Prerequisites\n\n1. A [ThinkReview](https://thinkreview.dev) account with an active plan or available review credits\n2. Git credentials under **Settings → Integrations** for the host of the PR you want to review\n3. An MCP client that supports **Streamable HTTP**, plus either:\n   - **OAuth** for remote HTTP servers, or\n   - A Bearer token from [portal.thinkreview.dev/mcp](https://portal.thinkreview.dev/mcp)\n\n---\n\n## Quick start — OAuth (recommended)\n\nAdd a **URL-only** config, then **Authenticate** in your client (browser opens the ThinkReview portal).\n\n### Cursor\n\n```json\n{\n  \"mcpServers\": {\n    \"thinkreview\": {\n      \"url\": \"https://mcp.thinkreview.dev/v1\"\n    }\n  }\n}\n```\n\nEnable **thinkreview**, click **Authenticate**, complete portal consent.  \nExample: [`examples/oauth/cursor.mcp.json`](examples/oauth/cursor.mcp.json)\n\n### Claude Code\n\nCLI:\n\n```bash\nclaude mcp add --transport http thinkreview https://mcp.thinkreview.dev/v1\n```\n\n![Add ThinkReview MCP with Claude Code CLI](docs/claude-code-setup/01-claude-code-mcp-add.png)\n\nOr config (`~/.claude.json` / project `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"thinkreview\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.thinkreview.dev/v1\"\n    }\n  }\n}\n```\n\nExample: [`examples/oauth/claude.mcp.json`](examples/oauth/claude.mcp.json)\n\n#### Authenticate (OAuth)\n\n1. Start Claude Code and run `/mcp`.\n\n![Open /mcp in Claude Code](docs/claude-code-setup/02-claude-code-open-mcp.png)\n\n2. Select **thinkreview** — status shows **needs authentication**.\n\n![thinkreview needs authentication](docs/claude-code-setup/03-claude-code-needs-auth.png)\n\n3. Choose **Authenticate**.\n\n![Select Authenticate](docs/claude-code-setup/04-claude-code-authenticate.png)\n\n4. Claude Code opens the browser OAuth flow (`/authorize` → portal consent).\n\n![Browser OAuth URL in Claude Code](docs/claude-code-setup/05-claude-code-browser-oauth.png)\n\n![Authorize ThinkReview MCP on the portal](docs/claude-code-setup/06-portal-oauth-consent.png)\n\n5. After you click **Allow**, return to Claude Code — you should see **Authentication successful**.\n\n![Authentication successful](docs/claude-code-setup/07-claude-code-auth-success.png)\n\n#### Run a review\n\nAsk Claude Code to review a PR URL (tool: `review_url_code`):\n\n![Invoke review_url_code](docs/claude-code-setup/08-claude-code-review-tool.png)\n\n![Example review result](docs/claude-code-setup/09-claude-code-review-result.png)\n\n### Claude Desktop\n\n**Preferred:** Settings → **Connectors** → Add custom connector → `https://mcp.thinkreview.dev/v1` → Connect → complete portal OAuth.\n\nClaude Desktop’s `claude_desktop_config.json` does **not** accept Claude Code’s `\"type\": \"http\"` block. To use the config file instead, bridge with `mcp-remote` (requires Node.js), then fully quit and reopen Desktop:\n\n```json\n{\n  \"mcpServers\": {\n    \"thinkreview\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-remote\", \"https://mcp.thinkreview.dev/v1\"]\n    }\n  }\n}\n```\n\n![claude_desktop_config.json with mcp-remote](docs/claude-code-setup/10-claude-desktop-config.png)\n\nAfter restart, Settings → Developer → Local MCP servers should show **thinkreview** as **running**. Complete OAuth when prompted (same portal consent as Claude Code).\n\n![thinkreview running in Claude Desktop](docs/claude-code-setup/11-claude-desktop-running.png)\n\nExample: [`examples/oauth/claude-desktop.mcp.json`](examples/oauth/claude-desktop.mcp.json)\n\n### GitHub Copilot (VS Code)\n\n`.vscode/mcp.json` or user MCP config (`servers` key):\n\n```json\n{\n  \"servers\": {\n    \"thinkreview\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.thinkreview.dev/v1\"\n    }\n  }\n}\n```\n\nUse **Auth / Authenticate** on the thinkreview server, then enable it in Copilot Chat.  \nExample: [`examples/oauth/vscode-copilot.mcp.json`](examples/oauth/vscode-copilot.mcp.json)\n\n### Example prompt\n\n> Call `review_url_code` for https://github.com/org/repo/pull/123\n\n---\n\n## Alternative — Bearer token\n\nCopy your token from [portal.thinkreview.dev/mcp](https://portal.thinkreview.dev/mcp) and add it as a header. Same session token as the browser extension. Regenerating invalidates the previous token for extension and Bearer-based MCP clients.\n\n### Cursor\n\n```json\n{\n  \"mcpServers\": {\n    \"thinkreview\": {\n      \"url\": \"https://mcp.thinkreview.dev/v1\",\n      \"headers\": {\n        \"Authorization\": \"Bearer <your-token>\"\n      }\n    }\n  }\n}\n```\n\nExample: [`examples/bearer/cursor.mcp.json`](examples/bearer/cursor.mcp.json)\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http thinkreview https://mcp.thinkreview.dev/v1 \\\n  --header \"Authorization: Bearer <your-token>\"\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"thinkreview\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.thinkreview.dev/v1\",\n      \"headers\": {\n        \"Authorization\": \"Bearer <your-token>\"\n      }\n    }\n  }\n}\n```\n\nExample: [`examples/bearer/claude.mcp.json`](examples/bearer/claude.mcp.json)\n\n### Claude Desktop (`mcp-remote` + header)\n\n```json\n{\n  \"mcpServers\": {\n    \"thinkreview\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://mcp.thinkreview.dev/v1\",\n        \"--header\",\n        \"Authorization:${AUTH_HEADER}\"\n      ],\n      \"env\": {\n        \"AUTH_HEADER\": \"Bearer <your-token>\"\n      }\n    }\n  }\n}\n```\n\nExample: [`examples/bearer/claude-desktop.mcp.json`](examples/bearer/claude-desktop.mcp.json)\n\n### GitHub Copilot (VS Code)\n\n```json\n{\n  \"servers\": {\n    \"thinkreview\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.thinkreview.dev/v1\",\n      \"headers\": {\n        \"Authorization\": \"Bearer <your-token>\"\n      }\n    }\n  }\n}\n```\n\nExample: [`examples/bearer/vscode-copilot.mcp.json`](examples/bearer/vscode-copilot.mcp.json)\n\n---\n\n## Supported platforms\n\nSame hosts as the ThinkReview extension:\n\n- GitHub.com and GitHub Enterprise Server\n- GitLab.com and self-managed GitLab\n- Azure DevOps Cloud and on-premise\n- Bitbucket Cloud and Bitbucket Data Center\n\n---\n\n## Security\n\n- Prefer **OAuth** so long-lived tokens are not stored in MCP config files\n- If you use a Bearer token, treat it like a password — do not commit it to git\n- Store tokens only in local MCP client config or a secrets manager\n- Regenerate the Bearer token from the portal if it is ever exposed\n- Use git PATs with the minimum scopes needed to read PRs/MRs and diffs\n\n---\n\n## Related\n\n- [Browser extension (open source)](https://github.com/Thinkode/thinkreview-browser-extension)\n- [MCP product page](https://thinkreview.dev/features/mcp)\n- [Full integration docs](https://thinkreview.dev/docs/mcp-integration/)\n- [Support / contact](https://thinkreview.dev/contact)\n- [Feedback](https://thinkreview.dev/feedback)\n\n---\n\n## License\n\nDocumentation and example configs in this repository are licensed under the [MIT License](LICENSE).\n\nThe ThinkReview hosted MCP service, APIs, and review infrastructure remain proprietary to Thinkode / ThinkReview.\n",
  "bytes": 9472,
  "sha": "719516dac604cf2e94de5eb2b0d32a6bf0d7c23946ef548cef5a6b9001dfa611",
  "repo_slug": "thinkode/thinkreview-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_thinkode_thinkreview_31f89e3f/readme"
}