MCP in PHP // PHPverse 2025 ![rw-book-cover](https://i.ytimg.com/vi/T22_rXew72M/maxresdefault.jpg) ## Metadata - Author: [[PHP Annotated]] - Full Title: MCP in PHP // PHPverse 2025 - Category: #articles - Document Note: --- tags: - #MCP - #PHP - #AI Author: Marcel Pot Source: YouTube - PHPverse 2025 Conference Reference: https://www.youtube.com/watch?v=T22_rXew72M date created: 2025-06-20 21:00 --- # Title: MCP Servers in PHP โ€” Tools, Implementation, and Ecosystem Advancement ## Table of Contents:ย  - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main Content](#-main-content) - [๐Ÿ—’๏ธ Notes](#-notes) - [โฐ [00:05 Introduction & Context](https://www.youtube.com/watch?v=T22_rXew72M&t=5s)](#-0005-introduction--context) - [โฐ [02:24 MCP & Beyond Code Tools](https://www.youtube.com/watch?v=T22_rXew72M&t=144s)](#-0224-mcp--beyond-code-tools) - [โฐ [07:46 MCP Clients, Resources & Protocols](https://www.youtube.com/watch?v=T22_rXew72M&t=466s)](#-0746-mcp-clients-resources--protocols) - [โฐ [10:35 Transport Methods for MCP](https://www.youtube.com/watch?v=T22_rXew72M&t=635s)](#-1035-transport-methods-for-mcp) - [โฐ [16:04 MCP Server Setup & Tool Discovery](https://www.youtube.com/watch?v=T22_rXew72M&t=964s)](#-1604-mcp-server-setup--tool-discovery) - [โฐ [18:29 Tool Usage & Parameter Support](https://www.youtube.com/watch?v=T22_rXew72M&t=1109s)](#-1829-tool-usage--parameter-support) - [โฐ [23:05 MCP Server PHP Usage & Features](https://www.youtube.com/watch?v=T22_rXew72M&t=1385s)](#-2305-mcp-server-php-usage--features) - [โฐ [25:10 Automation & Dynamic Tools](https://www.youtube.com/watch?v=T22_rXew72M&t=1510s)](#-2510-automation--dynamic-tools) - [โฐ [29:18 Tooling Challenges & Documentation](https://www.youtube.com/watch?v=T22_rXew72M&t=1758s)](#-2918-tooling-challenges--documentation) - [โฐ [31:16 Security & Trust Considerations](https://www.youtube.com/watch?v=T22_rXew72M&t=1876s)](#-3116-security--trust-considerations) - [๐Ÿ“– References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action Items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future Research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning Styles Assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility Assessment](#-accessibility-assessment) - [๐ŸŒ DEIB Assessment](#-deib-assessment) - [โœ… Logical validity](#-logical-validity) - [๐Ÿ” DARVO Analysis](#-darvo-analysis) - [๐Ÿ” SEO Evaluation](#-seo-evaluation) - [๐ŸŽฏ Conclusion](#-conclusion) ## ๐Ÿ“ Summary: Marcel Pot presents a comprehensive introduction to MCP (Model Context Protocol) servers in PHP, highlighting their role in enhancing AI integration, particularly for large language models. He explains the MCP architecture, protocol, and how PHP developers can build and use MCP servers to add contextual tools and resources that facilitate AI-assisted workflows. The talk covers practical implementation, transport protocols, security considerations, and the evolving ecosystem within PHP tooling. ## ๐Ÿ“– Main Content: MCP servers act as intermediaries providing contextual data and tools to AI models, enabling complex tasks that require access to external resources, like WordPress backends or Excel sheets. Marcel demonstrates how MCP clients such as PHPStorm and VS Code can interact with these servers over various protocols (JSON RPC, WebSockets) and transports. He shows examples of tool registration using PHP attributes and doc blocks, resource handling, and security controls through user approval of tool usage. He also discusses the current ecosystem challenges, the need for unified tooling, and stresses community collaboration. The talk closes with insights into the future potential of MCP servers to streamline developer workflows and integrate APIs through PHP. ### ๐Ÿ—’๏ธ Notes #### โฐ [00:05 Introduction & Context](https://www.youtube.com/watch?v=T22_rXew72M&t=5s) - Marcel Pot unable to attend in person due to illness but provides recorded talk. - Emphasis on PHP's role in AI ecosystem development. - PHP tools like Tinkerwell and Expose support PHP developers. - MCP acronym explained: Model, Context, Protocol. #### โฐ [02:24 MCP & Beyond Code Tools](https://www.youtube.com/watch?v=T22_rXew72M&t=144s) - Overview of Beyond Codeโ€™s PHP tools: Tinkerwell (PHP REPL GUI), Expose (tunneling solution). - MCP servers augment AI models by providing needed context (e.g., WordPress backend data). - Use cases beyond text generation include image, video, and audio models. #### โฐ [07:46 MCP Clients, Resources & Protocols](https://www.youtube.com/watch?v=T22_rXew72M&t=466s) - MCP clients (PHPStorm, VS Code, Cloud Desktop) use tools and resources to interact with external systems. - Tools represent callable functions or API endpoints. - Resources represent static data (e.g., Excel files, WordPress settings). - Communication follows JSON RPC protocol for message exchange. #### โฐ [10:35 Transport Methods for MCP](https://www.youtube.com/watch?v=T22_rXew72M&t=635s) - Local transport via standard input/output (stdin/stdout) for quick communication. - Server-sent events and WebSockets support hosting MCP servers over internet or LAN. - WebSocket reduces server load compared to server-sent events. #### โฐ [16:04 MCP Server Setup & Tool Discovery](https://www.youtube.com/watch?v=T22_rXew72M&t=964s) - PHP MCP server package allows easy server setup with tool discovery via scanning classes and doc blocks. - Tools defined as public methods with MCP attributes for metadata exposure to clients. - Example: tool fetching download counts for Herd. #### โฐ [18:29 Tool Usage & Parameter Support](https://www.youtube.com/watch?v=T22_rXew72M&t=1109s) - Users approve tool usage to maintain security. - Tools can accept parameters (e.g., platform string to specify OS). - MCP clients show parameter metadata to assist user interaction and debugging. #### โฐ [23:05 MCP Server PHP Usage & Features](https://www.youtube.com/watch?v=T22_rXew72M&t=1385s) - Resources exposed with URI and MIME types provide additional context. - Clients may require manual resource registration until auto-discovery improves. - Practical example querying WordPress site settings. #### โฐ [25:10 Automation & Dynamic Tools](https://www.youtube.com/watch?v=T22_rXew72M&t=1510s) - MCP servers can automate backend tasks (e.g., refunding orders) directly from IDEs. - Tools can be added dynamically at runtime, enabling context-aware tooling per project. - Potential for MCP servers to become standard API access method. #### โฐ [29:18 Tooling Challenges & Documentation](https://www.youtube.com/watch?v=T22_rXew72M&t=1758s) - Multiple competing MCP packages cause fragmentation; need for unified PHP MCP package. - Documentation gaps hinder new adopters; community collaboration needed to improve. #### โฐ [31:16 Security & Trust Considerations](https://www.youtube.com/watch?v=T22_rXew72M&t=1876s) - MCP servers require trust in authors since tools can access sensitive code and data. - Approval steps in IDEs help mitigate risks but vigilance is necessary. - Comparing MCP server risks to typical PHP package usage and third-party code trust. ## ๐Ÿ“– References: - MCP PHP GitHub repository: https://github.com/php-mcp/php-mcp-server - Beyond Code tools: https://beyondco.de - PHPverse 2025 MCP Talk Video: https://www.youtube.com/watch?v=T22_rXew72M ## ๐Ÿ—ฃ๏ธ Paraphrase:ย  1. Original: "MCP stands for model context protocol. So M stands for model... it can be any kind of model, video, image, audio, but mostly used with text generation large language models like GPT." Paraphrased: MCP means Model Context Protocol, where 'Model' refers to any AI model type, including video, image, or audio generation, with the most common application today being text generation via large language models such as GPT. 2. Original: "If we have a prompt that looks like this... it would need to connect to WordPress backend, read Excel sheets, and compare results. MCP servers provide this context to the AI model by sitting between the LLM and the implementation." Paraphrased: For a prompt requesting, for example, to check WordPress posts against Excel data, an AI model alone can't perform this. MCP servers serve as intermediaries supplying the necessary context by li - Summary: We hear about MCP servers every day โ€“ but what exactly is an MCP server, and how do they work? Join us and letโ€™s build an MCP server in PHP! PHPverse is an online event to celebrate and bring together the PHP community, organized by JetBrains: https://lp.jetbrains.com/phpverse-2025/ Watch all the PHPverse 2025 talks here: https://www.youtube.com/playlist?list=PL0bgkxUS9EaI6rjDdRvihJn90OztDsxTO #php #code #oss - URL: https://www.youtube.com/watch?v=T22_rXew72M Yeah, the next talk is uh a little bit something different, right? It's uh it's a talk by Marcel Pot. Um but I have to say up front he he couldn't make it in person um today because he he has been sick for a whole week actually uh and he didn't like feel good enough to travel. Uh if all is well, he will be here um via call after the talk. Huh? um to answer some Q&A as well, but uh but he actually sent a recording of of his talk. He's talking about MCP, which honestly I don't know much about. So, I'm really curious. Uh yeah, looking forward to hearing more from uh him on Yeah. what that is uh on how to actually build something with PHP in that space. And I think it's one thing for people to um yeah talk about try all these different tools um but I find it exciting to see people in our PHP ecosystem really uh kind of moving this forward and making sure that PHP is a part of that conversation that um it's clear to PHP developers what are the tools that we're supposed to use in our ecosystem to replicate to some of the results I've seen elsewhere and to then build on those and explore further and you know actually improve and advance uh that AI space um using PHP. Um so I'm really looking forward to Marcel's talk. Exactly. Now before we switch to Marcel here, I'm just I'm looking at our our screen there and I just noticed that one elephant over there that's a little bit different than than the others and I'm so looking forward to to that's the wrong side like thereish. Uh but we're keeping it in the background for now. I think uh that's that's for later uh today. But for now, we're going to switch to Marcel who's going to talk about MCP and he's going to do a little bit of introduction as well. So enjoy and uh again you can leave your questions in Discord as well. If Marcel isn't able to make it in the call then uh he can scroll through it afterwards. So we hope that your question will be answered. Anyway, here's Marcel. Hey, uh, welcome to my talk about MCP servers with PHP. What they are, how we can use them, how we can build them. My name is Marcel Pio. I'm uh the CTO at Beyond Code where we create software tools for PHP developers, people like ourselves, people like you. If you want to follow me on social media, feel free to do that on all kind of socials using that handle. And at Beyond Code, we create tools such as Tinkerwell, which is a pretty much a guey for a PHP ripple. So it allows you to quickly evaluate code either in your own local projects in like a dummy Laravel project or you can even connect to remote projects via SSH or using Docker and Kubernetes. Then we have built expose which is an open-source tunneling solution. So it's kind of like um Angro. So it allows you to share your local URLs via a remote site that it gives you a publicly accessible URL that you can then use to test web hooks and stuff like that. Um, what's really cool about this is, as I said, it's entirely open source and it's built entirely in PHP using React PHP, both the server and the client. So, feel free to check that out on GitHub. There's a lot of cool stuff in the code there. And last but not least, we are maintaining and developing Laravel Herd, which is um the easiest way to get started with PHP on your Mac or Windows machine if you want to set up a full new development environment with a lot of useful tools that help you debug and test things faster. All right, so we're here to talk about MCP. Now before we go and check out any code and look at how we can actually build servers, we first have to define what MCP means so that we then have a good understanding of well what are MCP servers in the first place? What do they do? What purpose do they have? So MCP stands for model context protocol. So let's first go through each of these abbreviations so that we see what the um they actually mean. So M stands for model. This means that the MCP like this protocol can be used in combination with an AI model. Um it can be any kind of model. So it could be a video generation model, an image generation model, audio model, but it's most widely used as of right now with text generation models like large language models such as um GPT40 or the cloud ones or well any kind of LLM. That's where they are most useful. The C is pretty much the most important part. It's for context. So LLMs and the prompts that we give to them require context and depending on the tasks that we ask an LLM, they're simply not capable of doing them on their own. So if we have a prompt that looks like this, check out my WordPress back end and ensure that all posts from my Excel sheet are online. Now, if we only provide this to an LLM, it will not be able to come up with what we want it to do because it would need to connect to a WordPress back end. It would need to somehow read an Excel sheet, then compare the results, and then get back with the results for us. And that's kind of where MCP servers come into play. So if we have a prompt like this, we pass it to the large language model. It would need to access the WordPress back end and the Axel sheets and the MCP servers provide context to the AI model. So they kind of sit in between the LLM and the actual implementation like the actual Axel sheet or WordPress back end or whatever. um and they well basically act as something that gives more context to the large language model. There are a couple of available context types the that are defined in the MCP specification. The most important one being tools and resources and depending on which MCP client you use. So this would be for example the PHPstorm IDE or cloud desktop. Not all of these context types are being available at the same or even in the first place. So as the standard is pretty new this changes over time. So first one would be tools which basically allows the uh developer implementing the MCP server to provide any kind of tool. So you can just basically build the implementation that should be called um as this context type. So this can be an API call fetching something from the file system things like that. Then we have resources which well are just that they are just static resources. So for example, um our Excel sheet would be a resource that we can then add to our prompts or to our responses and requests in the MCB clients. Then we have prompts and sampling. Those are not really used as of right now, but they are defined um in the MCP protocol. We are going to focus on tools and resources for now. And this is basically the flow how it looks like if you interact with an MCP client. So as I said MCP client would be PHP storm for example or cursor VS code clouds desktop anything like that. And when you add a prompt in there it's going to see which MCP servers are available. Use the tools and resources that are available. These tools and resources themselves handle the logic on their own. So for example, they access a WordPress back end or read an Excel sheet from the file system. Then they get get the information back, give it back to the MCP client and then this will be passed to the LLM where the AI model can then do with those results whatever they need to do to provide response to whatever was the query or the input. There are a couple of MCP clients out there. Um, and if if you're somehow a bit aware of the whole AI space, you might see that new ones pop up every now and then. So, as I said, these are idees or uh like desktop tools. So, anything that can interact with these MCP servers. And last but not least, we have the P, which stands for protocol. So this is basically just the definition of how the MCP server and the MCP client communicate with each other. Um in this case it's an JSON RPC protocol. So this means that there's a defined protocol and JSON format in which the client sends messages to the server and the server then sends me messages back to the client. And there are a couple of transports available. Transport basically means that well these are ways that you can start your MCP server. So um if you want to start a local MCP server, the default one would be the standard input standard output transport. This means that when the um the MCP client, your IDE sends information to the server, it's just going to write it um into the standard input of a program. And then if your uh MCP server wants to send back information to the client, it's going to write it to the standard output. So for example, like an echo call in PHP. And this works fine for local for local MCP servers, but there are also transports available that allow you to host MCP servers um over the internet or over local network, which is really cool. So this one would be server sent events. So then instead of calling um just a single program on your computer, you would just access the MCP server via a URL. Um, and then when the client connects, it's going to open uh one connection and then via server send events, the messages get passed back and forth. And last but not least, um there's websocket support as well. I haven't really seen websocket transport being used that much yet, but it's defined in the specification, so it's definitely possible. And it somehow reduces the load on the server compared to uh server send events. So might be useful if you want to build something that you want to make publicly available. All right. So now we know what an MCP what MCP stands for. How clients and servers interact with each other. How can we actually use them? Um again this is all pretty new. So there's no real definition out there that all clients um use in the same way. Right now most of the configuration happens in JSON format. So if you want to add an MCP server to cloud desktop for example you would need to add it to this JSON object configuration. But um I saw that in the latest update from VS Code they also added the ability that VS Code plugins allow you to um basically ship um an MCP server which is really interesting. Okay. So then you can basically define the command in the example of the WordPress server it would be npx. Then you provide arguments and then can you can provide environment variables to further configure the MCP server. All right. Now once that's added you can see the MCP server and all of the registered and available tools. For example here in clot desktop. So we can get access to the uh get post method. We can add posts and things like that. And um well just to show you basically an example here I have added this to to cursor uh to cloud desktop write and publish a blog post to my local WordPress installation. So it found the add post tool. Then I have to basically approve the tool usage. We can see the parameters that are passed to this tool. And now the well the MCP server automatically published and posted a blog post for us about PHP's 30th birthday. And well there it is. So this was all just by connecting the WordPress MCP server with cloud desktop and then just this oneshot prompt which I think is pretty cool. And like that you can just add more functionality into tools like cloud desktop or other IDEs. All right. So much about the theory of MCP servers, but we're celebrating PHP's 30th birthday. So let's see how we can actually build an MCP server on our own. So there are a couple packages out there that um that do this for us. I'm using the PHP MCP server package because I think this one solves it really nicely. So you just composer require this in your application. So for example, let's say that you want to add some MCP server functionality to your own application. So you want to expose more functionality, more tools to MCP clients. So you just require that package and then I just added a class um right now it's called fetch downloads and what it does or the idea here is basically it retrieves the number of uh herd downloads and then gives it back. So I could ask um the MCP client how many downloads Herd has. So this is just a class and a public function count. And as you can see this count function makes use of the MCP tool attribute. And within this attribute we provide a name called fetch download. So this is just the well kind of internal name of the tool the one that the MCP client sees. And now what's really cool about the PHP MCP server package is that the information in the doc block is also being parsed and made available to the MCP client. So here the MCP client would see there is a tool called fetch downloads. The description of tool would be retrieve the number of herd downloads and it knows that this tool returns an integer with the number of downloads. And then inside of the method, we can just do our own implementation, our own logic on how we want to return and handle our tool. Okay, so like that you just define tools. It's just public methods and classes. And then to actually start the MCP server, as I said, the standard in standard out transport is basically just um just a program that reads from standard in writes to standard out. So you can just copy paste basically this file from the MCP server repository. What we do here is we create a new server instance, give it some server information and then the MCP server package has something called discovery. So we can just give it a directory and then the server is going to scan the directory for tools and resources. So everything that has the um the appropriate attributes attached to it will be made available. And then last but not least, we define the transport and then listen for standard input, standard output. And now whenever you run this single PHP file, your MCP server is running as well. So in order to use this within for example cloud desktop what we need to do is similar to the WordPress example we need to add it to this JSON file inside of the MCP servers object. We define the command which would be PHP and then as the argument it would be the MCP server PHP file the one that I just showed you earlier. All right and that's it. And now when I um ask something like what's the download code count for herd claub knows that there is a tool available so it doesn't need to I don't know search the internet or something like that. So I get this prompt that claude would like to use an external integration. You have to approve it which is a good thing. Um if it would just happen automatically that's not really that good. So you have to approve it and then we get the result from whatever the the tool returns. What's really nice as well is that you can also provide parameters into your methods. So let's say that we don't just want to return the counts but we want to return the counts for a given platform like Windows, Linux or Mac. So by just adding this at param dock block we ident we just basically notify the uh MCP client that this tool accepts a parameter which is a string and then the description of it will also be passed to the LLM so that the MCP client knows what to pass to it and well then we we just use the argument as we normally do in PHP. Now if we perform the request again in cloud desktop and I say something like what's the download code of count of herd uh on Mac OS if I click on the approval screen on the tool I can see what kind of parameters the MCP client would actually send over to my um to my MCP server which makes it easier to debug to find out which parameters are actually being sent. So in this case the platform would be set to Mac OS. All right. So this is how you define tools. Now what about resources? So as I said for example like an Axel file or something like that. Resources kind of work the same way. So you just add the MCP resource attribute to a public function. And resources need a URI and a mime type. So your URI is basically the identifier of this single resource. It needs to be in this URI format. So this could be file, it could be I don't know content, database, anything. Um so in this case we just have the latest YAML file which has a mime type that we define as well which just again aims to add more context to the MCP client so that it knows what kind of content it gets back and what to do with it. And then inside of our method we just return the content of that single file. And well as I said um the different MCP clients handle this differently. So in uh claw desktop for example it it does not automatically discover which resource it needs for a specific task. So you have to explicitly add it. So here we can see that we have the PHP MCP server and the WordPress MCP server available. I can click on add from PHPMCP and then I get all of the available resources and then can just click on them to add them manually. But again, this is probably going to change so that uh sooner or later these MCP clients will just detect which resource can be used or should be used for the given prompt. And just as another example, um this one was using the uh WP settings from the WordPress MCP server. I can just ask what are my WordPress site settings? It reads as this this resource and then gives me information about whatever is stored in this resource. And well, that's how you would then build your own MCP server. So it allows you to register custom tools. It allows you to register uh custom resources and then you just add it to your MCP client and then you can start using it. And this is really powerful because it allows you to well add context to your MCP client that otherwise would not be available in the first place. So you can use this to access stuff from your own back end. So if you're using Laravel, you could use like a filament backend MCP server to read data from the back end or perform certain actions that are usually just available for the administrator if they click around in the UI. And um yeah, this is all that I have. I hope this gave you a good understanding and introduction of the MCP server, the protocol itself. If you want to check out the MCP package that I used, you can find more on that on the GitHub repository for PHP MCP. And thank you very much. Hey, hey, Marcel, how are you? Hey, I'm I'm not sounding as much as Kermit the Frog. While I'm saying that, I I still kind of do. Hey, Kermit. So, if there's one thing I learned, it's that camping at a metal festival when you're 40 years old doesn't get easier. Um, so it was a metal festival. So, we got a question about that. Adrian here asked, "Did Marcel attend Nova Rock or is he sick?" But you were also sick, right? Well, yeah. I guess it happened both. I was at Rockham Ring uh camping there and I guess I got sick there. Yeah, Marcel, we're all getting uh a little little older basically. That's uh Yeah, and we need to adjust just like PHP. Well, but we should say like PHP is getting better the older it's it it gets. I feel like we are just like you're not getting better. I' I'm going the downward slope unfortunately. Uh Marcel, thank you for for still like recording your talk yesterday um and making that effort. really appreciate it and it's an interesting topic right MCP it is yeah and I mean the whole AI space is moving so fast um but like as you said before the talk I think it's really important to to see that PHP is involved and um well also to just like explore the space and see what we can do with this I'd love to follow up on that actually like I mean you showed us these examples with WordPress are there like any other fun experiments you've done like any anything you practically use this for on a regular basis already or kind of like where are you on like making this a part of workflows that you have? Yeah. Um so the MCP servers that I use um for example just googling stuff uh or browser automation itself is really cool. Um, and then just more internal tools. So just exposing functionality that I only have access to in my back end basically like I don't know have an MCP server tool that allows you to refund orders for example then I can just do that in my IDE and let the tool handle this for me. Um, but I'm also exploring this with um with Herd because I think this is just a powerful combination of having like a PHP development environment and then combine it with um well kind of exposing tools of your local sites. Um like there's one cool thing that I I didn't mention in my talk. Um the MCP server can also dynamically add tools. So you have like these predefined tools but you can also define and add tools at runtime and then notify the client hey there are new tools available uh which I think is really powerful. So as you are working with different projects then kind of the IDE can detect that new tools are available depending on which project you're on and things like that. So, do you do you see this like, you know, thinking ahead a little bit, is this just a standard thing that anything that has an API today will also have an MCP server or like do you see this as a slightly different kind of approach to accessing some kind of software system? Well, I think it will eventually lead to something like that where every kind of API will lead to an MCP server. I'm not really sure if that's going to replace an API. Um but so for example, I saw um Paddle using this in one of their demos and it was kind of a marketing demo, but it was still pretty cool that they basically had an MCP server for their pedal API and then in the IDE you could basically spin up the whole payment flow and let the MCP server create like products on the pedal back end and change pricing and things like that. So um I think it just streamlines the whole development if you can do a lot of things just in your IDE and let your IDE communicate with APIs for you. I think that's really cool. But I guess it also depends on what APIs there is. Yeah. Yeah. I think I mean I think on one side the fact that a lot of things have APIs today and then like having AI on the other side and like it really seems exciting to be able to kind of finally connect them together, right? like um kind of seeing a way where you don't have to rebuild everything to kind of work with AI, but that maybe there's kind of like a a middle ground where we can just connect these systems together, right? And that's kind of what MCP turns out to be. It's really interesting. Yeah. Also for reporting, like you don't have to manually dig through JSON array structures to figure out some reporting because the AI can just do that. It's like it's it's a whole other way of interacting with with code in a in a much more human friendly way or or at least that that's what it felt to me like for example you gave that example with where you pass in the platform uh to the function right and someone in chat here asked as well like can can I ask cloud desktop uh in the example which platforms are available based on the dog blocks for example but I think you you mentioned that that is in fact the case that it reads like all the metadata as well. Yeah, the MCP client gets information about the available tools which is the description the parameter the parameter description itself. So you could ask questions about the tool. Yeah. But I think maybe let's I mean leading back to PHP a bit more um like in your experience building some of these things um like how have you found the tooling so far? Like has it been like I mean do you you show us PHP MCP the GitHub work and that seem to be working fine like where was that a lot of effort involved and things kind of not as like well documented yet or were they incomplete parts are there things that you know we need to focus on and make it to make it easier for more people to start working with us. I mean, as usual with any kind of open source project, documentation is something that people can just jump in and help improve. But, um, I felt like the whole thing is so new that there are like a lot of competing packages out there. Um, like the other day someone on X said that there should be like a PHP leak package to unify these things, which I think would be a great idea. Um, so I think it still comes down to figuring out which package will win so to say. Um, and more of a coordinated effort is what you're saying. Yeah. Right. Yeah. And on the other hand with all these different MCP clients um it's still like there are so many things that only claw desktop supports and only these like this specific part of the protocol is only supported in cursor like there are so many things and they change all the time um that it's kind of hard to keep up with which which part of it should we focus on but I think that's like an important thing to keep in mind with us like there are so many news stories right now, but like this new thing, like this AI thing here, this AI thing there, this is all really early and new. And while yes, there are some people that are advancing that field, it's, you know, like if they do something with some other programming language, that doesn't mean that somehow PHP is too late or something like it's early days. I think like if you know enough people in the PHP space get together and work on this kind of tooling like there's a very real probability of PHP being one of the choices that you work on these types of systems with and I think especially on something like MCP servers that were specifically now with the remote capabilities made to interact with classic web applications and not just some other kinds of systems as initially. Yep. I think I mean if we want to add uh if we want to add like logic to MCP servers that lives in our PHP applications we should write the servers in PHP itself. I had one more question Marcel uh from from Discord here because this was in the back of my mind as well like is there a risk in using MCP servers for project uh company project repositories like source code must be protected and make sure it will not be used by any other AIS right are are there any certainties here well it's kind of like you have to know which kind of servers you're and kind of trust the author, I would say, because once you approve the tool, like this approval screen that you had, the tool can just do whatever it wants with whatever the LLM gives it. Like uh if if there are some uh tools that require as a parameter private information, the LLM might just give it to you without you knowing it. So you would need to at least trust the author, check the MCP server code a bit to and like click uh as as long as the IDE allows that click on the actual um tool calls to see what actually is being sent to this third party because even though it runs on your local device, it is a third party that kind of accesses your code. I mean in lots of ways it's the same way as if you're installing some PHP package, right? You kind of want to make sure that before you execute that code, you at least trust the authors or whoever you got this from. And I think this is no different than that, right? Yeah. Hey, Marcel, there are a couple more questions in the chat. I don't know if you uh if you were able to follow the previous talks, but I'm inviting all speakers to go into Discord and read through their thread uh because we don't have the time to like discuss all the all the questions here on stream. Um, it would also be a bit better for your voice maybe to uh to be able to write instead of talk. But uh there were also a lot of people wishing you uh like to get better soon. So um yeah, I wish you that as well and I really appreciate it that you were able to make it here and um thank you for having me. Yeah. Yeah. Thanks for the talk. Thanks for the insights. Really Yeah, it's it's challenging, right? It's it's it's a new new I think it's exciting mostly and I look forward to seeing a lot more and kind of like the the real use cases that people come up with like that this ends up being super useful for. Really really looking forward to that. All right, Marcel, with all that being said, thanks for joining and get well soon. See you next time., MCP in PHP // PHPverse 2025, PHP Annotated, 01jy80c5bq9sjf7gkhpyb31er5.