LM Studio is a free macOS app that can load free open-source AI models from a number of sources. It’s the way to get AI hooked up to Elements without (1) having to wait while credits refill; or (2) having to pay for it.
Instructions
I just had to go through this again on a new machine, so I thought I’d provide a quick instruction set:
1. Verify your LM Studio Version
Ensure you are running a recent version of LM Studio (v0.3.x or newer), as MCP support was added in these versions.
2. Add the Elements MCP Server
Open LM Studio and go to the Chat view (the robot icon on the top left).
Open the right side navigation panel where you’ll see two icons at the top (hammer and slider bars). Click the hammer, which opens the Integrations panel.
Turn the mcp/local-mcp option on by clicking it’s switch at the left.
3. Select a Model that Supports Tool Use
This is the most important step. Even if you connect the server correctly, the chat will only work if the LLM you have loaded actually knows how to use tools (function calling).
Recommended Models: Look for models with “Instruct” or “Coder” in the name that explicitly mention Tool Use or Function Calling (e.g., Qwen2.5-7B-Instruct, Llama 3.1 8B, or Mistral-Small) [This was advice from Gemma, not mine]
Important Model size is important, particularly on memory constrained machines. You can use bigger models (I’m using Gemma 12B), but you should probably only have Elements and LM Studio running on your Mac. You don’t want to trigger the macOS’s RAM Doubler compression/virtual system if possible.
4. How to Direct Elements to do something
You do not need to type special code. Because the MCP server “tells” the LLM what tools are available, you simply talk to the AI naturally.
Example Prompts:
“Ask Elements to create a new project named ‘Alpha’ in the workspace.”
“Check the current status of the Elements system.”
“Tell Elements to add a new page using the global header and global footer with a Container in between.”
What happens behind the scenes:
You type: “Check the status.”
LM Studio sends your text to the LLM.
The LLM sees the “Elements” tools and realizes it needs to call a tool (e.g., get_system_status).
LM Studio executes that request against http://localhost:9712/mcp.
Elements sends the data back to LM Studio.
The LLM reads that data and gives you a natural language response: “The system status is currently Green and all modules are active.”
If you’re wondering what you can tell Elements to do, the list that appears under mcp/local-mcp in the right navigator pane shows what Elements can do, though it’s in geek. You’ll note that all those items are checked and have “Ask” associated with them. The “Ask before running” means that each time one of those requests are triggered through MCP you’ll be asked if you want LM Studio to proceed. It’s good to start that way as you’ll start to learn how the two are communicating and when, but you’ll eventually want to use “Always allow” instead, and that can be done for all tools simultaneously at the top of that list.
Yes, I have no problems with that. However, note that LM Studio keeps changing things. This is valid for version 0.3.0 through 0.4.25+1, though each had some small differences.
Don’t copy the code from this block and paste it into LMStudio as the copy will use different double-quotes than the code editor wants to see in the app, which will generate errors.
Maybe. But Bionic is agentic. The difference is that Agents connect to more things, such as live reading the Web and directly controlling your computer. Agents are also more risky, as the minute you fully enable them, they can change your files directly, including removing them. That can be helpful with code development (e.g. XCode), but I’m not a fan of allowing an Agent full authority, so I make it check with me at every step and I’m watching for things I don’t want it to do on my system. The simplest way to free AI is buy lots of RAM and get LM Studio with MCP configured and a proper model loaded.
We give developers powerful APIs to build incredible capabilities into their apps for Apple products, backed by a set of controls designed to protect users’ private data. Full Disk Access largely sidesteps these controls in order to allow backup apps to function properly on the Mac. Some developers are using Full Disk Access in ways that could put users at risk, exposing everything on their systems—including files, mail, messages, and even browsing history—without users’ full knowledge and understanding. For communication apps, this can also compromise the privacy of the people users are communicating with.
Going forward, we will introduce additional controls to ensure that users who genuinely wish to grant an app this extraordinary level of access can only do so with very explicit user action. Addressing this is critical. As AI agents become increasingly capable and autonomous, the risks associated with this level of access will grow substantially. We are committed to ensuring users clearly understand these risks before granting such access, so they can make informed decisions about their own data and privacy.
If you think AI is going to kill humanity, it will probably be an agent that does it. Oh, and one of the reasons why Apple issued that statement was…wait for it…Meta’s new Muse app.
I’m very curious to see which models are the best for use with Elements. So far I have used Gemma 4 12B, but it seems very slow.
I got it to do an SEO check of my site, and it came up with a number of good suggestions, which I then had it apply. This was a definite time saver, but I had to keep a close eye on it as it made a couple of mistakes.