<?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: PriyanshuValiya</title>
    <description>The latest articles on DEV Community by PriyanshuValiya (@priyanshu_valiya).</description>
    <link>https://dev.to/priyanshu_valiya</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%2F2621418%2F0a8bff4b-57b1-497e-9b18-a2d766be737f.jpg</url>
      <title>DEV Community: PriyanshuValiya</title>
      <link>https://dev.to/priyanshu_valiya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/priyanshu_valiya"/>
    <language>en</language>
    <item>
      <title>Your E-Commerce Backend Doesn't Need a New UI. It Needs an MCP Server.</title>
      <dc:creator>PriyanshuValiya</dc:creator>
      <pubDate>Thu, 13 Aug 2026 12:13:30 +0000</pubDate>
      <link>https://dev.to/priyanshu_valiya/your-e-commerce-backend-doesnt-need-a-new-ui-it-needs-an-mcp-server-4ik8</link>
      <guid>https://dev.to/priyanshu_valiya/your-e-commerce-backend-doesnt-need-a-new-ui-it-needs-an-mcp-server-4ik8</guid>
      <description>&lt;p&gt;Every ecommerce admin panel I've worked with has the same shape: a sidebar of menus, a table with filters, a "search" box that only matches exact strings. If the owner wants to know "which products are low on stock and haven't sold in 30 days," they either learn the filter UI cold or they ping a developer to write a query.&lt;/p&gt;

&lt;p&gt;That's the gap MCP closes. Not by replacing the admin panel by giving an LLM a typed, permissioned door into the same business logic your REST API already exposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup most people get wrong
&lt;/h2&gt;

&lt;p&gt;The instinct is to let the model touch the database directly, or worse, generate SQL on the fly. Don't. Your business logic already lives in a service layer for a reason validation, ownership checks, side effects like inventory recalculation. MCP tools should call &lt;em&gt;that&lt;/em&gt; layer, not go around it.&lt;/p&gt;

&lt;p&gt;If you already have a layered backend (controllers → services → repositories), you're not rebuilding anything. You're adding a third entry point next to your REST API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Frontend  ─┐
            ├─&amp;gt; Business Services ─&amp;gt; Repository ─&amp;gt; DB
MCP Server ─┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each MCP tool is a thin wrapper: &lt;code&gt;getLowStockProducts&lt;/code&gt;, &lt;code&gt;getOrdersByDateRange&lt;/code&gt;, &lt;code&gt;updateProductPrice&lt;/code&gt;. The tool description is doing real work here it's the only documentation the model has, so vague names and descriptions produce vague tool calls. I've found being almost annoyingly explicit ("returns products where stock &amp;lt; threshold AND no sale in the last N days, sorted ascending by stock") gets far more reliable results than a clever one-liner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why voice/sentence queries actually work here
&lt;/h2&gt;

&lt;p&gt;This isn't a chatbot bolted onto a search bar. When a business owner says "which products are low on stock and haven't sold this month," Claude Desktop (or any MCP client) doesn't guess an answer it decides which tool(s) to call, calls them with structured params, and reasons over the actual returned data. The natural language is just the interface; the tool call is still a real, typed function invocation hitting your real backend.&lt;/p&gt;

&lt;p&gt;That distinction matters for trust. You're not asking the owner to believe an LLM's memory. You're asking it to translate intent into the same API call a developer would write by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Auth is not optional, and it's not free
&lt;/h2&gt;

&lt;p&gt;The part that'll bite you if you skip it: MCP tools inherit whatever access the calling session has, so you need the same ownership/authorization checks your API already enforces not a parallel, weaker set for "the AI path." I've been working through exactly this on a Jira-style project management backend right now, and the honest answer is auth design took longer than writing the tools themselves. Worth it. An MCP server with no scoping is just a very polite SQL injection vector.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd actually start with
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pick 3–5 read-only queries first (stock levels, recent orders, revenue by category). Ship those before touching any write operations.&lt;/li&gt;
&lt;li&gt;Log every tool call with the same audit trail you'd want for a human admin action.&lt;/li&gt;
&lt;li&gt;Write tool descriptions like you're documenting for someone who's never seen your schema because that's exactly the situation the model is in.
The interesting part isn't "AI can query your database now." It's that non-technical operators get to ask business questions in the language they already think in, against data that was previously locked behind a UI someone else designed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're exposing an existing backend this way, I'd genuinely like to hear what tripped you up auth scoping, tool granularity, or something else entirely.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>backend</category>
      <category>claude</category>
    </item>
    <item>
      <title>Running Claude Code on AWS Bedrock Instead of the Anthropic API (a weekend rabbit hole)</title>
      <dc:creator>PriyanshuValiya</dc:creator>
      <pubDate>Tue, 04 Aug 2026 04:42:25 +0000</pubDate>
      <link>https://dev.to/priyanshu_valiya/running-claude-code-on-aws-bedrock-instead-of-the-anthropic-api-a-weekend-rabbit-hole-jih</link>
      <guid>https://dev.to/priyanshu_valiya/running-claude-code-on-aws-bedrock-instead-of-the-anthropic-api-a-weekend-rabbit-hole-jih</guid>
      <description>&lt;p&gt;I've been learning Claude Code for agentic development lately, but I didn't want to burn through paid API credits while I was still figuring out how the tool actually works. Every wrong prompt, every abandoned session, every "let me just try this real quick" costs money when you're hitting the Anthropic API directly.&lt;/p&gt;

&lt;p&gt;So I spent a weekend building a small LiteLLM proxy that lets the Claude Code CLI talk to Amazon Nova on AWS Bedrock instead. Same agent loop, same tool calling, same workflow you'd get with Claude Code normally just pointed at a different backend, running on AWS credits instead of API billing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I was actually trying to solve
&lt;/h2&gt;

&lt;p&gt;I looked at the usual options for cheap/free agentic coding practice and none of them held up for real sessions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ollama locally&lt;/strong&gt; - needs a beefy machine with real RAM and GPU headroom. Most people don't have that sitting around, and I didn't want to buy it just to practice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free-tier providers like OpenRouter&lt;/strong&gt; - you hit token limits within a handful of basic prompts. Not nearly enough runway for long-running agentic workflows where the model is calling tools back and forth for a while.
I wanted something that let me learn tool use, agent loops, and long context handling without either of those walls showing up mid-session.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;A LiteLLM proxy sitting between Claude Code's CLI and AWS Bedrock, translating requests so Claude Code thinks it's talking to Anthropic's API while it's actually routing to Amazon Nova.&lt;/p&gt;

&lt;p&gt;A few things I locked down on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No artificial session caps.&lt;/strong&gt; It's self-hosted, so there's no vendor imposed limit on how long or how often I can run sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everything runs on AWS credits&lt;/strong&gt;, not API billing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roughly 20–35% cheaper per token&lt;/strong&gt; than Claude Haiku pricing, based on current Bedrock rates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM scoped to a single model.&lt;/strong&gt; I locked the role down so the proxy physically can't invoke anything more expensive, even by accident.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Budget alerts wired in&lt;/strong&gt;, so I'm not finding out about a runaway bill after the fact.
The Docker image and config are public if you want to poke at it yourself: &lt;a href="https://github.com/PriyanshuValiya/Claude-Code/blob/main/README.md" rel="noopener noreferrer"&gt;https://github.com/PriyanshuValiya/Claude-Code/blob/main/README.md&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where this actually helps (and where it doesn't)
&lt;/h2&gt;

&lt;p&gt;This is genuinely one of the more practical setups I've found for running long agentic sessions without either buying hardware or hitting a free-tier wall every ten minutes. If you're trying to internalize how these coding agents plan, call tools, and recover from errors, having room to run long sessions matters more than having the "best" model underneath.&lt;/p&gt;

&lt;p&gt;But I want to be straight about what this is not: it's not free Claude. It's a translation layer that lets Claude Code's client talk to a different model entirely. Amazon Nova is not Claude, and the outputs, reasoning quality, and tool-calling behavior won't match what you'd get from Anthropic's actual models. If you're evaluating Claude Code itself, or building something you plan to ship, this setup will give you a skewed picture.&lt;/p&gt;

&lt;p&gt;What it's good for is exactly what I built it for: learning the mechanics of agentic coding tools - the loop, the tool calls, the context management without worrying about a credit card every time a session runs long.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;If you're in the same spot I was, wanting to learn Claude Code without either buying a GPU rig or getting cut off after three prompts, a Bedrock proxy is a reasonable middle ground. Just don't mistake it for the real thing when it's time to judge the model itself, that comparison only makes sense against Anthropic's actual API.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aws</category>
      <category>claude</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
