<?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>Should You Really Run MCP Servers on Your Own Machine?</title>
      <dc:creator>anehme</dc:creator>
      <pubDate>Tue, 29 Sep 2026 21:20:03 +0000</pubDate>
      <link>https://dev.to/anehme/should-you-really-run-mcp-servers-on-your-own-machine-h92</link>
      <guid>https://dev.to/anehme/should-you-really-run-mcp-servers-on-your-own-machine-h92</guid>
      <description>&lt;p&gt;Running an MCP server directly on your machine is probably the easiest way to get started. Install the package, start the process, connect your client, and you're ready. For development and experimentation, there is nothing wrong with that.&lt;/p&gt;

&lt;p&gt;The situation becomes less convenient as you add more servers. One might require Node.js, another Python, another a specific system package, and several may need their own environment variables or credentials. Eventually your local machine starts carrying the runtime requirements of every MCP server you want to try.&lt;/p&gt;

&lt;p&gt;That made me wonder whether installing MCP servers directly on the host should really be the default beyond development. For many servers, running them in Docker is an interesting alternative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running MCP Servers in Docker
&lt;/h2&gt;

&lt;p&gt;Putting an MCP server in a container gives it a defined runtime environment. Its dependencies and runtime versions stay with the container rather than becoming part of the host machine.&lt;/p&gt;

&lt;p&gt;This is particularly useful when different MCP servers have completely different requirements. Instead of maintaining all those runtimes locally, each server can bring the environment it expects. The server also becomes something you can start, stop, replace, and recreate without treating the host as part of its installation.&lt;/p&gt;

&lt;p&gt;Docker isn't automatically a security boundary, and containerizing an MCP server doesn't solve every operational problem. But from a runtime-management perspective, it gives you a useful unit to work with.&lt;/p&gt;

&lt;p&gt;The interesting part starts when you have more than a few of those units.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens When You Have Ten MCP Servers?
&lt;/h2&gt;

&lt;p&gt;One container is easy to manage manually. Ten starts to look different.&lt;/p&gt;

&lt;p&gt;You may have MCP servers for source control, databases, documentation, internal APIs, browser automation, and development tooling. Each can have its own image, configuration, credentials, runtime requirements, and lifecycle.&lt;/p&gt;

&lt;p&gt;At that point, the question is no longer simply how to run an MCP server. You need to know which servers exist, which ones are running, how they should be configured, how clients reach them, and what happens when one stops.&lt;/p&gt;

&lt;p&gt;Docker gives you a way to run the containers, but it doesn't understand the MCP-specific relationship between them. It doesn't know that one container represents a particular MCP server, which clients should use it, or how an MCP request should reach it.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;organizing and orchestrating MCP servers&lt;/strong&gt; becomes a separate problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Organizing MCP Servers
&lt;/h2&gt;

&lt;p&gt;Before orchestrating anything, you need some representation of what you are managing. An MCP server has an identity, a way to run, configuration, potentially credentials, and some way for clients to reach it.&lt;/p&gt;

&lt;p&gt;Once that information is managed centrally, MCP servers stop looking like unrelated commands running on a machine. They start looking more like infrastructure.&lt;/p&gt;

&lt;p&gt;Orchestration is the next step. Something has to translate that information into actions: start a server, stop it, create its container, connect to an existing instance, recover from a failure, or route a client to the right place.&lt;/p&gt;

&lt;p&gt;This distinction is useful because Docker only handles part of the problem. Docker understands containers; the layer above it needs to understand &lt;strong&gt;MCP servers&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Does an MCP Gateway Fit?
&lt;/h2&gt;

&lt;p&gt;Once servers are managed centrally, it becomes inconvenient for every MCP client to know where every individual server is running. A gateway gives clients a common entry point and can route MCP traffic to the appropriate server.&lt;/p&gt;

&lt;p&gt;The gateway may also become a natural place for concerns such as identity, authorization, and session handling.&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%2Friysw009qfrak0czi1dq.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%2Friysw009qfrak0czi1dq.png" alt="Diagram showing an MCP gateway accumulating authentication, session, Docker, credential, and execution responsibilities" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1: A gateway can gradually become responsible for more than routing MCP requests.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There is a catch. Once you have a central gateway, it is tempting to make it responsible for starting the servers as well. If those servers run in Docker, the gateway now needs access to Docker. If servers require credentials, credential handling can end up there too.&lt;/p&gt;

&lt;p&gt;Eventually the gateway isn't only routing MCP traffic. It is also becoming the execution environment.&lt;/p&gt;

&lt;p&gt;That can be a reasonable design for a small system, but it isn't the only option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separating Management from Execution
&lt;/h2&gt;

&lt;p&gt;Another approach is to separate the component that understands the MCP environment from the component responsible for running it.&lt;/p&gt;

&lt;p&gt;The gateway can handle the control side of the system: requests, routing, identity, authorization, and deciding which MCP server should receive an operation. A runner or broker can handle the execution side: starting processes, creating containers, connecting to running servers, and dealing with their lifecycle.&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%2Fxt665hxoblob9wjclrgy.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%2Fxt665hxoblob9wjclrgy.png" alt="Control-plane and execution-plane architecture" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 2: MCP management and execution can be treated as separate responsibilities.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The useful part of this design isn't simply adding another component. It is that the gateway doesn't necessarily need every capability required to execute every MCP server.&lt;/p&gt;

&lt;p&gt;Docker is a good example.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Should Talk to Docker?
&lt;/h2&gt;

&lt;p&gt;If your MCP infrastructure dynamically creates containers, some component needs access to Docker. Giving that access directly to the gateway is certainly possible, but another design is to keep Docker interaction in the execution layer.&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%2Fbqscv6n0ricaeao21w13.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%2Fbqscv6n0ricaeao21w13.png" alt="Comparison of an all-in-one MCP gateway with a gateway-to-runner-to-Docker architecture" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 3: Container management can sit behind the component responsible for MCP routing.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This doesn't mean the execution layer is automatically secure. Docker access can itself be highly privileged, so whichever component receives that capability still needs to be treated accordingly.&lt;/p&gt;

&lt;p&gt;The benefit is simply that the network-facing gateway doesn't need Docker access just because some MCP servers happen to run in containers. Each component can receive the capabilities needed for its particular job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credentials Have a Similar Problem
&lt;/h2&gt;

&lt;p&gt;The same question appears when MCP servers require credentials. A GitHub MCP server might need a token, while another server might need database or cloud credentials.&lt;/p&gt;

&lt;p&gt;The component deciding whether a user can call a tool doesn't necessarily need to be the same component that supplies the runtime credential required by that tool.&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%2Fcot020lc8w5546m5pr3s.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%2Fcot020lc8w5546m5pr3s.png" alt="Credential flow through the gateway, runner or broker, and MCP server" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 4: Authorization and runtime credential handling can happen at different layers.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How credentials should actually be provided depends on the system. They might be environment variables, mounted files, short-lived credentials, or something else. The useful architectural question comes before choosing a mechanism: &lt;strong&gt;which components actually need access to the credential?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reducing the number of components that need a secret makes the credential path easier to reason about.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Running MCP to Orchestrating MCP
&lt;/h2&gt;

&lt;p&gt;So, should you run MCP servers on your local PC? For development, probably. It's simple and there is little reason to introduce infrastructure before you need it.&lt;/p&gt;

&lt;p&gt;Docker becomes interesting when you want cleaner runtime environments or don't want every MCP server's dependencies installed directly on the host. Once you start running several containerized MCP servers, however, Docker itself is no longer the interesting problem. You need a way to organize those servers, manage their configuration and lifecycle, and route clients to them.&lt;/p&gt;

&lt;p&gt;That's the problem I've been exploring with &lt;strong&gt;MCPlama&lt;/strong&gt;: what happens when MCP servers are treated as infrastructure that can be organized and orchestrated rather than as individual commands someone manually keeps running.&lt;/p&gt;

&lt;p&gt;The progression is fairly natural: you start by running an MCP server locally, move it into a container when isolation and runtime management become useful, and eventually need an orchestration layer when the number of servers grows.&lt;/p&gt;

&lt;p&gt;At that point, the question has changed from &lt;strong&gt;“How do I run this MCP server?”&lt;/strong&gt; to &lt;strong&gt;“How do I manage all of them?”&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;MCPlama is open source: &lt;a href="https://github.com/mcplama/mcplama" rel="noopener noreferrer"&gt;https://github.com/mcplama/mcplama&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>mcp</category>
    </item>
    <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>opensource</category>
    </item>
  </channel>
</rss>
