<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jay Elsheikh</title>
    <description>The latest articles on DEV Community by Jay Elsheikh (@jay_elsheikh_59b14ad67922).</description>
    <link>https://dev.to/jay_elsheikh_59b14ad67922</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3392363%2Fa89e62e0-f820-42f6-9794-8088b8c3be51.jpg</url>
      <title>DEV Community: Jay Elsheikh</title>
      <link>https://dev.to/jay_elsheikh_59b14ad67922</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jay_elsheikh_59b14ad67922"/>
    <language>en</language>
    <item>
      <title>Comet and Atlas: why the AI browser bet is failing</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Mon, 05 Oct 2026 08:00:00 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/comet-and-atlas-why-the-ai-browser-bet-is-failing-47l3</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/comet-and-atlas-why-the-ai-browser-bet-is-failing-47l3</guid>
      <description>&lt;p&gt;For about a year, the serious product bet in consumer AI was a new browser. Chat was a window you pasted into. A browser was the place the work already lived: the tab, the login, the form, the receipt. If the model could see that page and act on it, the address bar would replace the chat box.&lt;/p&gt;

&lt;p&gt;Perplexity shipped Comet in July 2025, first on the Max plan, then free worldwide on 2 October 2025. OpenAI shipped ChatGPT Atlas on 21 October 2025, macOS only. The Browser Company's Dia sat in the same conversation. Three products, one sentence: stop copying the page into a chatbot.&lt;/p&gt;

&lt;p&gt;That sentence was right about the problem. It was early about the container.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a browser felt like the product
&lt;/h2&gt;

&lt;p&gt;Search and chat had split the job badly. You asked a question, got an answer, then opened six tabs to check it. An AI browser promised to collapse that loop. Type the task. The browser searches, opens the pages, summarizes them in place, and, when you allow it, clicks through.&lt;/p&gt;

&lt;p&gt;Comet's pitch was research with an agent beside the page. Summaries sat on the article. Agent mode could run a multi-step task. Atlas's pitch was action. OpenAI described a browser that could complete work across sites you were already signed into, with ChatGPT as the sidebar that could take the wheel.&lt;/p&gt;

&lt;p&gt;The category had a clean story for investors and for users tired of tab hoarding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The page is the context. You should not have to paste it.&lt;/li&gt;
&lt;li&gt;The click is the action. You should not have to do the last ten steps yourself.&lt;/li&gt;
&lt;li&gt;The session is the memory. Logins, carts, and dashboards are already there.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By early 2026 the usage stories matched the pitch, at least in third-party trackers. Presenc AI put Comet near &lt;strong&gt;18 million&lt;/strong&gt; monthly active users in Q1 2026, up from about &lt;strong&gt;2.4 million&lt;/strong&gt; a year earlier, with agent-task completion climbing as the tool-use stack got less fragile. Perplexity has not published that figure itself. The direction was hard to miss: a lot of people tried a browser whose main feature was a model.&lt;/p&gt;

&lt;p&gt;HUMAN Security's May 2026 read of agentic web traffic put Comet at &lt;strong&gt;47%&lt;/strong&gt; of observed agent traffic and Atlas at &lt;strong&gt;20.3%&lt;/strong&gt;. Together they were most of the category. Media, commerce, and travel were almost the whole destination list. Product and search routes were about three quarters of the activity. Checkout was a sliver. People were browsing with an agent. They were rarely letting it buy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atlas was a browser you had to switch to
&lt;/h2&gt;

&lt;p&gt;Atlas launched on the Mac and stayed there. No Windows build, no iOS, no Android. Bookmarks, extensions, and a decade of Chrome muscle memory do not move because a sidebar is clever. OpenAI later said the plain part out loud: getting people to switch browsers was harder than meeting them inside ChatGPT, which they already open.&lt;/p&gt;

&lt;p&gt;The product still taught the company something. A browser session is a better workplace than a chat transcript. Multiple tabs, downloads, logins, and a page that stays put are what an agent needs when the task is "finish this," and a single message box is a poor place to keep that state. Atlas was the prototype of that workplace. It was also a second app to install, patch, and explain.&lt;/p&gt;

&lt;p&gt;Comet had a wider door. It went free, it reached phones, and head-to-head tests through the spring often rated its agent mode quicker than Atlas. The iOS app hit the US App Store top tier within two days of the 18 March 2026 launch. Distribution was the advantage. A Chromium fork is still a browser you have to choose every morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bet had a cost the demo hid
&lt;/h2&gt;

&lt;p&gt;An agent that clicks inside your accounts is a different product from an agent that answers a question. In March 2026 a federal court injunction blocked Comet's agents from Amazon's signed-in account pages. The fight was about authenticated sessions, and it spread. Site owners started treating "a browser with a model in it" as a bot with a screen, and blocking rates on agent traffic climbed through the spring even while the two AI browsers still led the category.&lt;/p&gt;

&lt;p&gt;There is a second cost, and it sits on the vendor's bill. Driving a real page, with screenshots, tool calls, and retries, is expensive at millions of users. A sidebar summary is cheap enough to bundle. "Control the browser and finish the task" is a metered computer. Comet could grow on the first. The second had to be priced like compute.&lt;/p&gt;

&lt;p&gt;That is the rise, stated cleanly. The AI browser won the argument about context. The page should be in the prompt. It lost the argument about distribution. Chrome was already open. ChatGPT, Claude, and Grok were already installed. A third app that was also a browser had to be better than both, every day, for a person who did not want a new default.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the year actually proved
&lt;/h2&gt;

&lt;p&gt;The useful idea survived the apps. You can see it in what shipped next: OpenClaw, Hermes, Grok Bot, Claude Desktop, and the ChatGPT desktop app, each with a browser the agent drives and, in several of them, computer use that clicks the desktop itself. Google's version of the smaller idea, Ask Gemini on the current Chrome tab, is the third piece in this series.&lt;/p&gt;

&lt;p&gt;Curious to hear your thoughts ,Will AI browsers survive or Open Agents like GrokBot is actually the future?&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>product</category>
    </item>
    <item>
      <title>Why full repo context matters for code review</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Thu, 24 Sep 2026 07:21:57 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/best-travel-crm-software-for-travel-agencies-in-2026-complete-guide-5e6p</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/best-travel-crm-software-for-travel-agencies-in-2026-complete-guide-5e6p</guid>
      <description>&lt;h2&gt;
  
  
  Why full repo context matters for code review
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9uz9xay176djmepzj7c4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9uz9xay176djmepzj7c4.png" alt=" " width="799" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most "AI review" tools only see the diff you send them. That's a problem because a patch rarely stands alone — a renamed helper, a config file, a sibling module — the rest of the codebase usually decides whether the change is correct. A reviewer that only sees the patch ends up flagging things that are already handled elsewhere, and missing things that depend on context outside the diff.&lt;/p&gt;

&lt;p&gt;The latest Cloud release, &lt;a href="https://thinkreview.dev/release-notes/cloud-v2.4.0" rel="noopener noreferrer"&gt;ThinkReview Cloud 2.4.0&lt;/a&gt;, is built around that gap. The headline change is how you grant Cloud access to your repositories, and what it can do once it has access.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub App and GitLab.com OAuth for repo-wide reads
&lt;/h2&gt;

&lt;p&gt;Previously, connecting a repo for &lt;strong&gt;full repository context&lt;/strong&gt; required generating a personal access token and pasting it into ThinkReview. That works, but it's friction, and it's a token that has to be scoped, stored, and rotated.&lt;/p&gt;

&lt;p&gt;Cloud 2.4.0 adds two first-party auth paths:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhf24r1y916jitoojusq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhf24r1y916jitoojusq.png" alt=" " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub App install&lt;/strong&gt; — Click Connect on &lt;a href="https://portal.thinkreview.dev/integrations" rel="noopener noreferrer"&gt;Integrations&lt;/a&gt;, pick the account or repos you want to grant access to, and the App handles the rest. No PAT to manage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab.com OAuth&lt;/strong&gt; — Same flow for GitLab.com repositories. Authorize once, Cloud can read the project, not just the diff.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PATs are still supported for self-hosted GitHub Enterprise, self-hosted GitLab, Bitbucket, Azure DevOps, or any case where installing the App isn't an option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reviews that look past the diff
&lt;/h2&gt;

&lt;p&gt;With repo-wide read access, the &lt;strong&gt;first review on a PR&lt;/strong&gt; can now look through the real project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Surrounding files in the same module&lt;/li&gt;
&lt;li&gt;How the changed function or class is used by callers&lt;/li&gt;
&lt;li&gt;Whether a flagged issue is already mitigated elsewhere in the codebase&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The practical effect: fewer "the patch looks wrong" comments that ignore the rest of the repo, and fewer false positives that you'd otherwise have to defend in a reply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conflicting and overlapping PRs
&lt;/h2&gt;

&lt;p&gt;A second consequence of repo-wide context is cross-PR awareness. Cloud reviews can now check &lt;strong&gt;other open pull requests / merge requests that touch the same files&lt;/strong&gt;. If two in-flight changes are likely to collide — same function, same config, same generated file — the review can flag that instead of treating your PR as if it were the only one in flight.&lt;/p&gt;

&lt;p&gt;This is most useful on long-lived branches and busy repos where merge order matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A ThinkReview account with an active plan or available review credits&lt;/li&gt;
&lt;li&gt;A connection via &lt;strong&gt;Connect with GitHub&lt;/strong&gt; or &lt;strong&gt;Connect with GitLab&lt;/strong&gt; (recommended), or a PAT for self-hosted hosts, under &lt;a href="https://portal.thinkreview.dev/integrations" rel="noopener noreferrer"&gt;Integrations&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The ThinkReview extension, MCP, or an API client calling the hosted review endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where to go
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Integrations: &lt;a href="https://portal.thinkreview.dev/integrations" rel="noopener noreferrer"&gt;portal.thinkreview.dev/integrations&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full release notes: &lt;a href="https://thinkreview.dev/release-notes/cloud-v2.4.0" rel="noopener noreferrer"&gt;thinkreview.dev/release-notes/cloud-v2.4.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Feedback: &lt;a href="https://thinkreview.dev/feedback" rel="noopener noreferrer"&gt;thinkreview.dev/feedback&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bug reports: the "Report a Bug" button in the extension review panel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your team has been holding off on giving an AI reviewer broader repo access because of the PAT step, this release is the path of least resistance.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>code</category>
      <category>codereview</category>
    </item>
    <item>
      <title>AI code reviews for pull requests the right way - Gitlab GitHub Azure &amp; Bitbucket</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Sun, 20 Sep 2026 09:15:06 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/ai-code-reviews-for-pull-requests-the-right-way-gitlab-github-azure-bitbucket-21a</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/ai-code-reviews-for-pull-requests-the-right-way-gitlab-github-azure-bitbucket-21a</guid>
      <description>&lt;p&gt;Most AI code review tools either dump every finding as a bot comment or leave you with a long blob to paste yourself. Neither feels right on a real pull request. The first floods the conversation thread with noise the team has to skim past. The second turns every finding into a small copy-paste chore.&lt;/p&gt;

&lt;p&gt;ThinkReview has always lived on the PR page as a copilot: severity-ranked findings, file ranges, follow-ups, and copy you can paste. The last mile was still copy-paste. That is the part this release removes.&lt;/p&gt;

&lt;h2&gt;
  
  
  One click from finding to conversation
&lt;/h2&gt;

&lt;p&gt;Each finding in the review panel now has a &lt;strong&gt;Post&lt;/strong&gt; control. Click it, and that specific finding is published as a conversation comment on the same pull request or merge request you are looking at. No second tab. No hand-formatting markdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0fg9t9e95z0ic6x4q0tr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0fg9t9e95z0ic6x4q0tr.gif" alt="Click Post on a ThinkReview finding to publish it as a conversation comment" width="640" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The comment is the finding you already read in the panel: title, file path, line range, and the explanation. It shows up in the conversation thread — the same place teammates already watch for review notes — not as an auto-spam from a bot that reviewed every commit overnight.&lt;/p&gt;

&lt;p&gt;That is the useful split:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inline review comments still belong to the human review you write on the diff.&lt;/li&gt;
&lt;li&gt;Conversation comments are the place to share a finding the whole thread should see.&lt;/li&gt;
&lt;li&gt;ThinkReview Post writes the second kind, on demand, from the finding you selected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmnnby6gue8u7omz9y3r9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmnnby6gue8u7omz9y3r9.png" alt="A ThinkReview finding posted as a GitHub conversation comment next to the review panel" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While it posts, the panel shows a short toast with a spinner. The PR page stays usable. If the host rejects the comment — missing write access, expired token, wrong scope — you get that error instead of a silent failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it works
&lt;/h2&gt;

&lt;p&gt;Post uses your Full Context integration — the same credentials ThinkReview already uses to read the repo — and is available on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; (GitHub App or personal access token)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab&lt;/strong&gt; (OAuth or personal access token, including self-managed with a custom domain)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure DevOps&lt;/strong&gt; (personal access token)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On GitHub App, the comment is attributed to ThinkReview. On GitLab OAuth / PAT and Azure PAT, it is attributed to you, because those hosts post as the authenticated user.&lt;/p&gt;

&lt;p&gt;Bitbucket reviews still run in the panel. Posting from the finding is GitHub, GitLab, and Azure for this release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup you actually need
&lt;/h2&gt;

&lt;p&gt;You already have a working review if Full Context can fetch the diff. Posting is a write. That is the extra check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub App&lt;/strong&gt;: the installation needs permission to write issues/comments on the repo. If reviews work but Post returns a permissions error, update the App install and try again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub PAT&lt;/strong&gt;: the token needs comment write on that repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab OAuth&lt;/strong&gt;: posting notes requires the &lt;code&gt;api&lt;/code&gt; scope (GitLab does not offer a narrower "notes only" write scope). If you connected GitLab before this change, reconnect OAuth so the new scope is granted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab / Azure PAT&lt;/strong&gt;: the token needs permission to comment on the MR or PR.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If Post opens the setup hint instead of sending, finish Full Context for that host first — GitHub App, GitLab OAuth, or a PAT — then click Post again.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it in a real review
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the PR or MR in the browser and run AI Review as usual.&lt;/li&gt;
&lt;li&gt;Read the finding in the panel. Edit nothing you would not want on the thread — the body is the finding text.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Post&lt;/strong&gt; on that item.&lt;/li&gt;
&lt;li&gt;Confirm the comment on the conversation tab. Refresh if the host is slow to render.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Post one finding, or several. Skip the noisy ones. That is the point: the model ranked the issues; you still choose what the team sees.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same panel, one new control
&lt;/h2&gt;

&lt;p&gt;Install or update &lt;a href="https://thinkreview.dev/" rel="noopener noreferrer"&gt;ThinkReview&lt;/a&gt; from the Chrome Web Store, Microsoft Edge Add-ons, or Firefox Add-ons. Same credits, same models, same panel. The new control is only the last step from finding to thread.&lt;/p&gt;

&lt;p&gt;ThinkReview remains a copilot. The next post is about why one click is not the same as a comment bot — and why we still wait for you to press Post.&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>GitLab Self-Hosted MR ThinkReview: Finally, A Simple Solution</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Sat, 29 Aug 2026 20:00:07 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/gitlab-self-hosted-mr-thinkreview-finally-a-simple-solution-j96</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/gitlab-self-hosted-mr-thinkreview-finally-a-simple-solution-j96</guid>
      <description>&lt;p&gt;If you work on &lt;strong&gt;self-hosted GitLab&lt;/strong&gt;, you've probably spent years watching AI code review happen on gitlab.com while your merge requests on &lt;code&gt;gitlab.mycompany.com&lt;/code&gt; stay strictly on Overview, Changes, and a static comment box.&lt;/p&gt;

&lt;p&gt;Most tools that promise to close that gap come with a heavy tax: GitLab Premium or Ultimate seats, inbound webhooks, dedicated service accounts, and external dashboards that live entirely outside the merge request you are actually reviewing.&lt;/p&gt;

&lt;p&gt;We kept asking: &lt;em&gt;Why isn't there a simple GitLab self-hosted AI code review that just works on the MR — on both Community Edition and Enterprise Edition?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So we built &lt;strong&gt;&lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;ThinkReview&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2gzncz3lm708u2m72lgn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2gzncz3lm708u2m72lgn.gif" alt=" " width="480" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Self-Hosted GitLab AI
&lt;/h2&gt;

&lt;p&gt;If you live on GitLab Community Edition (CE), there is no GitLab Duo. If you live on GitLab Enterprise Edition (EE) without Premium/Ultimate — or on an air-gapped instance — Duo still requires an AI gateway, version pins, and administrative sign-off.&lt;/p&gt;

&lt;p&gt;A self-hosted merge request AI review shouldn't mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upgrading CE to EE Ultimate just to turn AI on&lt;/li&gt;
&lt;li&gt;Standing up GitLab Duo Self-Hosted and complex AI gateways&lt;/li&gt;
&lt;li&gt;Exposing your private instance so an external vendor can POST bot comments&lt;/li&gt;
&lt;li&gt;Copying giant diffs into ChatGPT and losing the context of your Changes tab&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Simple Solution for CE and EE
&lt;/h2&gt;

&lt;p&gt;ThinkReview takes the opposite path: install the extension, add your &lt;strong&gt;custom GitLab domain&lt;/strong&gt;, open the MR, and click &lt;strong&gt;AI Review&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No GitLab admin project. No bot accounts. No second browser tab. The review lives right in your browser on your custom domain, supporting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitLab.com&lt;/li&gt;
&lt;li&gt;GitLab &lt;strong&gt;Community Edition&lt;/strong&gt; (CE)&lt;/li&gt;
&lt;li&gt;GitLab &lt;strong&gt;Enterprise Edition&lt;/strong&gt; (EE) — whether you have Duo or not&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A custom domain is the only setup requirement so the extension can safely run on &lt;code&gt;gitlab.company.com&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  What You Get in the Review Panel
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg6jwsjkh2sgmcn4j8zws.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg6jwsjkh2sgmcn4j8zws.gif" alt="thinkreview code review in gitlab" width="480" height="214"&gt;&lt;/a&gt;&lt;br&gt;
ThinkReview acts as an intelligent copilot right inside your merge request sidebar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary&lt;/strong&gt; of what the code change actually does&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Severity-ranked findings&lt;/strong&gt; (critical / high / medium) with direct file and line ranges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality, security, and best-practice scores&lt;/strong&gt; on demand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review agents&lt;/strong&gt; (like security or pentest checklists) running on the same MR&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggested follow-up questions&lt;/strong&gt; to dive deeper into chat, plus copy-ready comment generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code suggestions&lt;/strong&gt; that you copy and post yourself — keeping you in full control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor / Claude Code / Copilot deeplinks&lt;/strong&gt; to jump straight into your IDE to fix findings&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Review Self-Hosted MRs Directly from MCP
&lt;/h2&gt;

&lt;p&gt;If you prefer working inside your editor, &lt;strong&gt;ThinkReview MCP&lt;/strong&gt; brings the exact same capability to your favorite AI assistant.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgr4k7ubmnucxtprx0izs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgr4k7ubmnucxtprx0izs.png" alt="thiknrveiew in claude code" width="678" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full instructions : &lt;a href="https://thinkreview.dev/blog/2026-08-11-thinkreview-mcp-oauth-claude-code-setup" rel="noopener noreferrer"&gt;https://thinkreview.dev/blog/2026-08-11-thinkreview-mcp-oauth-claude-code-setup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simply paste a GitLab merge request URL—whether gitlab.com or your self-hosted CE/EE instance—into Cursor, Claude Code, Claude Desktop, or GitHub Copilot and call &lt;strong&gt;&lt;code&gt;review_url_code&lt;/code&gt;&lt;/strong&gt;. ThinkReview fetches the diff securely through your portal git credentials and returns a structured review containing summaries, findings, security notes, and follow-up questions.&lt;/p&gt;

&lt;p&gt;Hosted endpoint: &lt;code&gt;https://mcp.thinkreview.dev/v1&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Listed on the Official MCP Registry as &lt;code&gt;io.github.Thinkode/thinkreview&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started in Minutes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;On the GitLab Self-Hosted MR page:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install ThinkReview on Chrome, Edge, or Firefox.&lt;/li&gt;
&lt;li&gt;Open the extension popup and choose &lt;strong&gt;GitLab Self-Managed&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjs4lgjgmgkfw52oled1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjs4lgjgmgkfw52oled1a.png" alt="thinkreview integrations" width="799" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add your instance domain (e.g., &lt;code&gt;gitlab.mycompany.com&lt;/code&gt;) and grant permissions.&lt;/li&gt;
&lt;li&gt;Open any merge request on Community Edition or Enterprise Edition and click &lt;strong&gt;ThinkReview&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6qj9b11170n0s5g1550.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6qj9b11170n0s5g1550.png" alt="adding custom domain " width="799" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Cursor or Claude Code:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect your git credentials in the ThinkReview portal.&lt;/li&gt;
&lt;li&gt;Add ThinkReview MCP and authenticate.&lt;/li&gt;
&lt;li&gt;Ask your assistant: &lt;em&gt;"Review this GitLab MR with ThinkReview: &lt;code&gt;https://gitlab.mycompany.com/...&lt;/code&gt;"&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2l6b4ny62tdqwa89apzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2l6b4ny62tdqwa89apzo.png" alt="thinkreview mcp gitlab custom domain" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is a free tier with daily review credits so you can test out a real GitLab community edition code review right now. Discover more at &lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;thinkreview.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gitlab</category>
      <category>devops</category>
      <category>codereview</category>
    </item>
    <item>
      <title>Why Google shipped three Gemini Flash models in 12 weeks</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Wed, 19 Aug 2026 13:36:08 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/why-google-shipped-three-gemini-flash-models-in-12-weeks-18lg</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/why-google-shipped-three-gemini-flash-models-in-12-weeks-18lg</guid>
      <description>&lt;p&gt;Google introduced Gemini 3.7 Flash just 23 days after 3.6 Flash, and 86 days after 3.5 Flash debuted at I/O. That is three workhorse Flash models in less than three months. While 3.5 Pro never arrived, Flash had to step up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Flashes, three distinct jobs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;3.5 Flash (May 19):&lt;/strong&gt; The I/O statement. Frontier intelligence with action, outperforming older Pro models at high speeds across platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3.6 Flash (July 21):&lt;/strong&gt; The unit-economics patch. Optimized for tokens, latency, and tool-call waste, reducing output prices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3.7 Flash (August 13):&lt;/strong&gt; The completion-rate patch. Focused on algorithmic improvements to reasoning foundations, helping agents better adapt to roadblocks and multi-step planning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The gains are where coding agents actually die
&lt;/h2&gt;

&lt;p&gt;Google's 3.7 updates concentrate heavily on software engineering and multi-step workflows. We saw massive jumps in benchmarks like DeepSWE v1.1 (+16.3 pts) and FrontierCode 1.1 Main (+9.2 pts).&lt;/p&gt;

&lt;p&gt;The expensive part of coding isn't the first-pass code that almost compiles—it's the fifth tool call that undoes the third, or the ambiguous instruction the model guessed instead of clarifying. Pull request review lives in this exact failure mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for code review
&lt;/h2&gt;

&lt;p&gt;Three Flash models in 12 weeks changes how we should approach AI-generated code review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expect the workhorse to move:&lt;/strong&gt; Your review stack should switch models as fast as Google ships them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer models that finish the job:&lt;/strong&gt; Look for long-horizon engineering capabilities over chat fluency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch retries, not list price:&lt;/strong&gt; The cheaper review is the one that doesn't need a second pass to fix a hallucinated finding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a human on the loop:&lt;/strong&gt; Pair models with repository-level context when the real bug lives outside the diff hunk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the job &lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;ThinkReview&lt;/a&gt; is built for: an AI code review copilot on GitHub, GitLab, Azure DevOps, and Bitbucket that goes beyond rubber-stamping PRs. Google just showed it can revise a production coding model three times in a summer. Your review workflow should keep up.&lt;/p&gt;

&lt;p&gt;Pick your model in &lt;strong&gt;&lt;a href="https://portal.thinkreview.dev/model-selection" rel="noopener noreferrer"&gt;Model selection&lt;/a&gt;&lt;/strong&gt;, run it on a real diff, and keep your engineering judgment.&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
    </item>
    <item>
      <title>How I listed my MCP on the official MCP Registery and how you can do yours too ?</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Mon, 10 Aug 2026 11:25:49 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/how-i-listed-my-mcp-on-the-official-mcp-registery-and-how-you-can-do-yours-too--1lp</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/how-i-listed-my-mcp-on-the-official-mcp-registery-and-how-you-can-do-yours-too--1lp</guid>
      <description>&lt;p&gt;When people ask “where do I find MCP servers?”, a growing chunk of the answer starts in one place: the &lt;strong&gt;Official MCP Registry&lt;/strong&gt; at &lt;a href="https://registry.modelcontextprotocol.io" rel="noopener noreferrer"&gt;registry.modelcontextprotocol.io&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I recently listed &lt;strong&gt;ThinkReview MCP&lt;/strong&gt; there — our hosted server that runs AI code reviews on GitHub, GitLab, Azure DevOps, and Bitbucket PR/MR URLs from Cursor, Claude, and Copilot.&lt;/p&gt;

&lt;p&gt;Here’s exactly what I did, and how you can do the same.&lt;/p&gt;




&lt;h2&gt;
  
  
  First, what the registry actually is
&lt;/h2&gt;

&lt;p&gt;The Official MCP Registry stores &lt;strong&gt;metadata&lt;/strong&gt;, not your binaries.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don’t upload a zip of your server&lt;/li&gt;
&lt;li&gt;You publish a &lt;code&gt;server.json&lt;/code&gt; that describes your MCP&lt;/li&gt;
&lt;li&gt;Clients and other directories can discover you from that record&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are two common shapes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Package-based&lt;/strong&gt; — your server lives on npm / PyPI / NuGet / Docker, and the registry points at that package&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote / hosted&lt;/strong&gt; — your server is a public URL (Streamable HTTP), and the registry points at that endpoint&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ThinkReview is &lt;strong&gt;remote&lt;/strong&gt;. Our endpoint is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://mcp.thinkreview.dev/v1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So I didn’t need to publish an npm package just to get listed. I only needed a solid public docs repo + a valid &lt;code&gt;server.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Docs that mattered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/registry/quickstart" rel="noopener noreferrer"&gt;Publishing quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/registry/remote-servers" rel="noopener noreferrer"&gt;Remote servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/registry/authentication" rel="noopener noreferrer"&gt;Authentication&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The registry is still in preview. Expect possible breaking changes before GA.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Step 1 — Put something public on GitHub
&lt;/h2&gt;

&lt;p&gt;Directories and developers want a repo they can open.&lt;/p&gt;

&lt;p&gt;I created a public visibility/docs repo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Thinkode/thinkreview-mcp" rel="noopener noreferrer"&gt;github.com/Thinkode/thinkreview-mcp&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the MCP does&lt;/li&gt;
&lt;li&gt;Endpoint + transport&lt;/li&gt;
&lt;li&gt;OAuth and Bearer setup for Cursor / Claude / Copilot&lt;/li&gt;
&lt;li&gt;Example configs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It does &lt;strong&gt;not&lt;/strong&gt; include our private review engine, auth, or billing backend. For a SaaS MCP, that’s the right split:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public: docs + configs + registry metadata&lt;/li&gt;
&lt;li&gt;Private: the actual product&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re building an open-source local MCP, your full source can live in that same repo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 — Install the publisher CLI
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;mcp-publisher
mcp-publisher &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or grab a binary from the &lt;a href="https://github.com/modelcontextprotocol/registry/releases" rel="noopener noreferrer"&gt;registry releases&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You’ll use three commands most of the time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mcp-publisher init&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp-publisher login ...&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp-publisher publish&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 3 — Choose your namespace (this is the gotcha)
&lt;/h2&gt;

&lt;p&gt;Your server &lt;code&gt;name&lt;/code&gt; is tied to how you authenticate.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Auth method&lt;/th&gt;
&lt;th&gt;Name format&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GitHub login&lt;/td&gt;
&lt;td&gt;&lt;code&gt;io.github.&amp;lt;user-or-org&amp;gt;/...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;io.github.Thinkode/thinkreview&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain proof (DNS/HTTP)&lt;/td&gt;
&lt;td&gt;reverse-DNS of your domain&lt;/td&gt;
&lt;td&gt;branded names under your company domain&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I used the &lt;strong&gt;GitHub org namespace&lt;/strong&gt; because it’s the fastest path:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;io.github.Thinkode/thinkreview&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: the registry &lt;strong&gt;name&lt;/strong&gt; (&lt;code&gt;thinkreview&lt;/code&gt;) and the GitHub &lt;strong&gt;repo&lt;/strong&gt; name (&lt;code&gt;thinkreview-mcp&lt;/code&gt;) do not have to match. Pick a clean registry name; point &lt;code&gt;repository.url&lt;/code&gt; at whatever public repo you use for docs or source.&lt;/p&gt;

&lt;p&gt;Later, you can move to a branded domain namespace if you want cleaner naming — that needs DNS TXT or a &lt;code&gt;/.well-known/mcp-registry-auth&lt;/code&gt; proof on your domain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4 — Create &lt;code&gt;server.json&lt;/code&gt; for a remote MCP
&lt;/h2&gt;

&lt;p&gt;In the repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;thinkreview-mcp
mcp-publisher init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then edit the file for a &lt;strong&gt;hosted&lt;/strong&gt; server. Skip &lt;code&gt;packages&lt;/code&gt; unless you also ship a local install. Use &lt;code&gt;remotes&lt;/code&gt; instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"io.github.Thinkode/thinkreview"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ThinkReview"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Live PR/MR code reviews via review_url_code. OAuth or portal Bearer auth."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.3.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"websiteUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://thinkreview.dev/features/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"repository"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://github.com/Thinkode/thinkreview-mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"github"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"remotes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"streamable-http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.thinkreview.dev/v1"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few rules that saved me time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prefer &lt;code&gt;"type": "streamable-http"&lt;/code&gt; (SSE is deprecated)&lt;/li&gt;
&lt;li&gt;The URL must be publicly reachable&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;version&lt;/code&gt; is required, unique per publish, and immutable once published — use semver&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt; must match your auth namespace (&lt;code&gt;io.github.Thinkode/...&lt;/code&gt; if you logged in as that org)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Commit &lt;code&gt;server.json&lt;/code&gt; so the listing is reproducible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5 — Authenticate
&lt;/h2&gt;

&lt;p&gt;For the GitHub namespace path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcp-publisher login github
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll get a device code, authorize it in the browser, and the CLI confirms you’re logged in.&lt;/p&gt;

&lt;p&gt;That login only lets you publish under &lt;code&gt;io.github.&amp;lt;that-account-or-org&amp;gt;/...&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6 — Publish
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcp-publisher publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When it works, you’ll see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Publishing to https://registry.modelcontextprotocol.io...
✓ Successfully published
✓ Server io.github.Thinkode/thinkreview version 1.3.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it. Your MCP is now in the official upstream registry.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 7 — Verify
&lt;/h2&gt;

&lt;p&gt;Search by a short token that matches your listing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://registry.modelcontextprotocol.io/v0.1/servers?search=thinkreview"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use the exact registry name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.Thinkode/thinkreview"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see metadata like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;name:&lt;/strong&gt; &lt;code&gt;io.github.Thinkode/thinkreview&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;version:&lt;/strong&gt; &lt;code&gt;1.3.0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;status:&lt;/strong&gt; &lt;code&gt;active&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;remote:&lt;/strong&gt; &lt;code&gt;https://mcp.thinkreview.dev/v1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repository:&lt;/strong&gt; &lt;code&gt;https://github.com/Thinkode/thinkreview-mcp&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From there, community directories (PulseMCP, Glama, mcp.so, mcpservers.org, etc.) often pick listings up over time — but the official registry is the upstream source you want first.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to keep it updated
&lt;/h2&gt;

&lt;p&gt;Every meaningful MCP release:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Bump &lt;code&gt;version&lt;/code&gt; in &lt;code&gt;server.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Commit&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;mcp-publisher publish&lt;/code&gt; again&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Or automate it in GitHub Actions with &lt;code&gt;mcp-publisher login github-oidc&lt;/code&gt; on version tags so every release republishes metadata.&lt;/p&gt;




&lt;h2&gt;
  
  
  If something fails
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Error&lt;/th&gt;
&lt;th&gt;What it usually means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No permission to publish this server&lt;/td&gt;
&lt;td&gt;Your &lt;code&gt;name&lt;/code&gt; doesn’t match your GitHub/domain auth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Invalid or expired JWT&lt;/td&gt;
&lt;td&gt;Re-run &lt;code&gt;mcp-publisher login github&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Registry validation failed&lt;/td&gt;
&lt;td&gt;Package listings need ownership proof (&lt;code&gt;mcpName&lt;/code&gt;, etc.). Remote listings need a live public URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version already exists&lt;/td&gt;
&lt;td&gt;Bump semver — published versions can’t be overwritten&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search returns empty&lt;/td&gt;
&lt;td&gt;You’re searching the wrong string (e.g. repo name vs registry &lt;code&gt;name&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Make a public repo (docs + examples is enough for remote MCP)&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;mcp-publisher&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;server.json&lt;/code&gt; with &lt;code&gt;remotes&lt;/code&gt; pointing at your hosted URL&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp-publisher login github&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp-publisher publish&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Verify with the registry API&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s how ThinkReview MCP got onto the official MCP Registry — and the same path works whether you’re shipping a local open-source server or a hosted product like ours.&lt;/p&gt;

&lt;p&gt;If you’re listing a remote MCP too, start with the GitHub namespace, get discoverable fast, then brand the namespace later once DNS/domain proof is worth the extra step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ThinkReview MCP: &lt;a href="https://thinkreview.dev/features/mcp" rel="noopener noreferrer"&gt;thinkreview.dev/features/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs repo: &lt;a href="https://github.com/Thinkode/thinkreview-mcp" rel="noopener noreferrer"&gt;github.com/Thinkode/thinkreview-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Integration docs: &lt;a href="https://thinkreview.dev/docs/mcp-integration/" rel="noopener noreferrer"&gt;thinkreview.dev/docs/mcp-integration&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official registry API search: &lt;a href="https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.Thinkode/thinkreview" rel="noopener noreferrer"&gt;registry.modelcontextprotocol.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>ThinkReview MCP: run live PR code reviews from Cursor, Claude Code, and Copilot</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Fri, 07 Aug 2026 10:52:48 +0000</pubDate>
      <link>https://dev.to/thinkreview/thinkreview-mcp-run-live-pr-code-reviews-from-cursor-claude-code-and-copilot-2h7m</link>
      <guid>https://dev.to/thinkreview/thinkreview-mcp-run-live-pr-code-reviews-from-cursor-claude-code-and-copilot-2h7m</guid>
      <description>&lt;p&gt;You already use &lt;strong&gt;Cursor&lt;/strong&gt;, &lt;strong&gt;Claude Code&lt;/strong&gt;, or &lt;strong&gt;GitHub Copilot&lt;/strong&gt; to write and refactor code. What if the same assistant could &lt;strong&gt;run a real ThinkReview analysis&lt;/strong&gt; on a pull request—without you copying diffs into chat?&lt;/p&gt;

&lt;p&gt;Today we are introducing &lt;strong&gt;ThinkReview MCP&lt;/strong&gt;: a hosted &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; server at &lt;strong&gt;&lt;a href="https://mcp.thinkreview.dev/v1" rel="noopener noreferrer"&gt;mcp.thinkreview.dev/v1&lt;/a&gt;&lt;/strong&gt;. Connect it once, then ask your assistant to review any PR or merge request URL on &lt;strong&gt;GitHub&lt;/strong&gt;, &lt;strong&gt;GitLab&lt;/strong&gt;, &lt;strong&gt;Azure DevOps&lt;/strong&gt;, or &lt;strong&gt;Bitbucket&lt;/strong&gt;. ThinkReview fetches the changed files, runs the review, and returns structured feedback: summary, suggestions, security notes, best practices, and suggested follow-up questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MCP for code review?
&lt;/h2&gt;

&lt;p&gt;Browser extensions are great when you are already on a PR page. MCP is for the moments when you are &lt;strong&gt;in the editor or terminal&lt;/strong&gt; and want review context without context-switching.&lt;/p&gt;

&lt;p&gt;Typical flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You are pairing with an AI agent on a fix or feature branch.&lt;/li&gt;
&lt;li&gt;A teammate shares a PR link in Slack or a ticket.&lt;/li&gt;
&lt;li&gt;You ask: &lt;em&gt;“Call &lt;code&gt;review_url_code&lt;/code&gt; for &lt;a href="https://github.com/org/repo/pull/42.%E2%80%9D" rel="noopener noreferrer"&gt;https://github.com/org/repo/pull/42.”&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;ThinkReview returns the same quality of review you would get from the extension—grounded in the actual diff, not a guess from partial snippets.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One tool, one URL, no patch upload. That is the whole idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need before connecting
&lt;/h2&gt;

&lt;p&gt;ThinkReview MCP is designed to be quick to set up, but two things must be in place:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Your ThinkReview Bearer token
&lt;/h3&gt;

&lt;p&gt;Generate or copy your personal token from the &lt;strong&gt;&lt;a href="https://portal.thinkreview.dev/mcp" rel="noopener noreferrer"&gt;MCP integration page&lt;/a&gt;&lt;/strong&gt; in the ThinkReview portal. It is the same authorization token used by the ThinkReview browser extension. Add it to your MCP client as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Authorization: Bearer &amp;lt;your-token&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you regenerate the token, update every MCP client (and expect the extension to need the new token too).&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Git credentials in the portal (required)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;MCP cannot fetch a PR diff without git access.&lt;/strong&gt; Before your first review, add a &lt;strong&gt;Personal Access Token&lt;/strong&gt; under &lt;strong&gt;&lt;a href="https://portal.thinkreview.dev/integrations" rel="noopener noreferrer"&gt;Settings → Integrations&lt;/a&gt;&lt;/strong&gt; in the portal.&lt;/p&gt;

&lt;p&gt;ThinkReview uses that PAT to call your git host’s API—same as URL-based reviews in the cloud. If integrations are missing, or the token cannot reach a private org repo (for example SSO not authorized on GitHub), reviews will fail with a clear access error instead of a vague API failure.&lt;/p&gt;

&lt;p&gt;This step is easy to skip when you are excited to wire up Cursor—but it is the most common reason MCP reviews do not work on the first try.&lt;/p&gt;

&lt;h2&gt;
  
  
  The &lt;code&gt;review_url_code&lt;/code&gt; tool
&lt;/h2&gt;

&lt;p&gt;ThinkReview MCP exposes a single tool today:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;review_url_code&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs a live code review on a PR or MR URL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Required:&lt;/strong&gt; &lt;code&gt;prUrl&lt;/code&gt; — the full pull or merge request link.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optional:&lt;/strong&gt; &lt;code&gt;language&lt;/code&gt; (response language), &lt;code&gt;mrId&lt;/code&gt; (your tracking ID), &lt;code&gt;forceRegenerate&lt;/code&gt; (bypass cache when the PR has new commits but you want a fresh review immediately).&lt;/p&gt;

&lt;p&gt;Reviews use the same &lt;strong&gt;credits&lt;/strong&gt; as the browser extension. Results are &lt;strong&gt;cached per user&lt;/strong&gt; when the changed-file fingerprint has not changed, so re-asking about the same PR is fast and does not burn credits unnecessarily.&lt;/p&gt;

&lt;p&gt;Custom &lt;strong&gt;review agents&lt;/strong&gt; you configure in the portal are &lt;strong&gt;not&lt;/strong&gt; run by default through MCP—the tool returns the main structured review. Agent workflows remain centered in the extension and portal today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect in minutes
&lt;/h2&gt;

&lt;p&gt;The portal &lt;strong&gt;&lt;a href="https://portal.thinkreview.dev/mcp" rel="noopener noreferrer"&gt;MCP setup page&lt;/a&gt;&lt;/strong&gt; includes copy-paste configs for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; — add &lt;code&gt;thinkreview&lt;/code&gt; under &lt;code&gt;mcpServers&lt;/code&gt; with the hosted URL and Bearer header&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; — JSON config or a one-line CLI &lt;code&gt;claude mcp add&lt;/code&gt; command&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Copilot (VS Code)&lt;/strong&gt; — &lt;code&gt;.vscode/mcp.json&lt;/code&gt; or user MCP config with the &lt;code&gt;servers&lt;/code&gt; key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example for Cursor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"thinkreview"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.thinkreview.dev/v1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer &amp;lt;your-token&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart your client after saving. Then try a prompt like: &lt;em&gt;“Review this PR with ThinkReview: &lt;a href="https://github.com/org/repo/pull/123.%E2%80%9D" rel="noopener noreferrer"&gt;https://github.com/org/repo/pull/123.”&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Full setup details, security notes, and troubleshooting live in our docs: &lt;strong&gt;&lt;a href="https://thinkreview.dev/docs/mcp-integration" rel="noopener noreferrer"&gt;MCP Integration&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smarter caching and clearer errors
&lt;/h2&gt;

&lt;p&gt;This release ships alongside improvements to the URL review pipeline MCP uses under the hood:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Commit-aware caching&lt;/strong&gt; — reviews refresh when the PR’s changed-file list changes, not only when you force regeneration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionable git errors&lt;/strong&gt; — private repo or token issues surface as access-denied guidance (check integrations, org access, GitHub SSO) instead of opaque 404s&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it today
&lt;/h2&gt;

&lt;p&gt;If you already use ThinkReview in the browser, MCP is the natural next step for AI-native workflows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://portal.thinkreview.dev/integrations" rel="noopener noreferrer"&gt;Configure git integrations&lt;/a&gt;&lt;/strong&gt; in the portal
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://portal.thinkreview.dev/mcp" rel="noopener noreferrer"&gt;Copy your MCP token and client config&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ask your assistant to call &lt;strong&gt;&lt;code&gt;review_url_code&lt;/code&gt;&lt;/strong&gt; on your next PR
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ThinkReview remains &lt;strong&gt;open source&lt;/strong&gt; for the browser extension. Explore the project and install links on &lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;thinkreview.dev&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extension repository:&lt;/strong&gt; &lt;a href="https://github.com/Thinkode/thinkreview-browser-extension" rel="noopener noreferrer"&gt;github.com/Thinkode/thinkreview-browser-extension&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chrome Web Store:&lt;/strong&gt; &lt;a href="https://chromewebstore.google.com/detail/thinkreview-ai-copilot-fo/bpgkhgbchmlmpjjpmlaiejhnnbkdjdjn" rel="noopener noreferrer"&gt;ThinkReview — AI copilot for pull requests&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firefox Add-ons:&lt;/strong&gt; &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/thinkreview-code-review/?utm_source=addons.mozilla.org&amp;amp;utm_medium=referral&amp;amp;utm_content=search" rel="noopener noreferrer"&gt;ThinkReview on Firefox&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;​​​​​​​&lt;/p&gt;

&lt;p&gt;Lookin forward to your feedback , any questions would love to hear&lt;/p&gt;

&lt;p&gt;original post : &lt;a href="https://thinkreview.dev/blog/introducing-thinkreview-mcp-url-code-reviews-from-your-ai-assistant" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>ai</category>
      <category>claude</category>
    </item>
    <item>
      <title>Code Review bots clutter PRs , anybody feel the same?</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Fri, 24 Jul 2026 01:42:46 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/code-review-bots-clutter-prs-anybody-feel-the-same-5b0e</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/code-review-bots-clutter-prs-anybody-feel-the-same-5b0e</guid>
      <description>&lt;p&gt;I'd like to get your thoughts if anybody feel the same about code review bots like bugbot , gitlab duo , code rabbit and others that auto post comments on your behalf vs a tool like &lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;ThinkReview&lt;/a&gt; that shows the review to the reviewer only while the reviewer is still responsible for their final comments&lt;/p&gt;

&lt;p&gt;anybody feel the same about how much cluttered the PR gets with these bots ?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcrq3ejwhdi8x0m54qnu0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcrq3ejwhdi8x0m54qnu0.gif" alt=" " width="480" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codereview</category>
    </item>
    <item>
      <title>Zero setup code reviews for gitlab and azure devops</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Tue, 09 Jun 2026 12:31:31 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/zero-setup-code-reviews-for-gitlab-and-azure-devops-kj5</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/zero-setup-code-reviews-for-gitlab-and-azure-devops-kj5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jay_elsheikh_59b14ad67922/agentic-code-reviews-without-setup-on-azure-devops-prs-1edf" class="crayons-story__hidden-navigation-link"&gt;Agentic code reviews without setup on Azure devops PRs&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jay_elsheikh_59b14ad67922" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3392363%2Fa89e62e0-f820-42f6-9794-8088b8c3be51.jpg" alt="jay_elsheikh_59b14ad67922 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jay_elsheikh_59b14ad67922" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jay Elsheikh
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jay Elsheikh
                
              
              &lt;div id="story-author-preview-content-3857091" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jay_elsheikh_59b14ad67922" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3392363%2Fa89e62e0-f820-42f6-9794-8088b8c3be51.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jay Elsheikh&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jay_elsheikh_59b14ad67922/agentic-code-reviews-without-setup-on-azure-devops-prs-1edf" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 9&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jay_elsheikh_59b14ad67922/agentic-code-reviews-without-setup-on-azure-devops-prs-1edf" id="article-link-3857091"&gt;
          Agentic code reviews without setup on Azure devops PRs
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/jay_elsheikh_59b14ad67922/agentic-code-reviews-without-setup-on-azure-devops-prs-1edf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Agentic code reviews without setup on Azure devops PRs</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Tue, 09 Jun 2026 12:30:55 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/agentic-code-reviews-without-setup-on-azure-devops-prs-1edf</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/agentic-code-reviews-without-setup-on-azure-devops-prs-1edf</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Hello peer developers,&lt;/p&gt;

&lt;p&gt;I’m sharing a workflow I built over the past few weeks that has made our pull request security reviews more consistent and more actionable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;ThinkReview&lt;/a&gt;&lt;/strong&gt; is a browser extension that works across Git platforms (Gitlab, Github , azure devops and Bitbucket )and runs a &lt;em&gt;custom&lt;/em&gt; review checklist based on what your team cares about, such as OWASP guidance and your internal secure coding standards.&lt;/p&gt;

&lt;p&gt;Below is a quick look at the end result, then I’ll walk through how I set it up&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbifqikzfhkccetqpl1fc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbifqikzfhkccetqpl1fc.png" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: a pentesting-focused review agent
&lt;/h3&gt;

&lt;p&gt;In this example, I created a review agent focused on pentesting.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define the agent’s goal and scope&lt;/strong&gt; (what kinds of issues it should look for).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provide a reference&lt;/strong&gt; the agent should follow, such as &lt;em&gt;STRIKE Graph best practices&lt;/em&gt;. &lt;a href="https://www.strikegraph.com/blog/pen-testing-best-practices" rel="noopener noreferrer"&gt;https://www.strikegraph.com/blog/pen-testing-best-practices&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafxlzp9hs4hpvk8m0h9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafxlzp9hs4hpvk8m0h9y.png" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You can create up to 10 review agent&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxy47obn7zs8twyu2g34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxy47obn7zs8twyu2g34.png" width="799" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run the review on a PR and get findings mapped back to the reference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjyh6pbp0uebw43gv3y5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjyh6pbp0uebw43gv3y5l.png" width="800" height="676"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the PR shown here, ThinkReview flagged a couple of OWASP-related issues using the reference we provided.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedflcmkycpp8bz3xk2sb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedflcmkycpp8bz3xk2sb.png" width="800" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d16iwjtdwpyeibeb8tv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d16iwjtdwpyeibeb8tv.png" width="560" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxumqyxp27n351e4tuj2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxumqyxp27n351e4tuj2.png" width="566" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source on Github : &lt;a href="https://github.com/Thinkode/thinkreview-browser-extension" rel="noopener noreferrer"&gt;https://github.com/Thinkode/thinkreview-browser-extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and you can install it from&lt;/p&gt;

&lt;p&gt;chrome webstore : &lt;a href="https://chromewebstore.google.com/detail/thinkreview-ai-code-revie/bpgkhgbchmlmpjjpmlaiejhnnbkdjdjn" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/thinkreview-ai-code-revie/bpgkhgbchmlmpjjpmlaiejhnnbkdjdjn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;firefox :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/thinkreview-code-review" rel="noopener noreferrer"&gt;https://addons.mozilla.org/en-US/firefox/addon/thinkreview-code-review&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lookin forward to your feedback , any questions would love to hear&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How I set up automated AI code reviews on Azure devops (under 60 seconds) with no CI or coding</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Tue, 02 Jun 2026 22:59:52 +0000</pubDate>
      <link>https://dev.to/jay_elsheikh_59b14ad67922/how-i-set-up-automated-ai-code-reviews-on-azure-devops-under-60-seconds-with-no-ci-or-coding-h7p</link>
      <guid>https://dev.to/jay_elsheikh_59b14ad67922/how-i-set-up-automated-ai-code-reviews-on-azure-devops-under-60-seconds-with-no-ci-or-coding-h7p</guid>
      <description>&lt;p&gt;I built an open source Browser extension called &lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;ThinkReview &lt;/a&gt;to work seamlessly with Azure DevOps — a tool that automatically reviews Pull Requests using any LLM, whether cloud-based or on premise (TFS) without leaving your browser&lt;/p&gt;

&lt;p&gt;And the best part?&lt;/p&gt;

&lt;p&gt;1- Opensource:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Thinkode/thinkreview-browser-extension" rel="noopener noreferrer"&gt;https://github.com/Thinkode/thinkreview-browser-extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2- Works on your browser (Chrome , Edge or Firefox )&lt;/p&gt;

&lt;p&gt;3- It works out of the box on dev.azure.com and company.visualstudio.com&lt;/p&gt;

&lt;p&gt;4- If you have on premise ADO with custom domain, All you need is to add the custom domain and your PAT in the extension&lt;/p&gt;

&lt;p&gt;5- Chat with your Pull Requests&lt;/p&gt;

&lt;p&gt;7- All while on the same page of your PR&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc7fc3a9bdje3x22v8zmz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc7fc3a9bdje3x22v8zmz.gif" alt=" " width="480" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I focused on the Ease of Setup and to still maintain the human factor rather than a bot that auto post cluttered comments that developers can miss&lt;/li&gt;
&lt;li&gt;Setup takes less than 60 seconds without the need for any coding or integration with CI&lt;/li&gt;
&lt;li&gt;It doesn’t spam your PR with Bot comments which will clutter your PR&lt;/li&gt;
&lt;li&gt;You won’t need to leave your azure PR page or change to a different tool&lt;/li&gt;
&lt;li&gt;Supports legacy Azure on premise formely known TFS down to 2016&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try It Out&lt;br&gt;
Install from Chrome Web Store:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/thinkreview-ai-code-revie/bpgkhgbchmlmpjjpmlaiejhnnbkdjdjn" rel="noopener noreferrer"&gt;👉 ThinkReview: AI Code Reviews for Azure DevOps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Firefox users:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/thinkreview-code-review" rel="noopener noreferrer"&gt;ThinkReview on Firefox&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>codereview</category>
      <category>ai</category>
    </item>
    <item>
      <title>I Built a One-Click Bridge from Azure Devops PRs Code Review Directly to Cursor/Claude Code</title>
      <dc:creator>Jay Elsheikh</dc:creator>
      <pubDate>Sat, 18 Apr 2026 00:36:54 +0000</pubDate>
      <link>https://dev.to/thinkreview/how-i-implemented-a-deeplink-workflow-from-codereview-findings-to-implement-via-cursorclaude-code-ikb</link>
      <guid>https://dev.to/thinkreview/how-i-implemented-a-deeplink-workflow-from-codereview-findings-to-implement-via-cursorclaude-code-ikb</guid>
      <description>&lt;p&gt;Hi Everyone ,&lt;/p&gt;

&lt;p&gt;I’d like to share here a new feature that I implemented in ThinkReview extension workflow which utilises cursor deeplinks with one click to implement critical bugs , best practices or security issues from the code review&lt;/p&gt;

&lt;p&gt;ThinkReview is an opensource browser extension that supports Gitlab , Github , Azure Devops and Bitbucket. &lt;/p&gt;

&lt;p&gt;In this demo it generates a code review for a Github PR. &lt;br&gt;
I decided to implement one of the best practices it outlined. &lt;br&gt;
I already use cursot , I will click on the cursor button and with one click it will open cursor and implement it &lt;/p&gt;

&lt;p&gt;First Go to any PR and select which IDE agent you want to use currently (Cursor , CLaude code and Github copilot are supported but much more to come )&lt;/p&gt;

&lt;p&gt;check the code review generated and select one of the points you'd like to implement , here I'm selecting one of the best prctices about moving magic numbers to constants&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow3qnltzk06m6qz2z4sf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow3qnltzk06m6qz2z4sf.gif" alt="First Step open any PR on Github ,Azure , Gitlab or Bitbucket" width="760" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you click the implement via button in my case here I selected cursor , it will open cursor with your prompt ready to be sent &lt;/p&gt;

&lt;p&gt;First thing it will check if we are on the correct branch of the PR &lt;br&gt;
otherwise it will stop and ask you to switch to the correct branch manually&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qg8qcpdlw33r66e88ak.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qg8qcpdlw33r66e88ak.gif" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here it identified correctly we are not on the correct branch so I'm going to switch to the correct branch manually&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonb4r4qze7dirmx6cmnu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonb4r4qze7dirmx6cmnu.gif" alt=" " width="760" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here it implemented the best prctice in the right branch and I was happy to commit and push the code&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6dynyk5ef7ukqubeu6u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6dynyk5ef7ukqubeu6u.gif" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here I regenerated the review again and I see the best practices scoring has gone up from 90 to 95 &lt;br&gt;
Yay&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkr4xp7pxmmvtlo91lhz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkr4xp7pxmmvtlo91lhz.gif" alt=" " width="760" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ThinkReview is open source and you can install the extension from Chrome Store and Firefox addons &lt;br&gt;
&lt;a href="https://github.com/Thinkode/thinkreview-browser-extension" rel="noopener noreferrer"&gt;https://github.com/Thinkode/thinkreview-browser-extension&lt;/a&gt;&lt;br&gt;
&lt;a href="https://thinkreview.dev" rel="noopener noreferrer"&gt;https://thinkreview.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>azure</category>
      <category>github</category>
      <category>thinkreview</category>
    </item>
  </channel>
</rss>
