[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"footer-primary":3,"footer-secondary":93,"footer-description":119,"directus-mcp-server-mcp-for-developers":121,"directus-mcp-server-mcp-for-developers-next":165,"sales-reps":180},{"items":4},[5,29,49,69],{"id":6,"title":7,"url":8,"page":8,"children":9},"522e608a-77b0-4333-820d-d4f44be2ade1","Solutions",null,[10,15,20,25],{"id":11,"title":12,"url":8,"page":13},"fcafe85a-a798-4710-9e7a-776fe413aae5","Headless CMS",{"permalink":14},"/solutions/headless-cms",{"id":16,"title":17,"url":8,"page":18},"79972923-93cf-4777-9e32-5c9b0315fc10","Backend-as-a-Service",{"permalink":19},"/solutions/backend-as-a-service",{"id":21,"title":22,"url":8,"page":23},"0fa8d0c1-7b64-4f6f-939d-d7fdb99fc407","Product Information",{"permalink":24},"/solutions/product-information-management",{"id":26,"title":27,"url":28,"page":8},"63946d54-6052-4780-8ff4-91f5a9931dcc","100+ Things to Build","https://directus.io/blog/100-tools-apps-and-platforms-you-can-build-with-directus",{"id":30,"title":31,"url":8,"page":8,"children":32},"8ab4f9b1-f3e2-44d6-919b-011d91fe072f","Resources",[33,37,41,45],{"id":34,"title":35,"url":36,"page":8},"f951fb84-8777-4b84-9e91-996fe9d25483","Documentation","https://docs.directus.io",{"id":38,"title":39,"url":40,"page":8},"366febc7-a538-4c08-a326-e6204957f1e3","Guides","https://docs.directus.io/guides/",{"id":42,"title":43,"url":44,"page":8},"aeb9128e-1c5f-417f-863c-2449416433cd","Community","https://directus.chat",{"id":46,"title":47,"url":48,"page":8},"da1c2ed8-0a77-49b0-a903-49c56cb07de5","Release Notes","https://github.com/directus/directus/releases",{"id":50,"title":51,"url":8,"page":8,"children":52},"d61fae8c-7502-494a-822f-19ecff3d0256","Support",[53,57,61,65],{"id":54,"title":55,"url":56,"page":8},"8c43c781-7ebd-475f-a931-747e293c0a88","Issue Tracker","https://github.com/directus/directus/issues",{"id":58,"title":59,"url":60,"page":8},"d77bb78e-cf7b-4e01-932a-514414ba49d3","Feature Requests","https://github.com/directus/directus/discussions?discussions_q=is:open+sort:top",{"id":62,"title":63,"url":64,"page":8},"4346be2b-2c53-476e-b53b-becacec626a6","Community Chat","https://discord.com/channels/725371605378924594/741317677397704757",{"id":66,"title":67,"url":68,"page":8},"26c115d2-49f7-4edc-935e-d37d427fb89d","Cloud Dashboard","https://directus.cloud",{"id":70,"title":71,"url":8,"page":8,"children":72},"49141403-4f20-44ac-8453-25ace1265812","Organization",[73,78,84,88],{"id":74,"title":75,"url":76,"page":77},"1f36ea92-8a5e-47c8-914c-9822a8b9538a","About","/about",{"permalink":76},{"id":79,"title":80,"url":81,"page":82},"b84bf525-5471-4b14-a93c-225f6c386005","Careers","#",{"permalink":83},"/careers",{"id":85,"title":86,"url":87,"page":8},"86aabc3a-433d-434b-9efa-ad1d34be0a34","Brand Assets","https://drive.google.com/drive/folders/1lBOTba4RaA5ikqOn8Ewo4RYzD0XcymG9?usp=sharing",{"id":89,"title":90,"url":8,"page":91},"8d2fa1e3-198e-4405-81e1-2ceb858bc237","Contact",{"permalink":92},"/contact",{"items":94},[95,101,107,113],{"id":96,"title":97,"url":8,"page":98,"children":100},"8a1b7bfa-429d-4ffc-a650-2a5fdcf356da","Cloud Policies",{"permalink":99},"/cloud-policies",[],{"id":102,"title":103,"url":81,"page":104,"children":106},"bea848ef-828f-4306-8017-6b00ec5d4a0c","License",{"permalink":105},"/bsl",[],{"id":108,"title":109,"url":81,"page":110,"children":112},"4e914f47-4bee-42b7-b445-3119ee4196ef","Terms",{"permalink":111},"/terms",[],{"id":114,"title":115,"url":81,"page":116,"children":118},"ea69eda6-d317-4981-8421-fcabb1826bfd","Privacy",{"permalink":117},"/privacy",[],{"description":120},"\u003Cp>A composable backend to build your Headless CMS, BaaS, and more.&nbsp;\u003C/p>",{"id":122,"slug":123,"vimeo_id":124,"description":125,"tile":126,"length":127,"resources":8,"people":8,"episode_number":128,"published":129,"title":130,"video_transcript_html":131,"video_transcript_text":132,"content":133,"status":134,"episode_people":135,"recommendations":150,"season":151,"seo":164},"4afe2385-df4a-45f0-9409-75bb149b62be","mcp-for-developers","1130318289","Discover powerful developer workflows using the native Directus MCP Server with Claude Code. This episode demonstrates practical use cases including rapid data modeling, automated flow creation, sample data generation, and script writing to accelerate your development process.","f6b21e46-3a64-4047-a53f-a4bd36090dc7",23,5,"2025-11-20","Directus MCP For Developers","\u003Cp>Speaker 0: Alright. Alright. Welcome, devs. Brian here for Directus. And in this video, we are going to show you some developer workflows when working with the Directus native MCP and your IDE.\u003C/p>\u003Cp>So no matter where you sit on the Vibe coding spectrum, love it, hate it, don't like it, cautiously optimistic. Hopefully, we're gonna get a few workflows out of here that you can try and take away for your own use. Let's dive in. First stop is just gonna be into the AI settings page of Directus to make sure that the MCP is enabled for this instance. We're gonna allow deletes, which is okay.\u003C/p>\u003Cp>In our development instance, you may want to disable that in production. We've got our AI prompts collection, which is helpful for all the marketers in your life. They get reusable prompt templates they can use with things like Claude or other clients that support it, and we can change the system prompt behavior. With that enabled, what we're going to do next is just go in and create a new user here. So I'm gonna name this Claude Code, you're very right to be security concerned when it comes to LLM and prompt injection and all those bad things that we hear about, and that's why we advocate creating separate users for the MCP, so you could tightly scope those permission settings.\u003C/p>\u003Cp>And, in this case, we're gonna give it admin access because I wanna show you guys some of the schema tools. But do not do this in production. Make sure you scope it down either by the access policy or by the role itself, and make sure you give it the least permissions possible for the task. Right? Alright, so we're going to create a static access token here, we're going to save this user, and now I'm just going to pull this up.\u003C/p>\u003Cp>I've got a little snippet somewhere on my clipboard. I'm going to grab that token that we just created. So basically, this is the command for adding cloud code, adding the MCP server to that. I'm just gonna open up another terminal here inside cursor. I've been jamming a lot with cloud code lately, especially as part of developing this MCP.\u003C/p>\u003Cp>So, that's what we'll cover today. Of course, there's other videos on how to connect it to Cursor or other clients. This is just one workflow that we're gonna show you. Alright. So our first workflow that we're gonna cover, right, is conceptual data models.\u003C/p>\u003Cp>Right. Maybe I've got a new project and, you know, a a Directus makes it super easy to data model anything, really. I could go through and visually map out whatever, and then getting the instant APIs on top of that is just icing on the cake. But in this case, I I wanna move faster. Right?\u003C/p>\u003Cp>So let's open up Cloud Code, and let's just talk to it, add a a con a new data model to Directus. Let's create a new data model for a CRM inside my directus instance. Keep it lightweight for now. Just standard CRM stuff. Let's brainstorm together first before you add it though.\u003C/p>\u003Cp>Alright. Cool. So we will take a look at what happens. Hopefully, this should be a signal to the MCP server that it should go in and run a couple tools and just see what we have inside Directus First, but we'll see how Claude Code reacts. Right?\u003C/p>\u003Cp>It is doing some thinking. We can toggle that with command o and see kind of what we what we got. Organizations, contacts, deals, activities, tasks. Okay. Questions.\u003C/p>\u003Cp>Cool. Let me close this out. Let's skip the extra collections. This looks pretty good for now. Activities, let's use m two o fields versus the m two a.\u003C/p>\u003Cp>Deal pipeline stages, we want those to be a separate collection. Should be a separate collection. Nothing industry specific for now. Alright. So, you know, I appreciate the back and forth here.\u003C/p>\u003Cp>You know, hopefully, now that we've stressed got this planned out, let's just hit continue with the plan and see what Claude can do via the MCP. Alright. We can see it doing some thinking. And and, again, like, I could do this via the UI. We're just gonna see how much quicker it is to do it via the MCP.\u003C/p>\u003Cp>It's going to ask us to call the system prompt. Basically, this just gives some more information about the role. Cool. It looks like the next one it is trying to call is the schema tool, which is good. We'll give it full access.\u003C/p>\u003Cp>That way, it can see the existing schema inside our direct assistance. And I guess I could make this full screen. There we go. Zoom in even further. And I could probably even close the terminal down here.\u003C/p>\u003Cp>Alright. So we could see it's trying to run the collections command. Cool. This should create the collection inside Directus for us. And, again, I'm just gonna give it full access to continue.\u003C/p>\u003Cp>You know, again, be very careful when you're using these tools. Make sure you're inspecting all of the payloads first. You know, especially when it's touching the schema, you might want to export the schema. There is an API endpoint for that. Check the docs at Directus to to verify.\u003C/p>\u003Cp>Alright. Now it's gonna go in and create the different relationships for us, and it looks like it's hit an error. Right? Now the MCP inside Directus, there's two validation layers. Like, we first validate, you know, a a light validation against the input schema.\u003C/p>\u003Cp>And then before we actually perform the operation inside Directus, like creating a field or a relationship, goes through a a much more strict validation, which helps catch some of these errors like this. And you could see it successfully created these relationships right now. Alright. So if I do a hard refresh over here, we close this, we should start to see some of these things get populated, like our contacts and our organizations, the pipeline stages. Right?\u003C/p>\u003Cp>We're still probably waiting on the deals, I would assume. Right. But now I can start entering the data for this. Right? Bryant Gillespie.\u003C/p>\u003Cp>Probably shouldn't put my full email address in here. And I could create a new organization, call that direct us. Great. There we go. And we could see that it it has already got all these relationships set up for us as well, which is is super nice.\u003C/p>\u003Cp>Right? We've got deals, we've got contacts, we can see the title of the deal, we've got a slider for the probability of this thing closing, we've got a link to our stage, let's call this new deal, give it a color, title, of course title is required so it's already added some validation for us. New deal, Brian's deal, Brian's new deal, sounds like a presidential thing. Alright. So that is, just one use case for the MCP.\u003C/p>\u003Cp>Right? And you can see this thing is still going to town. It's adding activities, etcetera. In this case, I'm I'm just gonna go ahead and stop this, And let's start a new thread and look at another potential use case for this. Right?\u003C/p>\u003Cp>So one of the other nice pieces of functionality that is in this iteration of the MCP is the ability to create direct as flows. And you're probably asking me, hey. What are direct as flows? Right? They are low code, no code automations that you can build logic in whenever things happen.\u003C/p>\u003Cp>You can make requests. You can send emails. Right? As a developer, how many times have you had to put in code for a simple email notification when a certain event happens? Directus as it flows are your best friend in that scenario.\u003C/p>\u003Cp>We don't have to submit a PR, wait for three days for somebody to review that change, and the email copy, we could just quickly model it inside flows. But a lot of folks in the community expressed interest in being able to create flows with LLMs. So let's do that. Right? Whenever let's plan a new direct us flow.\u003C/p>\u003Cp>Whenever a contact is created, Send a notification in app to the owner of that contact. Let's plan the flow first and then create it. We confirm. Okay. Alright.\u003C/p>\u003Cp>So, basically, we take a a super simple prompt, and I I could be more specific here to get better results. But using the thinking mode inside Cloud Code, the the latest Sonnet model seems to work really well. And this is kind of the the workflow that I've adopted for myself. Let's get a detailed plan. Let's pick up all the information that we need first, and then, then we send, it off on its task.\u003C/p>\u003Cp>Right? So here's the flow plan. We've got a new contact notification. If the owner is null or assigned, let's add a check for no owner. Use a condition to filter that.\u003C/p>\u003Cp>We don't want to send a notification if there's no owner. Alright. For the message text message text, just use the contact details. Execute the plan. Again, LLMs aren't particularly worried by typos, in some context maybe, but it should go through and then it will actually start building the flow for us.\u003C/p>\u003Cp>So there's two components to flows. We have the flow itself and then the operations within the flow, and it should build both of those forming and then actually combine those together, and make sure everything is linked up properly. So we can see this happening here in real time. Directus flow, creating the operation. Not sure how long this will take.\u003C/p>\u003Cp>And it looks like we're done. Right? A more complex flow would probably take a little bit longer for the LLM to map out, but let's just go in. I'm gonna refresh. We're gonna take a look.\u003C/p>\u003Cp>Here's our new flow that it has created. Whenever an item is created in the contacts collection, we're gonna check the payload for the owner, and then we're going to update the user. We'll send them a notification. I do spot one issue here. Right?\u003C/p>\u003Cp>The trigger dot payload dot ID is, not what we're gonna get. It's actually gonna be a trigger dot key. So, you know, this thing is not infallible, but for thirty five seconds to have this flow is pretty good. Could save me a lot of time. Right?\u003C/p>\u003Cp>Scaffolding this out, and then I'll just dial it in. But let's test this out. We're just gonna send a new contact into the database. I'm gonna make sure that I set myself as the user and boom, in the notifications there we could see new contact has been assigned. I could go in and navigate directly to that contact.\u003C/p>\u003Cp>Alright. Let's move on to the next workflow. So one of the other workflows that I find myself using quite a bit is just adding sample data, just small sets of sample data. MCP is a rather expensive protocol, so you you don't wanna use this to seed a database. But, you know, if we're developing a, a front end, like a a website, right, Typically, you might want to have a kitchen sink page.\u003C/p>\u003Cp>You know, if we take a look at our our block based builder, right, it can be very time consuming to scaffold out a full page with all the different options so that when you are building this, right, you can visually see what's happening. Right? MCP makes that super easy. So this is another workflow. Let's go in with let's create a kitchen sink page inside Directus with all the different block combinations so we can better work on the styling and front end components.\u003C/p>\u003Cp>Alright. So that's the prop we're gonna kick things off with. And it's for whatever reason, this thing is still showing what we previously had. But let's see what happens. Right?\u003C/p>\u003Cp>It's gonna run the direct to schema. It will get all the existing collections that we have. And if I wanna just pull this up side by side in my browser, you know, here's kind of what we've got as far as the home page, what that kinda looks like, But let's have it create this kitchen sink page. So we're just gonna go back and okay. So it looks like it has picked up all the different block types.\u003C/p>\u003Cp>We can see that here. Let's use the schema tool to understand what all of those different options are. And now it should go in and start creating this page for us. Right? Has it created the page?\u003C/p>\u003Cp>It looks like it's gonna go through and create the individual blocks first. So if I show my hidden collections inside Directus, we can go through and see probably some of these different things that it's creating for us. Block hero. Right. This is a block hero.\u003C/p>\u003Cp>Looks like it's doing a bunch of those. Just, block hero with the image positioned on the right side of the content. Cool. So it's gonna go through this process. I'll just speed this up for the sake of the video, and then we'll come back.\u003C/p>\u003Cp>And scene. Now we're back. One of the things that I do have toggled when I'm working with Cloud Code, I I use the thinking mode quite a bit. It seems to help the output a lot. But now we've got our kitchen sink page.\u003C/p>\u003Cp>All we have to do is hit refresh. We could see that it's added quite a few different blocks for us here, which is nice. Looks like it missed one of the form blocks. You missed the form block in our kitchen sink page. Alright.\u003C/p>\u003Cp>So while we're doing that, let's just open this up. We can see the live preview here, which is probably not working. Maybe we just set this to publish for now. It'll be a a different issue for a different video. But let's open up this kitchen sink page, local host 3,000 kitchen sink, and see what we got.\u003C/p>\u003Cp>Alright. This doesn't appear to be working. Let me just go back quickly. I'm gonna add a publish date to this. Again, we'll sort out the versioning later.\u003C/p>\u003Cp>Okay. So now I could see I've got our kitchen sink page. We've got a bunch of different hero layouts. And one of the things that I noticed right away is, you know, if we've got more than two or three buttons, this kinda this design fails. Right?\u003C/p>\u003Cp>It it goes off the the reservation, and this is kinda helpful for fixing that. Right? We may go in, let's just shrink this up a bit, and then we look at our button group. Cool. There's our button group.\u003C/p>\u003Cp>We've got our container classes. Let's just add flex wrap here. And now we can see it's super nice to have these kitchen sink kind of components, but one of the great use cases here is just populating the sample data. Right? Is it our CRM?\u003C/p>\u003Cp>We could have it populate a few sample records for us, or we could even have it generate a seed script for us, which puts us back into the next workflow for this. Alright. So one of the other workflows that is super nice with the MCP and your LLM is having it write scripts for you. This could be migrating from one CMS to another, in this case, Directus. That's a pattern that that our team has used locally with tools like Cloud Code or Cursor.\u003C/p>\u003Cp>You know, there's a lot of things that need to be migrated. And MCP is is good at understanding and, you know, the context around the data, especially when you've given it the schema, but having an LLM move all the data one by one by brick by brick, token by token, is super inefficient. So, let's just have it write a script to load up a bunch of blog posts for us. Let's write a node script to use the Falso library is one that I like to generate a bunch of fake contacts and companies inside our directus instance. Alright.\u003C/p>\u003Cp>So now what I'm gonna do, I'm just gonna copy the URL for Falso here or, gonna do that. Cool. And down here in the actual terminal, I'm just gonna go in and go ahead and install this library. Just get a little jump start. Cool.\u003C/p>\u003Cp>Alright. So it looks like it is reading the package JSON. We should see that. It's gonna pick up our different collections. And what else?\u003C/p>\u003Cp>Contacts and organizations is reading the schema for that, which is great. And we'll see if we can get it to output this script for us. Again, I this is a a more efficient way. It's more repeatable. So if you do need, like, highly deterministic output, this is, a one pattern that's worked really well for us.\u003C/p>\u003Cp>Right? It looks like it's also doing a e n v example. Check if the direct Us SDK is installed. Cool. There's the seed data script.\u003C/p>\u003Cp>We're probably gonna need to install the Directus SDK in the root as well. Looks like it's already taken care of that for us. Cool. We'll allow it to make those changes. We'll go ahead and run the installation script, And then we are going to need to do what?\u003C/p>\u003Cp>Then we'll need to do the e and v variables. Right? PM PMI install. Let's see is what it's got for us as far as the seed data. Alright.\u003C/p>\u003Cp>So different industries. We got the number of organizations, three organizations per contact. Okay. So it's actually picking this up from the directus.e n v. So we shouldn't really need to do anything other than just actually run this.\u003C/p>\u003Cp>Right? Nodeseeddata.js. Created orgs is not iterable. Where is that coming from? Again, if you're gonna go straight vibe code on this, make sure that you are doing everything properly.\u003C/p>\u003Cp>Let's fix the script. Yes. Alright. Looks like it is trying to make sure we're we're actually adding authentication, which is a good thing. Created orgs is not an iterable.\u003C/p>\u003Cp>Okay. Just waiting on you, Claude. Just waiting on you. It is not getting the what what are we doing here? Try running it again.\u003C/p>\u003Cp>There we go. Okay. So it said it has exceeded this successfully. We're gonna take a look, and boom. There's our seed data.\u003C/p>\u003Cp>Right? So that was stupid quick, stupid easy to go in and add this data. And this is based on actual utility. Right? There's not a ton of crazy hype here.\u003C/p>\u003Cp>These are actually just useful workflows in your day to day as you're building with Directus. You make sure you look to the community for more workflows. That is it for this video. Stay tuned for more in the MCP series.\u003C/p>","Alright. Alright. Welcome, devs. Brian here for Directus. And in this video, we are going to show you some developer workflows when working with the Directus native MCP and your IDE. So no matter where you sit on the Vibe coding spectrum, love it, hate it, don't like it, cautiously optimistic. Hopefully, we're gonna get a few workflows out of here that you can try and take away for your own use. Let's dive in. First stop is just gonna be into the AI settings page of Directus to make sure that the MCP is enabled for this instance. We're gonna allow deletes, which is okay. In our development instance, you may want to disable that in production. We've got our AI prompts collection, which is helpful for all the marketers in your life. They get reusable prompt templates they can use with things like Claude or other clients that support it, and we can change the system prompt behavior. With that enabled, what we're going to do next is just go in and create a new user here. So I'm gonna name this Claude Code, you're very right to be security concerned when it comes to LLM and prompt injection and all those bad things that we hear about, and that's why we advocate creating separate users for the MCP, so you could tightly scope those permission settings. And, in this case, we're gonna give it admin access because I wanna show you guys some of the schema tools. But do not do this in production. Make sure you scope it down either by the access policy or by the role itself, and make sure you give it the least permissions possible for the task. Right? Alright, so we're going to create a static access token here, we're going to save this user, and now I'm just going to pull this up. I've got a little snippet somewhere on my clipboard. I'm going to grab that token that we just created. So basically, this is the command for adding cloud code, adding the MCP server to that. I'm just gonna open up another terminal here inside cursor. I've been jamming a lot with cloud code lately, especially as part of developing this MCP. So, that's what we'll cover today. Of course, there's other videos on how to connect it to Cursor or other clients. This is just one workflow that we're gonna show you. Alright. So our first workflow that we're gonna cover, right, is conceptual data models. Right. Maybe I've got a new project and, you know, a a Directus makes it super easy to data model anything, really. I could go through and visually map out whatever, and then getting the instant APIs on top of that is just icing on the cake. But in this case, I I wanna move faster. Right? So let's open up Cloud Code, and let's just talk to it, add a a con a new data model to Directus. Let's create a new data model for a CRM inside my directus instance. Keep it lightweight for now. Just standard CRM stuff. Let's brainstorm together first before you add it though. Alright. Cool. So we will take a look at what happens. Hopefully, this should be a signal to the MCP server that it should go in and run a couple tools and just see what we have inside Directus First, but we'll see how Claude Code reacts. Right? It is doing some thinking. We can toggle that with command o and see kind of what we what we got. Organizations, contacts, deals, activities, tasks. Okay. Questions. Cool. Let me close this out. Let's skip the extra collections. This looks pretty good for now. Activities, let's use m two o fields versus the m two a. Deal pipeline stages, we want those to be a separate collection. Should be a separate collection. Nothing industry specific for now. Alright. So, you know, I appreciate the back and forth here. You know, hopefully, now that we've stressed got this planned out, let's just hit continue with the plan and see what Claude can do via the MCP. Alright. We can see it doing some thinking. And and, again, like, I could do this via the UI. We're just gonna see how much quicker it is to do it via the MCP. It's going to ask us to call the system prompt. Basically, this just gives some more information about the role. Cool. It looks like the next one it is trying to call is the schema tool, which is good. We'll give it full access. That way, it can see the existing schema inside our direct assistance. And I guess I could make this full screen. There we go. Zoom in even further. And I could probably even close the terminal down here. Alright. So we could see it's trying to run the collections command. Cool. This should create the collection inside Directus for us. And, again, I'm just gonna give it full access to continue. You know, again, be very careful when you're using these tools. Make sure you're inspecting all of the payloads first. You know, especially when it's touching the schema, you might want to export the schema. There is an API endpoint for that. Check the docs at Directus to to verify. Alright. Now it's gonna go in and create the different relationships for us, and it looks like it's hit an error. Right? Now the MCP inside Directus, there's two validation layers. Like, we first validate, you know, a a light validation against the input schema. And then before we actually perform the operation inside Directus, like creating a field or a relationship, goes through a a much more strict validation, which helps catch some of these errors like this. And you could see it successfully created these relationships right now. Alright. So if I do a hard refresh over here, we close this, we should start to see some of these things get populated, like our contacts and our organizations, the pipeline stages. Right? We're still probably waiting on the deals, I would assume. Right. But now I can start entering the data for this. Right? Bryant Gillespie. Probably shouldn't put my full email address in here. And I could create a new organization, call that direct us. Great. There we go. And we could see that it it has already got all these relationships set up for us as well, which is is super nice. Right? We've got deals, we've got contacts, we can see the title of the deal, we've got a slider for the probability of this thing closing, we've got a link to our stage, let's call this new deal, give it a color, title, of course title is required so it's already added some validation for us. New deal, Brian's deal, Brian's new deal, sounds like a presidential thing. Alright. So that is, just one use case for the MCP. Right? And you can see this thing is still going to town. It's adding activities, etcetera. In this case, I'm I'm just gonna go ahead and stop this, And let's start a new thread and look at another potential use case for this. Right? So one of the other nice pieces of functionality that is in this iteration of the MCP is the ability to create direct as flows. And you're probably asking me, hey. What are direct as flows? Right? They are low code, no code automations that you can build logic in whenever things happen. You can make requests. You can send emails. Right? As a developer, how many times have you had to put in code for a simple email notification when a certain event happens? Directus as it flows are your best friend in that scenario. We don't have to submit a PR, wait for three days for somebody to review that change, and the email copy, we could just quickly model it inside flows. But a lot of folks in the community expressed interest in being able to create flows with LLMs. So let's do that. Right? Whenever let's plan a new direct us flow. Whenever a contact is created, Send a notification in app to the owner of that contact. Let's plan the flow first and then create it. We confirm. Okay. Alright. So, basically, we take a a super simple prompt, and I I could be more specific here to get better results. But using the thinking mode inside Cloud Code, the the latest Sonnet model seems to work really well. And this is kind of the the workflow that I've adopted for myself. Let's get a detailed plan. Let's pick up all the information that we need first, and then, then we send, it off on its task. Right? So here's the flow plan. We've got a new contact notification. If the owner is null or assigned, let's add a check for no owner. Use a condition to filter that. We don't want to send a notification if there's no owner. Alright. For the message text message text, just use the contact details. Execute the plan. Again, LLMs aren't particularly worried by typos, in some context maybe, but it should go through and then it will actually start building the flow for us. So there's two components to flows. We have the flow itself and then the operations within the flow, and it should build both of those forming and then actually combine those together, and make sure everything is linked up properly. So we can see this happening here in real time. Directus flow, creating the operation. Not sure how long this will take. And it looks like we're done. Right? A more complex flow would probably take a little bit longer for the LLM to map out, but let's just go in. I'm gonna refresh. We're gonna take a look. Here's our new flow that it has created. Whenever an item is created in the contacts collection, we're gonna check the payload for the owner, and then we're going to update the user. We'll send them a notification. I do spot one issue here. Right? The trigger dot payload dot ID is, not what we're gonna get. It's actually gonna be a trigger dot key. So, you know, this thing is not infallible, but for thirty five seconds to have this flow is pretty good. Could save me a lot of time. Right? Scaffolding this out, and then I'll just dial it in. But let's test this out. We're just gonna send a new contact into the database. I'm gonna make sure that I set myself as the user and boom, in the notifications there we could see new contact has been assigned. I could go in and navigate directly to that contact. Alright. Let's move on to the next workflow. So one of the other workflows that I find myself using quite a bit is just adding sample data, just small sets of sample data. MCP is a rather expensive protocol, so you you don't wanna use this to seed a database. But, you know, if we're developing a, a front end, like a a website, right, Typically, you might want to have a kitchen sink page. You know, if we take a look at our our block based builder, right, it can be very time consuming to scaffold out a full page with all the different options so that when you are building this, right, you can visually see what's happening. Right? MCP makes that super easy. So this is another workflow. Let's go in with let's create a kitchen sink page inside Directus with all the different block combinations so we can better work on the styling and front end components. Alright. So that's the prop we're gonna kick things off with. And it's for whatever reason, this thing is still showing what we previously had. But let's see what happens. Right? It's gonna run the direct to schema. It will get all the existing collections that we have. And if I wanna just pull this up side by side in my browser, you know, here's kind of what we've got as far as the home page, what that kinda looks like, But let's have it create this kitchen sink page. So we're just gonna go back and okay. So it looks like it has picked up all the different block types. We can see that here. Let's use the schema tool to understand what all of those different options are. And now it should go in and start creating this page for us. Right? Has it created the page? It looks like it's gonna go through and create the individual blocks first. So if I show my hidden collections inside Directus, we can go through and see probably some of these different things that it's creating for us. Block hero. Right. This is a block hero. Looks like it's doing a bunch of those. Just, block hero with the image positioned on the right side of the content. Cool. So it's gonna go through this process. I'll just speed this up for the sake of the video, and then we'll come back. And scene. Now we're back. One of the things that I do have toggled when I'm working with Cloud Code, I I use the thinking mode quite a bit. It seems to help the output a lot. But now we've got our kitchen sink page. All we have to do is hit refresh. We could see that it's added quite a few different blocks for us here, which is nice. Looks like it missed one of the form blocks. You missed the form block in our kitchen sink page. Alright. So while we're doing that, let's just open this up. We can see the live preview here, which is probably not working. Maybe we just set this to publish for now. It'll be a a different issue for a different video. But let's open up this kitchen sink page, local host 3,000 kitchen sink, and see what we got. Alright. This doesn't appear to be working. Let me just go back quickly. I'm gonna add a publish date to this. Again, we'll sort out the versioning later. Okay. So now I could see I've got our kitchen sink page. We've got a bunch of different hero layouts. And one of the things that I noticed right away is, you know, if we've got more than two or three buttons, this kinda this design fails. Right? It it goes off the the reservation, and this is kinda helpful for fixing that. Right? We may go in, let's just shrink this up a bit, and then we look at our button group. Cool. There's our button group. We've got our container classes. Let's just add flex wrap here. And now we can see it's super nice to have these kitchen sink kind of components, but one of the great use cases here is just populating the sample data. Right? Is it our CRM? We could have it populate a few sample records for us, or we could even have it generate a seed script for us, which puts us back into the next workflow for this. Alright. So one of the other workflows that is super nice with the MCP and your LLM is having it write scripts for you. This could be migrating from one CMS to another, in this case, Directus. That's a pattern that that our team has used locally with tools like Cloud Code or Cursor. You know, there's a lot of things that need to be migrated. And MCP is is good at understanding and, you know, the context around the data, especially when you've given it the schema, but having an LLM move all the data one by one by brick by brick, token by token, is super inefficient. So, let's just have it write a script to load up a bunch of blog posts for us. Let's write a node script to use the Falso library is one that I like to generate a bunch of fake contacts and companies inside our directus instance. Alright. So now what I'm gonna do, I'm just gonna copy the URL for Falso here or, gonna do that. Cool. And down here in the actual terminal, I'm just gonna go in and go ahead and install this library. Just get a little jump start. Cool. Alright. So it looks like it is reading the package JSON. We should see that. It's gonna pick up our different collections. And what else? Contacts and organizations is reading the schema for that, which is great. And we'll see if we can get it to output this script for us. Again, I this is a a more efficient way. It's more repeatable. So if you do need, like, highly deterministic output, this is, a one pattern that's worked really well for us. Right? It looks like it's also doing a e n v example. Check if the direct Us SDK is installed. Cool. There's the seed data script. We're probably gonna need to install the Directus SDK in the root as well. Looks like it's already taken care of that for us. Cool. We'll allow it to make those changes. We'll go ahead and run the installation script, And then we are going to need to do what? Then we'll need to do the e and v variables. Right? PM PMI install. Let's see is what it's got for us as far as the seed data. Alright. So different industries. We got the number of organizations, three organizations per contact. Okay. So it's actually picking this up from the directus.e n v. So we shouldn't really need to do anything other than just actually run this. Right? Nodeseeddata.js. Created orgs is not iterable. Where is that coming from? Again, if you're gonna go straight vibe code on this, make sure that you are doing everything properly. Let's fix the script. Yes. Alright. Looks like it is trying to make sure we're we're actually adding authentication, which is a good thing. Created orgs is not an iterable. Okay. Just waiting on you, Claude. Just waiting on you. It is not getting the what what are we doing here? Try running it again. There we go. Okay. So it said it has exceeded this successfully. We're gonna take a look, and boom. There's our seed data. Right? So that was stupid quick, stupid easy to go in and add this data. And this is based on actual utility. Right? There's not a ton of crazy hype here. These are actually just useful workflows in your day to day as you're building with Directus. You make sure you look to the community for more workflows. That is it for this video. Stay tuned for more in the MCP series.","\u003Cp>In this episode, we explore real-world developer workflows using the native Directus MCP Server with Claude Code. You'll learn how to:\u003C/p>\n\u003Cul>\n\u003Cli>Set up secure MCP access with dedicated users and scoped permissions\u003C/li>\n\u003Cli>Create complete data models through conversation (demo: building a CRM)\u003C/li>\n\u003Cli>Generate Directus Flows for automated notifications and workflows\u003C/li>\n\u003Cli>Build kitchen sink pages with sample content for front-end development\u003C/li>\n\u003Cli>Write custom seed scripts using the Falso library for realistic test data\u003C/li>\n\u003Cli>Debug and iterate on LLM-generated code in real-time\u003C/li>\n\u003C/ul>\n\u003Cp>Watch as we demonstrate multiple development scenarios from initial setup through execution. We cover conceptual data modeling for a lightweight CRM, creating automated notification flows, generating comprehensive test pages with all block combinations, and writing efficient seed scripts for bulk data creation. This episode showcases practical patterns for integrating AI into your daily development workflow, whether you love vibe coding or prefer more traditional approaches. Perfect for developers looking to accelerate your Directus projects with AI assistance.\u003C/p>","published",[136],{"people_id":137},{"id":138,"first_name":139,"last_name":140,"avatar":141,"bio":142,"links":143},"791e1503-1d88-463d-9347-0b9192933576","Bryant","Gillespie","9013afc8-e8d7-4182-9b18-44db08117bb9","Developer Advocate at Directus",[144,147],{"url":145,"service":146},"https://directus.io/team/bryant-gillespie","website",{"service":148,"url":149},"github","https://github.com/bryantgillespie",[],{"id":152,"number":153,"year":154,"episodes":155,"show":161},"9781e3ca-7d76-4ebc-8c35-511681cd9394",2,"Native MCP",[156,157,158,159,122,160],"23e7f108-2cb4-4ab2-95b3-62429ce0b697","32408843-f937-47d4-bbcb-65fad031548b","5506f9ca-3a72-4447-8b50-ce4c821e3d1d","1e3cca6c-b7f7-4f79-b0c8-428e58624785","86f0031b-9bf0-44cb-aa66-b3bd03fa89b0",{"title":162,"tile":163},"Directus MCP Server","573a0fb2-4e86-4d87-a7ab-d4f06283b79a",{"title":8,"meta_description":8},{"id":160,"slug":166,"season":152,"vimeo_id":167,"description":168,"tile":169,"length":170,"resources":8,"people":8,"episode_number":171,"published":129,"title":172,"video_transcript_html":173,"video_transcript_text":174,"content":175,"seo":176,"status":134,"episode_people":177,"recommendations":179},"mcp-for-marketers","1130344643","Explore powerful content workflows for marketers using the native Directus MCP Server with ChatGPT and Claude. This episode demonstrates real-world marketing use cases including importing formatted content from Google Docs, creating landing pages with AI, automating translations, and generating images.","bfcdd8a5-e5dd-48c0-8105-fc8de6f2ed33",16,6,"Directus MCP for Marketers","\u003Cp>Speaker 0: Alright. Alright. Alright. Welcome, marketing folks. This is the video for you.\u003C/p>\n\u003Cp>I'm Brian from Directus. In this video, we're gonna cover content workflows with the Directus native MCP and ChatGPT and Claude. So this is gonna be exciting. We're gonna step through a couple different content workflows that you're dealing with on your day to day basis and give you a couple ideas for how you can improve that. Right?\u003C/p>\n\u003Cp>First one on the list, developers versus content teams. No. We've got content that we have inside a Google Doc. This has been written by a guest author. It has specific formatting, And anytime you've tried to copy and paste this inside your CMS, you know what a challenge it is.\u003C/p>\n\u003Cp>Alright. So let's tackle it. Right? We're going to go inside our CMS, and I'm just gonna first create a new user for our AI. This is just best practice as far as security goes.\u003C/p>\n\u003Cp>We don't need to do anything else other than scroll down. We're gonna give them a team member role and we're gonna generate what we call a static access token. That's really all we need to do here. We're gonna hit save, and now we've got our AI user. Make sure that you, copy paste that token somewhere because we're gonna reuse it in a moment.\u003C/p>\n\u003Cp>For this, let's go to ChatGPT. We're gonna go to our apps and connectors, and make sure you go to the advanced settings. Now you're gonna have to be a plus member of ChatGPT or better. Make sure you enable developer mode and we're just gonna create a new connector. Sounds scary, it is not.\u003C/p>\n\u003Cp>We're just gonna call this Directus CMS and what we're gonna do here, we're gonna copy our Directus base URL, I'm gonna paste it here, I'm gonna do a big slash, m c p, question mark, access, underscore, token, and then we're going to take that, static access token that we generated and just stick it at the end of that URL. Now we get a big scary warning here. The nice part about the Directus MCP is we have guardrails in place, so anything that you can't do via that user's permissions, the LLM is not allowed to either, and that's an important part of the Directus MCP. So we hit create. This should create our custom connector and connect to the direct assistance and sometimes that takes a little longer in chat g p t.\u003C/p>\n\u003Cp>Cool. Alright. So now we can see that. We've got access. It is connected.\u003C/p>\n\u003Cp>We can see all the different tools. Cool. Alright. So next up on the list, right, we've got our blog post here and we want to get it here. Cool.\u003C/p>\n\u003Cp>But, now, one of the things that guest writers often forget is we have a lot of extra fields like SEO, meta titles, and descriptions. We've got content. But again, if I copy paste this, it's not gonna work great. So we're just gonna add this from Google Drive, find our article, here it is, Devs versus Marketers, and we'll say please add this to our Directus blog posts collection with all the proper fields for our schema. Cool.\u003C/p>\n\u003Cp>Alright. With that, we'll hit go. And what this should do is call the Directus MCP and start working through this document. Alright. So it's reading the different documents.\u003C/p>\n\u003Cp>We could see the train of thought over here. Just my own personal experience with chat GPT version five is, it's a little bit slower. We can, you know, crank that up if we want to, but this should call the direct to schema, and then it will hopefully, pick up our post structure as well so it knows what fields that we need to send. It's doing a bit of thinking here, and we could turn that down if we want to. But there we go.\u003C/p>\n\u003Cp>We could see it's picking up the post schema from the direct instance. And after that, it should start formatting this into, an article for our post. Alright? Need to create a post using the uploaded docx file. I'll extract the title.\u003C/p>\n\u003Cp>There's a slug. Set the publish state to in review as null. Perhaps add an AI generated summary. Okay. So now we can see here that it is going to call a tool to create this post force.\u003C/p>\n\u003Cp>Let's take a look at the results. So if we hit refresh, it doesn't look like it's quite done yet. What do we get here? Are we done? Successfully created the item.\u003C/p>\n\u003Cp>All I have to do is hit refresh over here, and now we can see our article. Right? It's populated the title, populated the slug. We've got all of our formatting and AI generated summary. And if I open up the code here, there is no crazy formatting.\u003C/p>\n\u003Cp>These are just standard HTML tags, instead of the Google Docs nightmare. Right? So that's all done. Amazing. Right?\u003C/p>\n\u003Cp>Now let's take a look at how to go further with this. Right? Alright. So now let's switch over to Claude and just show that workflow as well of how to connect if you're using that. I find that Claude's sonnet is usually a better writer than, ChatGPT in in my own experience.\u003C/p>\n\u003Cp>Now they they got a little better with GPT five, but SONNET remains, great at writing. So we're gonna go into the settings. We're gonna hit add custom connector. It's a very similar setup. We'll just call it direct to CMS.\u003C/p>\n\u003Cp>We're going to copy and paste our URL, again, slash m c p question mark access underscore token, and then we're gonna paste that token that we generated, which I believe is this one, I think. And then we'll hit add. That should connect, and we'll know it's connected here because then we can click configure. Now with Claude, we've got some stuff that we don't have in ChatGPT, and that's why I wanted to show this to you as well. You've got the ability to load prompts from Directus.\u003C/p>\n\u003Cp>So inside your Directus instance, if you're using our CMS starter, you already have this baked in or, you know, it you could create this collection really easily. You can use these templated prompts essentially to build powerful workflows. You know, this one is a dad joke. We've got a system prompt here, etcetera. But, you know, we've got samples in here like humanize the content or create a landing page, which is what we're going to do now.\u003C/p>\n\u003Cp>Right? So I wanna create a landing page for the Directus MCP. We'll get super meta here. And what I'm gonna do is click add and hit landing page, and here is a series of prompts. Right?\u003C/p>\n\u003Cp>So the Directus MCP server is the product we're promoting. We want, we want folks to try it with Claude and chat GPT. Reduces busy work. This is gonna be marketers as our audience and, clicking around a bunch and wasting three hours of your life to create a blog post. Cool.\u003C/p>\n\u003Cp>Is this too technical? Maybe. Alright. So we're gonna add our prompt here. Failed to get the prompt.\u003C/p>\n\u003Cp>Why did you fail to get the prompt? Test. There we go. Okay. Sometimes that happens.\u003C/p>\n\u003Cp>Alright. Create a landing page for the Directus MCP. Cool. So what should happen next? Right?\u003C/p>\n\u003Cp>This should call a series of the Directus MCP tools. First is gonna get the system prompt, and I could choose to allow once or always allow. The system prompt is pretty harmless. It just basically has some instructions for the LLM. Then it's going to fetch our direct to schema so it knows how the landing pages look, and it's going to fetch the available blocks.\u003C/p>\n\u003Cp>So as a marketer, you don't want to hit up the development team every time you wanna launch a page. Directus CMS is beautiful in that regard because you can build pages, really detailed pages from, just dynamic blocks here. So you could see I've got a hero. I've got rich text. We've got some blog posts.\u003C/p>\n\u003Cp>We've got pricing plans. And then we have our form. Right? So each one of these blocks has its own setup, different style of fields. Here's all our different images, etcetera.\u003C/p>\n\u003Cp>But it can be time consuming to scaffold out some of those pages. Now you could duplicate pages or, we can, in this case, have our LLM friends create some of this content for us. So now you can see it's actually going through and building out the landing page for us. So we've got a block hero. Here's the copy for that.\u003C/p>\n\u003Cp>It is creating the buttons for the hero. Now it's updating the hero with the button group. Now it's gonna create the problem solution section. And, you know, if we take a look at the prompt that we had here, basically, I'm telling it that, hey. You're Harry Drey, the world class copywriter.\u003C/p>\n\u003Cp>You are amazing at generating landing pages that actually convert. You examine the direct to schema to see what blocks are available. So basically, all this is just templated prompt so that you know, you're gonna get predictable or somewhat predictable results out of this thing if you use it over and over again. And you can create those prompts here inside Directus. Whatever works for you, save them, share them with your team.\u003C/p>\n\u003Cp>It's definitely a very nice workflow. So it's going through and creating all the different sections for us, and then once it's done, it should come back and put them all together. Now I'm going to just fast forward for your sake through this process, and then we'll come back. And we're back. Okay.\u003C/p>\n\u003Cp>So it has completed this landing page for us. I'm a little scared to open it. Obviously, these things are never scripted here, but we could see our landing page that it created for us. If I want to take a look at the live preview there, great. Stop clicking around for three hours, start creating content in minutes.\u003C/p>\n\u003Cp>And and as far as the design of this starter page here, it's a starter. We keep it relatively simple. So there's nothing crazy going on as far as the design, but we've got a ton of copy here that we could then potentially go in and easily update inside Directus, either, you know, through the visual editor or, you know, right inside the form. We've got a lot of different options there. But now let's take a look at one of the other use cases that I wanna cover in this video.\u003C/p>\n\u003Cp>Alright. So let's go back to our blog post that we created through ChatGPT, this developers versus content teams. I'm gonna start a new chat over in Claude's sonnet, and we're just gonna have it actually run some translations for us. If you're based in Europe or even in The US, content needs to be localized into each language, which can be a challenge. Now Directus has a great interface for this where I could see my different translations side by side and compare those, but the act of actually translating the copy takes a while.\u003C/p>\n\u003Cp>Newsflash, LLMs are incredibly good at translations because of all the the data they've been trained on. So let's put that to use. Right? We have this article inside our directus CMS, I'd like you to generate all the translations for that post in all the different languages we support in the languages collection. Alright.\u003C/p>\n\u003Cp>So let's just see if the LLM could get this right. You know, I intentionally misled it a bit because the collection inside Directus is called post. Right? It is not called articles, so, you know, this is my attempt to confuse it a bit and see what results we get. Right?\u003C/p>\n\u003Cp>So it's gonna call the system prompt. Amazing. That's our expected behavior. It should then fetch the schema, and that's going to return a list of all the collections. We could see those there.\u003C/p>\n\u003Cp>And then it's going to be fetching the posts and the languages collection. Alright. So now I could see the post has a translations field. Let me find the specific article. Okay.\u003C/p>\n\u003Cp>So it looks like it's located the article. It's gonna actually check our translation schema to see what fields that we need. And now it is going to check on the actual relationship. Direct us relations. Okay.\u003C/p>\n\u003Cp>I think this is because I've activated the skills, which is a relatively new cloud feature inside my accounts. Don't have access to do this. Okay. So here, we have hit a snag. Right?\u003C/p>\n\u003Cp>Let's just pause. This looks like it's a permissions issue because this post translation is a relatively new thing. Look. LLMs are not perfect. This is not a rehearsed demo, so sometimes you're gonna run into interesting bits.\u003C/p>\n\u003Cp>Right? So let's go in and for a team member inside here, we'll just add some access to create, read, update post translations. That should solve that issue. And now I'm just gonna start a new chat. You know, one thing that I've found, sometimes it's better just to start a new chat when things get squirrelly instead of trying to actually, course correct.\u003C/p>\n\u003Cp>These LLMs, they pick up steam. It's kinda like gravity, a ball going downhill. Alright. So we're gonna go through the same progression here. It should check on the schema.\u003C/p>\n\u003Cp>It's gonna find the languages. Now it's actually picking up on the post translations. We'll get all the available languages. Cool. See you have eight languages.\u003C/p>\n\u003Cp>Let me check if there are any existing translations. So it's going through this in a a smart manner. Now it's going to generate all the translations for the non English languages. Excellent. Alright.\u003C/p>\n\u003Cp>So it it understands the schema. It knows what each of our translations, look like behind the scenes, and it should do all of this work for me. Looking nice. Is it going to make all of these in a single call? Let's kinda monitor what it's going to do.\u003C/p>\n\u003Cp>Great. K. We could see it's still translating this. So, again, in order to save you guys some time, I'll just hit fast forward. The last time was about sixty seconds.\u003C/p>\n\u003Cp>We'll see how long it takes here. Alright. And we're back. So Claude has told us it's successfully created all the different translations for our article. So let's just pop back in here.\u003C/p>\n\u003Cp>We'll go to the translations tab, and let's do this side by side. So we could see the Arabic translation, if we wanna look at French versus the Italian. I am terrible at both of these languages, so I couldn't tell you if these are accurate or not. But I can tell you that it is amazing not to have to do all of this work manually myself. So we could see those side by side.\u003C/p>\n\u003Cp>You could close that out if you want to. Just drop that there. We could filter through these and see which translations are actually completed versus not. It has done all those fields for us, which is great. And that is it for translating content.\u003C/p>\n\u003Cp>Right? I wanna show you just one more thing before we go. Directus has built in automations. These things are called flows. Flows are just simple or complex low code, no code automations that, the MCP can create for you or your developers can create to enable you.\u003C/p>\n\u003Cp>Think sending email notifications or pulling data from other systems into Directus. Now you can call these flows, at least the manual once, through the MCP, but also you can run those through the Directus UI. So the last piece of the puzzle, right, we're missing a beautiful image for this. Let's just pop open our flow. We've got a generate image flow and, create a kind of developers versus, generate an image of a developer fighting a marketer inside a boxing ring, ultra realistic, four k, high def, whatever.\u003C/p>\n\u003Cp>Right? If I could actually spell high def. Alright. So we'll do this in, what, sixteen nine, run this flow. We'll get a notification that this is and image generation has kicked off.\u003C/p>\n\u003Cp>And in just a moment, there we go, we see our image to use. Looking great. And then we could just go back in and quickly add this to our blog post. We'll look for all files. There we go.\u003C/p>\n\u003Cp>Let's set a publish date on this. We'll make that for today. We've got, the author, the webmaster, and then we can see this image in its full glory. Well, the image is not loading, but, why is that? It's probably because it needs to be moved to the public folder to be visible.\u003C/p>\n\u003Cp>Again, no perfect demos, but this is, you know, this is a great workflow, I believe. Alright. So there we go. We can see our blog post. I can go in.\u003C/p>\n\u003Cp>And if I do need to change something here, we've got the visual editor inside Directus. Maybe I want to tweak this and use that em dash that everyone is avoiding. Cool. So that is it for this video and content editing workflows in Directus. I hope you, mister marketer, missus marketer, miss marketer, will find a ton of value in the Directus MCP.\u003C/p>\n\u003Cp>Stay tuned for more videos in this series.\u003C/p>","Alright. Alright. Alright. Welcome, marketing folks. This is the video for you. I'm Brian from Directus. In this video, we're gonna cover content workflows with the Directus native MCP and ChatGPT and Claude. So this is gonna be exciting. We're gonna step through a couple different content workflows that you're dealing with on your day to day basis and give you a couple ideas for how you can improve that. Right? First one on the list, developers versus content teams. No. We've got content that we have inside a Google Doc. This has been written by a guest author. It has specific formatting, And anytime you've tried to copy and paste this inside your CMS, you know what a challenge it is. Alright. So let's tackle it. Right? We're going to go inside our CMS, and I'm just gonna first create a new user for our AI. This is just best practice as far as security goes. We don't need to do anything else other than scroll down. We're gonna give them a team member role and we're gonna generate what we call a static access token. That's really all we need to do here. We're gonna hit save, and now we've got our AI user. Make sure that you, copy paste that token somewhere because we're gonna reuse it in a moment. For this, let's go to ChatGPT. We're gonna go to our apps and connectors, and make sure you go to the advanced settings. Now you're gonna have to be a plus member of ChatGPT or better. Make sure you enable developer mode and we're just gonna create a new connector. Sounds scary, it is not. We're just gonna call this Directus CMS and what we're gonna do here, we're gonna copy our Directus base URL, I'm gonna paste it here, I'm gonna do a big slash, m c p, question mark, access, underscore, token, and then we're going to take that, static access token that we generated and just stick it at the end of that URL. Now we get a big scary warning here. The nice part about the Directus MCP is we have guardrails in place, so anything that you can't do via that user's permissions, the LLM is not allowed to either, and that's an important part of the Directus MCP. So we hit create. This should create our custom connector and connect to the direct assistance and sometimes that takes a little longer in chat g p t. Cool. Alright. So now we can see that. We've got access. It is connected. We can see all the different tools. Cool. Alright. So next up on the list, right, we've got our blog post here and we want to get it here. Cool. But, now, one of the things that guest writers often forget is we have a lot of extra fields like SEO, meta titles, and descriptions. We've got content. But again, if I copy paste this, it's not gonna work great. So we're just gonna add this from Google Drive, find our article, here it is, Devs versus Marketers, and we'll say please add this to our Directus blog posts collection with all the proper fields for our schema. Cool. Alright. With that, we'll hit go. And what this should do is call the Directus MCP and start working through this document. Alright. So it's reading the different documents. We could see the train of thought over here. Just my own personal experience with chat GPT version five is, it's a little bit slower. We can, you know, crank that up if we want to, but this should call the direct to schema, and then it will hopefully, pick up our post structure as well so it knows what fields that we need to send. It's doing a bit of thinking here, and we could turn that down if we want to. But there we go. We could see it's picking up the post schema from the direct instance. And after that, it should start formatting this into, an article for our post. Alright? Need to create a post using the uploaded docx file. I'll extract the title. There's a slug. Set the publish state to in review as null. Perhaps add an AI generated summary. Okay. So now we can see here that it is going to call a tool to create this post force. Let's take a look at the results. So if we hit refresh, it doesn't look like it's quite done yet. What do we get here? Are we done? Successfully created the item. All I have to do is hit refresh over here, and now we can see our article. Right? It's populated the title, populated the slug. We've got all of our formatting and AI generated summary. And if I open up the code here, there is no crazy formatting. These are just standard HTML tags, instead of the Google Docs nightmare. Right? So that's all done. Amazing. Right? Now let's take a look at how to go further with this. Right? Alright. So now let's switch over to Claude and just show that workflow as well of how to connect if you're using that. I find that Claude's sonnet is usually a better writer than, ChatGPT in in my own experience. Now they they got a little better with GPT five, but SONNET remains, great at writing. So we're gonna go into the settings. We're gonna hit add custom connector. It's a very similar setup. We'll just call it direct to CMS. We're going to copy and paste our URL, again, slash m c p question mark access underscore token, and then we're gonna paste that token that we generated, which I believe is this one, I think. And then we'll hit add. That should connect, and we'll know it's connected here because then we can click configure. Now with Claude, we've got some stuff that we don't have in ChatGPT, and that's why I wanted to show this to you as well. You've got the ability to load prompts from Directus. So inside your Directus instance, if you're using our CMS starter, you already have this baked in or, you know, it you could create this collection really easily. You can use these templated prompts essentially to build powerful workflows. You know, this one is a dad joke. We've got a system prompt here, etcetera. But, you know, we've got samples in here like humanize the content or create a landing page, which is what we're going to do now. Right? So I wanna create a landing page for the Directus MCP. We'll get super meta here. And what I'm gonna do is click add and hit landing page, and here is a series of prompts. Right? So the Directus MCP server is the product we're promoting. We want, we want folks to try it with Claude and chat GPT. Reduces busy work. This is gonna be marketers as our audience and, clicking around a bunch and wasting three hours of your life to create a blog post. Cool. Is this too technical? Maybe. Alright. So we're gonna add our prompt here. Failed to get the prompt. Why did you fail to get the prompt? Test. There we go. Okay. Sometimes that happens. Alright. Create a landing page for the Directus MCP. Cool. So what should happen next? Right? This should call a series of the Directus MCP tools. First is gonna get the system prompt, and I could choose to allow once or always allow. The system prompt is pretty harmless. It just basically has some instructions for the LLM. Then it's going to fetch our direct to schema so it knows how the landing pages look, and it's going to fetch the available blocks. So as a marketer, you don't want to hit up the development team every time you wanna launch a page. Directus CMS is beautiful in that regard because you can build pages, really detailed pages from, just dynamic blocks here. So you could see I've got a hero. I've got rich text. We've got some blog posts. We've got pricing plans. And then we have our form. Right? So each one of these blocks has its own setup, different style of fields. Here's all our different images, etcetera. But it can be time consuming to scaffold out some of those pages. Now you could duplicate pages or, we can, in this case, have our LLM friends create some of this content for us. So now you can see it's actually going through and building out the landing page for us. So we've got a block hero. Here's the copy for that. It is creating the buttons for the hero. Now it's updating the hero with the button group. Now it's gonna create the problem solution section. And, you know, if we take a look at the prompt that we had here, basically, I'm telling it that, hey. You're Harry Drey, the world class copywriter. You are amazing at generating landing pages that actually convert. You examine the direct to schema to see what blocks are available. So basically, all this is just templated prompt so that you know, you're gonna get predictable or somewhat predictable results out of this thing if you use it over and over again. And you can create those prompts here inside Directus. Whatever works for you, save them, share them with your team. It's definitely a very nice workflow. So it's going through and creating all the different sections for us, and then once it's done, it should come back and put them all together. Now I'm going to just fast forward for your sake through this process, and then we'll come back. And we're back. Okay. So it has completed this landing page for us. I'm a little scared to open it. Obviously, these things are never scripted here, but we could see our landing page that it created for us. If I want to take a look at the live preview there, great. Stop clicking around for three hours, start creating content in minutes. And and as far as the design of this starter page here, it's a starter. We keep it relatively simple. So there's nothing crazy going on as far as the design, but we've got a ton of copy here that we could then potentially go in and easily update inside Directus, either, you know, through the visual editor or, you know, right inside the form. We've got a lot of different options there. But now let's take a look at one of the other use cases that I wanna cover in this video. Alright. So let's go back to our blog post that we created through ChatGPT, this developers versus content teams. I'm gonna start a new chat over in Claude's sonnet, and we're just gonna have it actually run some translations for us. If you're based in Europe or even in The US, content needs to be localized into each language, which can be a challenge. Now Directus has a great interface for this where I could see my different translations side by side and compare those, but the act of actually translating the copy takes a while. Newsflash, LLMs are incredibly good at translations because of all the the data they've been trained on. So let's put that to use. Right? We have this article inside our directus CMS, I'd like you to generate all the translations for that post in all the different languages we support in the languages collection. Alright. So let's just see if the LLM could get this right. You know, I intentionally misled it a bit because the collection inside Directus is called post. Right? It is not called articles, so, you know, this is my attempt to confuse it a bit and see what results we get. Right? So it's gonna call the system prompt. Amazing. That's our expected behavior. It should then fetch the schema, and that's going to return a list of all the collections. We could see those there. And then it's going to be fetching the posts and the languages collection. Alright. So now I could see the post has a translations field. Let me find the specific article. Okay. So it looks like it's located the article. It's gonna actually check our translation schema to see what fields that we need. And now it is going to check on the actual relationship. Direct us relations. Okay. I think this is because I've activated the skills, which is a relatively new cloud feature inside my accounts. Don't have access to do this. Okay. So here, we have hit a snag. Right? Let's just pause. This looks like it's a permissions issue because this post translation is a relatively new thing. Look. LLMs are not perfect. This is not a rehearsed demo, so sometimes you're gonna run into interesting bits. Right? So let's go in and for a team member inside here, we'll just add some access to create, read, update post translations. That should solve that issue. And now I'm just gonna start a new chat. You know, one thing that I've found, sometimes it's better just to start a new chat when things get squirrelly instead of trying to actually, course correct. These LLMs, they pick up steam. It's kinda like gravity, a ball going downhill. Alright. So we're gonna go through the same progression here. It should check on the schema. It's gonna find the languages. Now it's actually picking up on the post translations. We'll get all the available languages. Cool. See you have eight languages. Let me check if there are any existing translations. So it's going through this in a a smart manner. Now it's going to generate all the translations for the non English languages. Excellent. Alright. So it it understands the schema. It knows what each of our translations, look like behind the scenes, and it should do all of this work for me. Looking nice. Is it going to make all of these in a single call? Let's kinda monitor what it's going to do. Great. K. We could see it's still translating this. So, again, in order to save you guys some time, I'll just hit fast forward. The last time was about sixty seconds. We'll see how long it takes here. Alright. And we're back. So Claude has told us it's successfully created all the different translations for our article. So let's just pop back in here. We'll go to the translations tab, and let's do this side by side. So we could see the Arabic translation, if we wanna look at French versus the Italian. I am terrible at both of these languages, so I couldn't tell you if these are accurate or not. But I can tell you that it is amazing not to have to do all of this work manually myself. So we could see those side by side. You could close that out if you want to. Just drop that there. We could filter through these and see which translations are actually completed versus not. It has done all those fields for us, which is great. And that is it for translating content. Right? I wanna show you just one more thing before we go. Directus has built in automations. These things are called flows. Flows are just simple or complex low code, no code automations that, the MCP can create for you or your developers can create to enable you. Think sending email notifications or pulling data from other systems into Directus. Now you can call these flows, at least the manual once, through the MCP, but also you can run those through the Directus UI. So the last piece of the puzzle, right, we're missing a beautiful image for this. Let's just pop open our flow. We've got a generate image flow and, create a kind of developers versus, generate an image of a developer fighting a marketer inside a boxing ring, ultra realistic, four k, high def, whatever. Right? If I could actually spell high def. Alright. So we'll do this in, what, sixteen nine, run this flow. We'll get a notification that this is and image generation has kicked off. And in just a moment, there we go, we see our image to use. Looking great. And then we could just go back in and quickly add this to our blog post. We'll look for all files. There we go. Let's set a publish date on this. We'll make that for today. We've got, the author, the webmaster, and then we can see this image in its full glory. Well, the image is not loading, but, why is that? It's probably because it needs to be moved to the public folder to be visible. Again, no perfect demos, but this is, you know, this is a great workflow, I believe. Alright. So there we go. We can see our blog post. I can go in. And if I do need to change something here, we've got the visual editor inside Directus. Maybe I want to tweak this and use that em dash that everyone is avoiding. Cool. So that is it for this video and content editing workflows in Directus. I hope you, mister marketer, missus marketer, miss marketer, will find a ton of value in the Directus MCP. Stay tuned for more videos in this series.","\u003Cp>In this episode, we walk through essential content workflows for marketers using the native Directus MCP Server with ChatGPT and Claude. You'll learn how to:\u003C/p>\n\u003Cul>\n\u003Cli>Set up secure MCP connections for both ChatGPT and Claude Desktop\u003C/li>\n\u003Cli>Import guest articles from Google Docs with proper formatting and SEO fields\u003C/li>\n\u003Cli>Use custom prompts from Directus for repeatable workflows\u003C/li>\n\u003Cli>Create complete landing pages with dynamic blocks through conversation\u003C/li>\n\u003Cli>Generate multilingual translations automatically across all supported languages\u003C/li>\n\u003Cli>Trigger Directus Flows for image generation and other automations\u003C/li>\n\u003Cli>Work with the visual editor to refine AI-generated content\u003C/li>\n\u003C/ul>\n\u003Cp>Watch as we demonstrate real marketing scenarios from start to finish. We cover importing a guest blog post from Google Docs and automatically populating all metadata fields, creating a full landing page for the Directus MCP using templated prompts, translating an entire article into eight languages, and generating hero images using automated Directus Flows. This episode showcases practical patterns for content teams to reduce busy work and focus on strategy and creativity. Perfect for marketers and content creators who want to streamline their content operations without constantly relying on developers.\u003C/p>","8b7b0c05-87fc-4d6f-a4a5-dc7eb4bf716c",[178],"81920482-b404-4edf-9214-8cd967972137",[],{"reps":181},[182,238],{"name":183,"sdr":8,"link":184,"countries":185,"states":187},"John Daniels","https://meet.directus.io/meetings/john2144/john-contact-form-meeting",[186],"United States",[188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237],"Michigan","Indiana","Ohio","West Virginia","Kentucky","Virginia","Tennessee","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","New York","MI","IN","OH","WV","KY","VA","TN","NC","SC","GA","FL","AL","MS","NY","Connecticut","CT","Delaware","DE","Maine","ME","Maryland","MD","Massachusetts","MA","New Hampshire","NH","New Jersey","NJ","Pennsylvania","PA","Rhode Island","RI","Vermont","VT","Washington DC","DC",{"name":239,"link":240,"countries":241},"Michelle Riber","https://meetings.hubspot.com/mriber",[242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,219,430,431],"Albania","ALB","Algeria","DZA","Andorra","AND","Angola","AGO","Austria","AUT","Belgium","BEL","Benin","BEN","Bosnia and Herzegovina","BIH","Botswana","BWA","Bulgaria","BGR","Burkina Faso","BFA","Burundi","BDI","Cameroon","CMR","Cape Verde","CPV","Central African Republic","CAF","Chad","TCD","Comoros","COM","Côte d'Ivoire","CIV","Croatia","HRV","Czech Republic","CZE","Democratic Republic of Congo","COD","Denmark","DNK","Djibouti","DJI","Egypt","EGY","Equatorial Guinea","GNQ","Eritrea","ERI","Estonia","EST","Eswatini","SWZ","Ethiopia","ETH","Finland","FIN","France","FRA","Gabon","GAB","Gambia","GMB","Ghana","GHA","Greece","GRC","Guinea","GIN","Guinea-Bissau","GNB","Hungary","HUN","Iceland","ISL","Ireland","IRL","Italy","ITA","Kenya","KEN","Latvia","LVA","Lesotho","LSO","Liberia","LBR","Libya","LBY","Liechtenstein","LIE","Lithuania","LTU","Luxembourg","LUX","Madagascar","MDG","Malawi","MWI","Mali","MLI","Malta","MLT","Mauritania","MRT","Mauritius","MUS","Moldova","MDA","Monaco","MCO","Montenegro","MNE","Morocco","MAR","Mozambique","MOZ","Namibia","NAM","Niger","NER","Nigeria","NGA","North Macedonia","MKD","Norway","NOR","Poland","POL","Portugal","PRT","Republic of Congo","COG","Romania","ROU","Rwanda","RWA","San Marino","SMR","São Tomé and Príncipe","STP","Senegal","SEN","Serbia","SRB","Seychelles","SYC","Sierra Leone","SLE","Slovakia","SVK","Slovenia","SVN","Somalia","SOM","South Africa","ZAF","South Sudan","SSD","Spain","ESP","Sudan","SDN","Sweden","SWE","Tanzania","TZA","Togo","TGO","Tunisia","TUN","Uganda","UGA","United Kingdom","GBR","Vatican City","VAT","Zambia","ZMB","Zimbabwe","ZWE","UK","Germany","Netherlands","Switzerland","CH","NL",1773850442704]