Konabos

Kentico MCP Servers Unleashed: Review, Demo & Docker Integration

Konabos Inc. - Konabos

13 Nov 2025

Note: The following is the transcription of the video produced by an automated transcription system.


We are live. Yes. Okay, sorry for short delay. We have some issues with the setup. So today we're gonna talk about MCP servers experienced by Kentico Docker, and how all of that works together. So my name is Łukasz Skowroński. I work as senior solution architect at Konabos. I was also lucky enough to be awarded with Kentico partner event this year, and the presentation that we're gonna see, as you probably noticed, was present before on the Kentico partner connection this year in Prague, but this is gonna be extended a bit longer version, and I hope that this time we're gonna have some time for questions At the end. All right, so let's just move on. So we have to start with a big bang, and not only a theory, so you can understand what you're talking about on the on the slides. So you need to have some best knowledge. So what is Docker, right? So I was thinking how to actually explain that, and probably the easiest way is to compare that to virtual machines that you probably familiar with, so that it Docker has containers, they are similar to the virtual machine in a way that you have them dedicated for some applications. They store some apps, but they do not have operating systems as virtual machines do. So they are more optimized, more efficient and more flexible. Fix that, because they can be smaller, can be dedicated for particle app, because it's easier to set it. Set it up this way. They also compatible with Windows, Linux, Mac, OS, which can be really great feature when you work on multiple platforms. It is also flexible. It's, so you can have multiple different configurations for multiple different applications and use those whenever you require it. So at the end, it also improves dev team experience, but there is no asterisk after some of the initial setup, right? Because setup itself can take some time, especially for so for a bit more complex environments, because you have to not only specify the applications or application configuration and the base servers that are used for those proposals. But also you need to remember about networking and understand also how the isolation works on the networking and the file system level. Next thing that we gonna discuss a lot today is the MCP so model context protocol, so the fiction says it all right. So it is just a protocol, protocol, the standardized AI tools, communication. So the so the communication can happen, you need to have the MCP clients and MCP servers an example of the MCP clients are, for instance, Visual Studio, cloud, desktop cloud, cloud. CLI can be a different tools like chat, GPT or, for instance, copilot, all of that our clients, the servers, are just specialized applications, or any servers we've implemented MCP interface on top of them. So that's quite easy. Then the other piece that we're going to use today is the Docker together with the MCP toolkit and MCP gateway. So we will start here with the official definition, which says that the Docker MCP toolkit is a gateway that lets you set up, manage and run containerized MCP servers and connect them to AI agents. So that definition is quite important, because it puts an equal sign between the Inc toolkit and a gateway. And I will try also to explain later, what does it mean, really but before that, on the right side of the screen, you see. The docker desktop screen. So this is a screenshot from the Docker desktop that shows you that you can have most MCP toolkit available for you, and inside the MCP toolkit, you have catalog that right now offers you more than 230 servers, but you can easily enable and use those for your proposals, right? So I really encourage you to take a look at that, because there are really many interesting MCP servers available for everyone. We'll look at the other tabs later as we move on with the with the changes and with the setup that I got prepared for today. Yeah. So the difference between the MCP toolkit and MCP gateway, so the commutation itself is very confusing, and we read all of that and still wasn't sure what exactly the toolkit and the gateway means, or what? What is the difference between those two? So images on the right are taken from the from the from the official documentation, and you can see that here on the on the top image, there is like a MCT client, which is the choice of your code. And you have also the MCP server. And between those two, you have the MCP gateway, right, but there are no toolkit information on that image. And below you have the MCP client again, which in that case is called desktop, called desktop, and you have MCP toolkit around the Docker containers, right? So it but you don't have MCP toolkit here on the on the top image, so it's like a bit confusing. So the way I understand that, after some time spent on playing with those things, MCP toolkit is just a toolkit UI that let you configure and manage tools or servers that you are using through the MCP gateway. So the MCP gateway is application Docker image that manages and provides access to the MCP servers, kind of proxy between the MCP client and MCP server, and the toolkit is just UI to manage it. That's probably the easiest way of understanding the difference between those two. Yeah, so that's something that we also need to understand. The canticle MCP servers. During that demo, we gonna use one of them, maybe two, depends how it goes, but there are more than one currently, so we need to be at the same page with that one as well. Alright, so the first one that you should be know is the chemical community Inc server. So that one is probably the first one that was created. It was developed by Sean Wright, and it was developed as experimentally to see how we can work together with Kentico, experienced by Kentico. It is built with the dotnet MCP server, SDK, it is running as a part of the website application, right? So to enable it, you need to specify or enable those servers on the program, CS file, and then it just starts working. So that service that MCP server uses SBK or instance to run and to make operations on. So it's really something to play with more than use it in real case scenarios. Then we have the other one, which is canticle documentation MCP server, so that one is officially released by canticle. It is a remote MCP server that provides you up to date, high quality documentation for MCP clients. It also provides API examples and why it is important, because it allows you to or it provides you the best possible context for your queries whenever you work with the clients like Cloud or ChatGPT or Any other ones, because you don't need to make browse the page with different tools to get or browse, browse the documentation pages to get the information or extract information from there that you may use. You don't need to like or you reduce a risk. Of having or getting information from the from that, from the from the website, about wrong version of the of the tool that you're using at the moment, so that MCP server provides better quality content, and it makes your easier with the code generation and stuff like that. The last one is going to be released very soon, so probably November, 2025 it's the technical content types, MCP server. So this is another one that one from what we know will be working with your local instance. Again, it will, or it was designed to support your integrations and initial imports. And this is gonna be a part of the canteen copilot. So larger project that gonna give you more and more overtime features that will help you developing experience by technical solutions, but that one is not available right now. We just, or I share that with you so you know what is coming, and also so we can understand the differences, all right? So let's start with the basic setup, right? So we have the client, one of the clients, so this is probably the most popular one. So Visual Studio code. So to add or configure your Visual Studio code as a as the client and CP client, you just need to create VS code directory orvs code directory, and put MCP dot json file in it, and then with simple JSON structure, you specify the servers that you want to connect to. So in here we have two of them, so we have, oh, sorry. And we have the experience MCP server. So that's the community server, which basically is hosted on Docker as a part of the experience by Kentico instance. And we have also the Docker MCP, which is MCP gateway, really, in that case, that will give us an access tool to the other servers available through the toolkit. And when that configuration is added, you can just start it from that UI. So you can see here the Start buttons. You can also review available tools, so it's quite useful, and after that, when started, you can start playing with it from the copilot screen. The other setup, or possible setup, is called desktop. So in the Settings area, you'll find connectors, and then the connectors. You can specify your connectors basically as the name says, but you can connect to the to the servers. So here we can we can see that we have already MCP Docker connected and canticle docs connected as well. So we connected to the local MCP Docker and connect. We connected to the remote MCP server provided by canticle. And then the other option to actually connect is from the Docker desktop screen. So again, in the MCP toolkit, you have clients tab, and in the Clients tab, you can simply click Connect and it's gonna connect, or it's gonna configure your available clients so they can work together with the MCP toolkit or Docker MCP gateway, to be more precise, below is just a check that you can use a command from the PowerShell that can use to verify if you have established connection with the with the MCP servers. So the first round of that command shows that there are no MCP servers configured after clicking Connect button. I saw that we have the MCP Docker connected, and it is connected with the Docker MCP gateway Run command, all right, so the next slide will be problem, yes, so we have a quick level here before I start, you should know that on the left we have Docker desktop application right now there are no containers running. On the right side, we have cloud desktop and we tried, or we asked cloud to file Kentucky website. We don't we are not giving code the domain and then navigate on it to a contact page, right? So on font website, it has to navigate to the contact page and then fetch content from it and generate a table with available contact information, right? So when we started the comment. First, it identifies the website, URL, right? It found, it found the contact page. Then it navigates to a URL. What does it started the playwright container here to navigate to the page and extract information from there, right? So the container, container was created just for the purpose or of that MCP server and that one task, so it is still running. It took the or extracted information from the page, and we've got it so it found the page, it generated table with the contact information. And the task is done. Good. 

What are the pros and cons of that basic setup? So pros first, so it's very quick setup. So there's almost non configuration. You can configure that almost with a single click, no Docker or Tech experience required, or very basic level. So you can basically know what Docker is and where to find those buttons. But the cons are, the setup is not optimized for practical needs. You may end up with too many MCP servers available for every call. So now, if you work on multiple solutions, or you just enable multiple MCP servers for fun, then you are risking that when you are asking your client to do some tasks, it may use different MCP servers that you talked so too many usually means more problems, and you have also limited configuration options, right? So the UI or approach within the UI limits you in terms of the configuration. So what? What to do if you want more control? So before we move on to answer, first, we need to understand that everything is an application. MCP server is just a standard several dmcp interface, cloud code, CLI, it's again, just an application, but installed on your local setup or local server, but I can be also run in the container. An experience by cantic, of course, is dxp that also requires server to be run and also can be run from the container. So to run all of that, or run all or connect all of that, we're going to use the Docker compose file. So the Docker compose file, if you want to not aware of it, it just a file that contains configuration of the environment, the whole environment, and all of the connections between the servers in close inside that environment. So it isolates a network, it isolates the data. It allows you to provide advanced configuration for the servers for the MCP. It can be a predefined setup for every project, right? So you can have a different composed file with different configuration options for every single project. And if you also containerize your clients in CP clients, you're going to have a better context management, because they will be always running in the context of containerized environment, which means that you it's going to be safe, because you're going to be modify files and applications that are in the environment that you're working on, and nothing besides that. So here on the on the right screen, you can see that we actually defined or use the Docker Inc gateway image as our own configuration for the for our composed environment. What is important, or what you should be aware of, in that case is that you. Yes, we have running MCP gateway thanks to the Docker desktop and Docker MCP toolkit, but the one that we have here is another instance of it, which means that we can have a separate configuration for that environment, right? So through that gateway, which can be treated as a proxy, we're gonna allow to use only some servers, some MCP servers, even though, on the Docker desktop, we may have, right now, 100 MCP servers installed for that environment, we're gonna limit that to three or four. So on the screen, you have three at the moment, later on, I will show you that we can have even more good so our compose file consists of traffic routing experienced by cantico. Run on Castro server Docker image for SQL Server cloud CLI running on the node server and the Docker MCP gateway that I already mentioned on the previous slide. But for the for those MCP servers, we have a separate registry included in the previous in the previous file where we can provide additional settings, right? So for the file system, one in particle we or file system MCP server, we define volumes that can be accessed by that MCP server, right? Which means that we can have that file system MCP server in that environment, and it can access only that SRC for canticle partner connection, the other project that we working on can have, again, the file system MCP server configured and different src folder defined. So whenever we hit or we trigger the MCP file system, it's going to modify only those files that are allowed for that particular instance, configured in that particular environment, which makes it super safe. Good. Let's take a look at the example. So first take a look at the top left corner. So here we have the containers. We do not have any of those running, so we're gonna start that. So we started starting the whole environment. As you can see, some containers were created, were started already. Some of them are still stopped, because they need some time to be started. Then we need to wait for our application, our website, to be up, because canticle committee, MCP server is part of the website or part of the website application, so it has to be up before we move on. So let's wait a minute. Okay, so it's up. So next we gonna connect to the to the cloud right so we connect or attach the shell of the cloud server, and we gonna take a look at the logs of the MCP gateway, again, closed inside the container. So on the right we have blocks of the MCP gateway. On the left we have the we are connected to the server where cloud is so first, let's see if growth. See the is connected to the MCP servers and it is connected to the MCP server. Servers. Right first we have the gateway, so it is connected to the Gateway inside of the environment, and it is connected to the experience by Kentucky, again, inside the environment. Those are two different types of connections. So for the top one, SSC is SSC one, the bottom one is HTTP one. All right, let's move on. So let's just start the code, code from the from the CLI, all right, and we've got it started, and we'll run some queries. So first gonna be ask local cantika and show me the list of 10 available icons so that that query should actually connect to the experience by Kentico or community MCP server. To get those icons right, let's see what happens right so we can see that. Bob is asking us that he found an MCP tool to do the job. It is part of the SBK. It is asking us if we are able to proceed. Yes, we do. So it took the icons from the Canadian MCP server. We have a list, so that's good. It worked, and now we want to over here before that. I don't know you notice, but there are no new servers, new MCP servers created for the on the containers level because it was MCP server available from the from that container, from that one. So this is a container hosting our website. Now we are running another query, which is check if any of these icons are used on the canticle website, right? So first it has to find the website itself, right? So it found the website, and now it wants to navigate to the to that website and extract information from there. So it created, or it used the gateway first to connect to the playwright container, or create a private container that is used to, sorry, that's used to extract information from that page. So let's wait for the result.

It closed the container, so it's no longer here, but it wants to do another one, right again, playwright, to extract information or verify information which is stored there. So it is doing a job, and it confirms that none of the first and icons from the critical icon list are used on the main category, which is good. We're expecting that. All right, let's run the last query so the last queries use the MCP file system server and read file program, CS from the source directory, and let me know if you found an MCP configuration there, so we know that it is there, right? Because we are already using that. But what is interesting here, right? We just asking that in front of your to use the MCP file system to find the program, CS, file. We just said that, yeah, use the SRC directory. So it has to find the exact src, has to find the file. So first it's gonna it's gonna use the gateway again, but this time, it's going to use a different, different MCP server. Because it using the MCP file system, it found the file right we see the file system container created, remember, with limited access to limited files.

Right, and it found the file. Now it want to analyze the file, so it uses the different tool read file from the same server, and it gives us an answer that seconds. Once again, we found the answer that the it found MCPS configuration, the program, CS file, and it provides us exactly how the MCP service should be configured, at least the community one on the level of the application. So it's that was successful search. All right, so let's move on to the next slide. Then, yes. So another thing is sorry, another thing is the usage or how to register other MCP servers actually, to make them available for the gateway, right? So, because gateway is basically can be treated as a proxy. And if you think about right, if you try to summarize access to the MCP gateway, or to the MCP servers for all the team members, and you don't want them to configure every single MCP server. Every time you decide as a team that we want to use another one, you can use MCP gateway as a proxy and configure everything on the in the file, which is simple. By the MCP gateway. So here we have an example of Connecticut Docs. So this is our remote MCP server, right? So it is not really or it can be used without Docker, but it can, it can be also used with Docker, but in that case, we need to use the server that gonna get the query from us and send that to the remote MCP server and go back to add to our client with the answers, right? So this is like additional layer that allows you to close everything in the containers if you want to, and potentially also add some additional filtering for the queries or whatever needs to be done, right? So it is like additional option to add some configuration that wouldn't be possible without that. Yes. So this is like an example of configuration that I was playing with, and that works pretty well. Yeah, so the ultimate summary is that use MCP servers with Docker because it's ensure safety on the networking and the file system level. It helps you with keeping context or correct context every time you work with the AI tools, because container containerization, again, make it easy to switch between the projects, and you can be sure that every single time you run or use your MCP Client, you run it in the for the correct tools, right or correct files or correct servers, and at the end, it also improved performance. Because, if you think about the basic example that we started with, if you have hundreds of the MCP servers installed, because you are working overtime on dozens of projects, then all of them are waiting there, or if you even don't use Docker, then it's even worse, because you have to have all of them up and running with Docker and containerizations, all of them are switched off to the time you need those Right, and they are triggered only for the specified environments. If you set it up, it's right. So it, it helps your machine, it helps you. So it's, it's a really nice thing to have cute questions. From what I see, actually wrote that there are a couple of questions i Ah, okay, let's see what we have. Can you add multiple code sources of experience by canticle product in a single MCP server? Let me think about Google sources. I'm not sure if I understand your question in Google source. I don't understand the question, really. I mean, if you asking for the community server, committee, MCP server, it there can be added only one instance. I mean, in theory, you can add more but different servers running or built with users of the MCP, SDK, but I'm not entirely sure if that's what you were asking for. If you were asking on the other from the other way, if you have, I don't know. I mean, you don't, you don't add the product to MCP server. You cannot MC you can add the project to the context of some queries, and then it has nothing to do with the MCP server itself, right? Because you basically extend your context with some additional data. So that's, again, a different thing. So I'm not sure if it answers it. If it answers your question, if not, please add more details to that question. Next question, from what I see, I'm interested on how code, code works in terms of context consumption with Docker gateway, I see that it is recording, but it was again, MCP inside load code, yes, let's take a look at it. Okay, so Q we. Have the so let's start the environment itself. It's it. So Cloud is one of the containers here, right that cloud instance is defined in the compose file. Show you that too, right here. So we have the Docker file that defines how the code is installed. We have some environment settings, so at the end of the of the build process, we have that cloud instance available. We have also the MCP gateway as a separate node, right? Okay, so it has been started, right? So we have an application running from Docker right now. If we go to the containers, we will see that we have a cloud instance in the container, right? So let's just attach to it, and here we have so we are running a command right now from inside of the container, so it is completely different from my local instance. So let's say I will just try to run something like that from my local, yeah, my local laptop. Let's see that it's, yeah, it found just MCP Docker, right? Because it uses, right now, a local setup here from the local or local terminal. And when we triggered that from the container, it has their own containerized configuration. And it found that it has more than one MCP gateway, right? So you basically can run everything, what you want. From there, start close, right and basically play with it. From there, I hope it answers, answers your question.

MCP inside MCP, yeah, that one, yes, it shows available options, right? So we can see that there's a gateway fetch some of them. Not all of the tools are visible here, because they are keeping behind gateway. But let's see gateway, it doesn't show all the tools from the command line here, even though those tools are available, right? But for the MCP you see when it shows, okay, good. The other question I see from Drago, is there any priority between MCP servers? If you have many that potentially glide I'm not aware of any priority between the MCP servers. I think that it is on the in that case, code side to decide which MCP server will be used. My guess would be that if the query that you're that you're wrote match the tool that is available, then it's going to be the one chosen by quote, right? So the query or the MCP tool matching the best your query will be triggered. That my guess. Okay, another one. No. Other words, the question is, if Docker gateway makes tokens consumption more efficient, thing that the at the end of the day, it doesn't matter, really, or it doesn't make any difference for the tokens, tokens consumption, right? It may, it may have some influence. If we think about number of the MCP servers available for your queries, if there are less, then probably cloud will be able to quicker figure out that there is MCP server available to do the job. Or not, if you have hundreds of those available, then it may take more tokens, I guess, to find the right one, but that's something that I wasn't checking, so just figure out really but anyway, I think it may help or all tools are loaded at once, as usual. So with Docker, tools are not loaded, right? They are like kind of registered and available, as you can see, as you saw during the presentation. They are like started whenever they are needed, right? So that's different from the MCP servers running all the time, right? Because the gateway knows what are the tools and just starts the host when, whenever you want to run a query, or your client decides that, or thinks that there is a query that should be triggered, okay, think that It was the last where we had, we, we, oh, I'm not sure if, oh, I see that you haven't seen the Yeah, you haven't seen the screen with application or anything. Let me show you that. Sorry for that. I just noticed a message, okay, let me show that quick once again. I Yeah, so for the for the clothes, right, once again, very quickly, on the compose file, we have configuration for it, right? It is, I hope you can see it. Yes, you can, okay, then you can attach to it right from here. What we did for the for the tools, which a pin, right? It shows you exactly what tools are available, at least for the servers not hidden behind the gateway, for those hidden fire behind the gateway, it's in that case, shows only fetch one. I'm not entirely sure why. Gateway it still shows on fetch one we have also the computation one from canticle. Let's just try to run it so maybe to it should go through the through the gateway and connect to the, yes, it goes through the gateway, right, and it's gonna use the canticle dots search, so it's gonna connect to the remote MCP server. We're gonna see also here for a second, probably the container created.

Let's see, yeah, so it felt demo dots. It was working before, but yeah, it found it. So I'll just stop it, because it doing the search that we don't want to. But yeah, it identified the critical doc search. For some reason, felt here. Maybe I would be restarted. But yeah, it's like this. Okay, let's see. Yeah, that's all the questions we had. Okay, so that's it really so thank you everyone for joining. I hope you like that. If you have any questions, just reach out to me on LinkedIn and we can have a project conversation about the things that were interesting for you. Yeah, thank you for joining. Have a message. Bye, bye, bye.

Sign up to our newsletter

Share on social media

Konabos Inc.

Yay to Konabosing in style! Content tagged with the Konabos handle is produced by two or more Konabos team members.


Subscribe to newsletter