<?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: anehme</title>
    <description>The latest articles on DEV Community by anehme (@anehme).</description>
    <link>https://dev.to/anehme</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%2F4139999%2F3c88ca9a-d83e-4b8e-9d85-794f24a251dc.jpg</url>
      <title>DEV Community: anehme</title>
      <link>https://dev.to/anehme</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anehme"/>
    <language>en</language>
    <item>
      <title>MCP is easy to start with. Running it for a team is a different story.</title>
      <dc:creator>anehme</dc:creator>
      <pubDate>Wed, 23 Sep 2026 20:44:35 +0000</pubDate>
      <link>https://dev.to/anehme/mcp-is-easy-to-start-with-running-it-for-a-team-is-a-different-story-1n93</link>
      <guid>https://dev.to/anehme/mcp-is-easy-to-start-with-running-it-for-a-team-is-a-different-story-1n93</guid>
      <description>&lt;p&gt;I've been experimenting with MCP for a while, and one of the things I like about it is how easy it is to get started. You find an MCP server, add it to Claude, Cursor, VS Code, or another compatible client, configure the credentials it needs, and you're basically done.&lt;/p&gt;

&lt;p&gt;For a developer working locally, this model makes a lot of sense.&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%2Fsnyia8q4ywdx7ok2nfpl.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%2Fsnyia8q4ywdx7ok2nfpl.png" alt="MCP model" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But while working with more MCP servers, I started wondering what this setup looks like when you move beyond a single developer.&lt;/p&gt;

&lt;p&gt;Let's say a team has 10 developers. Some use Claude Code, some use Cursor, and others use VS Code. The team also has MCP servers for GitHub, databases, internal APIs, monitoring, and maybe a few tools they built themselves.&lt;/p&gt;

&lt;p&gt;The simple architecture starts becoming something like this:&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%2Fujcsewo47qj807jzux73.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%2Fujcsewo47qj807jzux73.png" alt="MCP architecture" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Technically, there's nothing wrong with this. Every developer can configure the MCP servers they need and continue working.&lt;/p&gt;

&lt;p&gt;The problem is that you now have configuration, credentials, and access distributed across multiple machines. At that point, managing MCP starts looking less like configuring a developer tool and more like managing infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credentials become surprisingly important
&lt;/h2&gt;

&lt;p&gt;Credentials were the first thing that made me think about this problem.&lt;/p&gt;

&lt;p&gt;Suppose you have an MCP server that connects to an internal API. When you're the only person using it, keeping the credentials locally is simple enough. But if 20 developers need access to that same service, you have to decide how those credentials should be managed.&lt;/p&gt;

&lt;p&gt;You could distribute the same credentials to everyone, but then they're stored across many developer machines. You could create separate credentials for every developer, which is better for isolation but creates more administrative work.&lt;/p&gt;

&lt;p&gt;Then normal lifecycle problems start appearing. Someone leaves the company, an API key needs to be rotated, a developer changes teams, or an MCP server moves somewhere else.&lt;/p&gt;

&lt;p&gt;None of this is unique to MCP. We've already dealt with the same problems with databases, internal APIs, cloud infrastructure, and CI/CD systems.&lt;/p&gt;

&lt;p&gt;The interesting part is that MCP is starting to expose those same infrastructure problems in a new place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Access control is another problem
&lt;/h2&gt;

&lt;p&gt;Once multiple people use the same MCP infrastructure, authentication alone isn't enough.&lt;/p&gt;

&lt;p&gt;You also need to decide what each person should be allowed to use.&lt;/p&gt;

&lt;p&gt;For example, maybe everyone on the engineering team should be able to use an MCP server that searches GitHub. At the same time, you might have another MCP server connected to production infrastructure that should only be available to a smaller group.&lt;/p&gt;

&lt;p&gt;It can get even more granular than that. A user might be allowed to call read-only tools while another user can call tools that modify data.&lt;/p&gt;

&lt;p&gt;With a local MCP configuration, the MCP client generally connects directly to the server:&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%2F788jdntvnbembdm7722g.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%2F788jdntvnbembdm7722g.png" alt="local MCP configuration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That simplicity is great, but it also means there isn't necessarily a central place to make these decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Auditing gets more interesting when AI is involved
&lt;/h2&gt;

&lt;p&gt;Another question I hadn't thought much about initially was auditing.&lt;/p&gt;

&lt;p&gt;If an AI assistant uses an MCP server to interact with GitHub, a database, an internal API, or some other company system, at some point you may want to understand what happened.&lt;/p&gt;

&lt;p&gt;For example:&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%2Fdhzesr2ngv3cqnmgenpe.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%2Fdhzesr2ngv3cqnmgenpe.png" alt="MCP audit" width="800" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a company environment, it can be useful to know which user initiated the interaction, which MCP server was used, which tool was called, and when it happened.&lt;/p&gt;

&lt;p&gt;Again, this isn't particularly exciting infrastructure. Logging and auditing rarely are. But these are usually the boring problems that start becoming important once something moves from experimentation into regular use.&lt;/p&gt;

&lt;h2&gt;
  
  
  This started reminding me of API gateways
&lt;/h2&gt;

&lt;p&gt;The more I thought about it, the more the problem reminded me of how APIs evolved.&lt;/p&gt;

&lt;p&gt;A simple application can connect directly to an API:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Client → API&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As systems become larger, we often introduce another layer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Client → API Gateway → Services&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The gateway gives us a central place for things like authentication, authorization, routing, policies, and logging.&lt;/p&gt;

&lt;p&gt;That made me wonder whether MCP might eventually need a similar pattern.&lt;/p&gt;

&lt;p&gt;Instead of every client knowing how to connect to every MCP server, clients could connect through a common layer.&lt;/p&gt;

&lt;p&gt;Credentials could be managed centrally. Access decisions could happen in one place. The underlying MCP servers could also move or change without requiring every developer to update their configuration.&lt;/p&gt;

&lt;p&gt;Of course, this adds complexity. If you're one developer running two MCP servers on your laptop, introducing a gateway would probably make your setup worse rather than better.&lt;/p&gt;

&lt;p&gt;But for a team sharing MCP infrastructure, I think the tradeoff becomes more interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  I decided to build the idea and see what happens
&lt;/h2&gt;

&lt;p&gt;At some point I realized I could keep thinking about the architecture or actually build it and discover where it breaks.&lt;/p&gt;

&lt;p&gt;So I started an open-source project called &lt;strong&gt;MCPlama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;[&lt;a href="https://mcplama.com" rel="noopener noreferrer"&gt;https://mcplama.com&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;MCPlama is my attempt at the gateway/control-plane approach. MCP clients connect through it, while the platform handles the infrastructure around the MCP servers.&lt;/p&gt;

&lt;p&gt;The basic architecture looks something like this:&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%2F0at90ky9scw1awjtihfp.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%2F0at90ky9scw1awjtihfp.png" alt="MCPlama architecture" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal isn't to change MCP itself. Clients and servers still communicate using MCP. The gateway provides a place to manage the parts around that communication: identity, credentials, policies, routing, and auditing.&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%2Fsel67ocb73u3ex8myk5i.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%2Fsel67ocb73u3ex8myk5i.png" alt="MCPlama overview" width="799" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One design decision I spent some time thinking about was where the MCP servers themselves should run.&lt;/p&gt;

&lt;p&gt;Putting everything inside the gateway would make deployment easier, but I wasn't comfortable with the idea of arbitrary MCP servers sharing the same process and environment as the control plane.&lt;/p&gt;

&lt;p&gt;Instead, I started separating the management side from the execution side.&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%2F96gbgy4vjy5g5l03f54j.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%2F96gbgy4vjy5g5l03f54j.png" alt="MCPlama architecture" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That introduces additional infrastructure, but it also creates a clearer boundary between managing MCP servers and actually executing them.&lt;/p&gt;

&lt;h2&gt;
  
  
  How are teams actually managing MCP?
&lt;/h2&gt;

&lt;p&gt;As adoption grows, I think the conversation around MCP will gradually shift from &lt;strong&gt;"How do I connect this server?"&lt;/strong&gt; to &lt;strong&gt;"How do we actually manage all of this?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That means figuring out how teams share MCP servers, where credentials should live, how permissions should work, how private servers are deployed, and how organizations keep track of what their AI clients are doing.&lt;/p&gt;

&lt;p&gt;I'm curious how teams using MCP today are approaching these problems. Are developers still configuring everything individually? Have you built some shared infrastructure around it? Or are you using MCP across a team and haven't run into these problems at all yet?&lt;/p&gt;

&lt;p&gt;I'd genuinely like to hear how others are solving this.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>architecture</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
