<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ali Zahmatkesh</title>
    <description>The latest articles on DEV Community by Ali Zahmatkesh (@ali_zahmat_8082ec2cd8baff).</description>
    <link>https://dev.to/ali_zahmat_8082ec2cd8baff</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4021773%2Fd7affb6c-dc10-47c0-8ae1-1327085e5c04.jpg</url>
      <title>DEV Community: Ali Zahmatkesh</title>
      <link>https://dev.to/ali_zahmat_8082ec2cd8baff</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ali_zahmat_8082ec2cd8baff"/>
    <language>en</language>
    <item>
      <title>Building a Free AI Coding Assistant with MCP and LSP: A Practical Guide</title>
      <dc:creator>Ali Zahmatkesh</dc:creator>
      <pubDate>Wed, 08 Jul 2026 18:18:37 +0000</pubDate>
      <link>https://dev.to/ali_zahmat_8082ec2cd8baff/building-a-free-ai-coding-assistant-with-mcp-and-lsp-a-practical-guide-22j2</link>
      <guid>https://dev.to/ali_zahmat_8082ec2cd8baff/building-a-free-ai-coding-assistant-with-mcp-and-lsp-a-practical-guide-22j2</guid>
      <description>&lt;p&gt;As developers, we're constantly looking for tools that can help us code faster and better. AI coding assistants like GitHub Copilot, Cursor, and Claude are great, but they often come with recurring costs and privacy concerns. What if you could build your own AI coding assistant that's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Completely free&lt;/strong&gt; to use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline-capable&lt;/strong&gt; (no data leaves your machine).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible&lt;/strong&gt; with external tools and deep code understanding?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this guide, I'll show you how I built &lt;strong&gt;Coding Agent Free&lt;/strong&gt;, an open-source AI coding assistant that combines free LLM providers with two powerful protocols: &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; and &lt;strong&gt;LSP (Language Server Protocol)&lt;/strong&gt;. Whether you're a developer looking to understand how these protocols work, or someone who wants to use a free and private AI assistant, this guide is for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What You'll Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What &lt;strong&gt;MCP&lt;/strong&gt; and &lt;strong&gt;LSP&lt;/strong&gt; are and why they matter for AI coding assistants.&lt;/li&gt;
&lt;li&gt;How to set up a free, private AI coding assistant on your own machine.&lt;/li&gt;
&lt;li&gt;How to connect it to your IDE (VSCode, Cursor, Continue.dev).&lt;/li&gt;
&lt;li&gt;How to extend its capabilities with external tools and language servers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤖 What is Coding Agent Free?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Coding Agent Free&lt;/strong&gt; is an open-source AI coding assistant that runs locally (in your terminal or via a web UI). It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13+ LLM providers&lt;/strong&gt;: OpenRouter, Groq, Google Gemini, DeepSeek, Mistral, Anthropic, Together AI, Perplexity, xAI, Cohere, and local models (Ollama, LM Studio, Llama.cpp).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-fallback&lt;/strong&gt;: If one provider hits a rate limit, it automatically switches to the next one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;: Connect to external tools (filesystem, GitHub API, databases, custom servers) dynamically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LSP (Language Server Protocol)&lt;/strong&gt;: Understand your code semantically—not just text search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline mode&lt;/strong&gt;: With local models, no data leaves your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI-compatible API&lt;/strong&gt;: Use it as a local proxy for Cline, Continue.dev, or Cursor.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;📦 &lt;strong&gt;Note&lt;/strong&gt;: It's packaged as a standalone binary (no Node.js required) for Windows, Linux, and macOS.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 Why MCP and LSP Matter
&lt;/h2&gt;

&lt;p&gt;Most AI coding tools are chat wrappers—they send your code as text and the LLM does its best to understand it. This approach has two major limitations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No context awareness&lt;/strong&gt;: The AI doesn't understand your codebase structure, types, or dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No tool interaction&lt;/strong&gt;: The AI can't reach out to external services (databases, APIs, version control) on its own.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;MCP and LSP solve these problems.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is MCP?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; is a protocol that allows AI assistants to interact with external tools and services. Think of it as a "universal plugin system." An AI can call MCP servers to perform actions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reading/writing files.&lt;/li&gt;
&lt;li&gt;Querying a database.&lt;/li&gt;
&lt;li&gt;Interacting with GitHub.&lt;/li&gt;
&lt;li&gt;Running custom scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Coding Agent Free, MCP servers are configured via a &lt;code&gt;~/.coding-agent/mcp-servers.json&lt;/code&gt; file. Each server provides a set of "tools" that the AI can use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example MCP Configuration&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/workspace"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"github"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-github"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;With this, your AI assistant can directly manipulate files or create GitHub issues.&lt;/p&gt;


&lt;h3&gt;
  
  
  What is LSP?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Language Server Protocol (LSP)&lt;/strong&gt; is the backbone of modern IDEs. It provides deep code intelligence—like auto-completion, go-to-definition, and finding references—in a language-agnostic way. When your AI assistant has LSP integration, it can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Get accurate code definitions&lt;/strong&gt; (not just text search).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find all references&lt;/strong&gt; to a variable or function.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hover over symbols&lt;/strong&gt; to see type information and documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieve diagnostics&lt;/strong&gt; (compile errors and warnings).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example LSP Tool Calls in Action&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "Find all the places where `calculateTotal` is used."
Agent: Calls `code_references` on `calculateTotal` and gets a structured list.
Agent: "The function is used in 3 files: `math.ts`, `dashboard.tsx`, and `utils.ts`."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📦 Setup Guide
&lt;/h2&gt;

&lt;p&gt;Here's how to set up Coding Agent Free and start using it with your IDE.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. One‑Line Setup (Recommended)
&lt;/h3&gt;

&lt;p&gt;If you have Node.js installed:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-coding-agent@latest my-assistant
&lt;span class="nb"&gt;cd &lt;/span&gt;my-assistant
npm run setup   &lt;span class="c"&gt;# Interactive wizard (choose your provider, set API keys)&lt;/span&gt;
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;setup&lt;/code&gt; wizard will walk you through selecting an LLM provider and configuring your API keys.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Using the Standalone Binary
&lt;/h3&gt;

&lt;p&gt;If you don't want to install Node.js, you can download the standalone binary from the &lt;a href="https://github.com/maz557/coding-agent-free/releases" rel="noopener noreferrer"&gt;Releases page&lt;/a&gt; for your OS (Windows, Linux, macOS) and run it directly.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔌 Integrating with Your IDE
&lt;/h2&gt;

&lt;p&gt;One of the best features is the ability to use Coding Agent Free as a local proxy for any OpenAI‑compatible IDE plugin.&lt;/p&gt;
&lt;h3&gt;
  
  
  For Cursor, Continue.dev, or Cline
&lt;/h3&gt;

&lt;p&gt;Run the setup script:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run setup-ide
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This will automatically configure your IDE to use &lt;code&gt;http://localhost:3000&lt;/code&gt; as the OpenAI endpoint. You can then ask questions about your codebase directly from your editor.&lt;/p&gt;
&lt;h3&gt;
  
  
  Manual Configuration
&lt;/h3&gt;

&lt;p&gt;You can also manually set the base URL in your IDE's settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base URL&lt;/strong&gt;: &lt;code&gt;http://localhost:3000&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Key&lt;/strong&gt;: any non‑empty string works (since it's local).&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🛠️ Deep Dive: MCP in Action
&lt;/h2&gt;

&lt;p&gt;Let's see MCP in practice. Suppose you have a GitHub MCP server configured. You can ask your assistant:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "Open a new issue titled 'Add dark mode' with the description 'We need to support dark mode across the dashboard'."

Agent: Calls the GitHub server's `create_issue` tool.
Agent: "Done. Issue #42 has been created."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The agent didn't just respond with text—it interacted with an external system based on your request. This is what MCP enables.&lt;/p&gt;
&lt;h3&gt;
  
  
  Adding Custom MCP Servers
&lt;/h3&gt;

&lt;p&gt;You can add any MCP‑compatible server by adding it to &lt;code&gt;mcp-servers.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"mysql"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"path/to/mcp-mysql-server"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"MYSQL_HOST"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"localhost"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"MYSQL_USER"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"root"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After adding the server, your assistant can query your database directly.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧩 LSP: Deep Code Understanding
&lt;/h2&gt;

&lt;p&gt;LSP is what makes Coding Agent Free "intelligent" about your code. Here's how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When you start the agent, it launches the appropriate language server for each file type (e.g., &lt;code&gt;typescript-language-server&lt;/code&gt; for &lt;code&gt;.ts&lt;/code&gt; files, &lt;code&gt;pyright&lt;/code&gt; for Python, &lt;code&gt;rust-analyzer&lt;/code&gt; for Rust, etc.).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The agent can then call LSP tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;code_definition&lt;/code&gt;&lt;/strong&gt;: Find the definition of a symbol.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;code_references&lt;/code&gt;&lt;/strong&gt;: Find all references to a symbol.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;code_hover&lt;/code&gt;&lt;/strong&gt;: Get type info and documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;lookup_symbol&lt;/code&gt;&lt;/strong&gt;: Search for a symbol across files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;get_diagnostics&lt;/code&gt;&lt;/strong&gt;: Retrieve compile errors and warnings.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Example Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;: "Fix all linting errors in &lt;code&gt;main.ts&lt;/code&gt;."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent calls &lt;code&gt;get_diagnostics&lt;/code&gt; on &lt;code&gt;main.ts&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;LSP server returns a structured list: "Error on line 12: 'foo' is not defined. Warning on line 20: Unused variable 'bar'."&lt;/li&gt;
&lt;li&gt;Agent asks for more info using &lt;code&gt;code_hover&lt;/code&gt; on the undefined variable to understand the intended type.&lt;/li&gt;
&lt;li&gt;Agent generates a fix and calls &lt;code&gt;write_file&lt;/code&gt; with the corrected code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The agent is no longer guessing. It's working with accurate, compiler‑level information.&lt;/p&gt;


&lt;h2&gt;
  
  
  💡 Lessons Learned
&lt;/h2&gt;

&lt;p&gt;Building this project taught me a few things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Free-tier LLMs are powerful&lt;/strong&gt;: With auto‑fallback, you can achieve near‑perfect uptime using multiple free providers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP is a game changer&lt;/strong&gt;: It turns a chat assistant into a real agent that can perform actions across your entire development workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LSP is the missing piece&lt;/strong&gt;: Semantic understanding of code makes the AI much more reliable and useful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-first is viable&lt;/strong&gt;: With local models, you get privacy and offline capability without sacrificing much quality.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  🔧 Future Roadmap
&lt;/h2&gt;

&lt;p&gt;I'm actively working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More LSP languages&lt;/strong&gt;: Java (jdtls), C# (OmniSharp), PHP (intelephense).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills system&lt;/strong&gt;: Allow users to define reusable skills in &lt;code&gt;SKILL.md&lt;/code&gt; files (inspired by &lt;code&gt;crush&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better TUI&lt;/strong&gt;: A terminal-based UI with richer interaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugin ecosystem&lt;/strong&gt;: Let the community build and share new tools.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🙌 How to Contribute
&lt;/h2&gt;

&lt;p&gt;Coding Agent Free is fully open-source and welcomes contributions. You can help by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Submitting bug reports or feature requests on &lt;a href="https://github.com/maz557/coding-agent-free/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Improving documentation or writing tutorials.&lt;/li&gt;
&lt;li&gt;Adding support for new MCP servers or LSP languages.&lt;/li&gt;
&lt;li&gt;Starring the repo to help others find it.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  📚 Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/maz557/coding-agent-free" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/maz557/coding-agent-free/blob/main/docs/GUIDE.md" rel="noopener noreferrer"&gt;User Guide (with examples)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;MCP Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://microsoft.github.io/language-server-protocol/" rel="noopener noreferrer"&gt;LSP Specification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🏁 Conclusion
&lt;/h2&gt;

&lt;p&gt;Building your own AI coding assistant is now easier than ever, thanks to free LLMs, MCP, and LSP. You get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full privacy and control.&lt;/li&gt;
&lt;li&gt;Zero recurring costs.&lt;/li&gt;
&lt;li&gt;Extensibility via external tools and language servers.&lt;/li&gt;
&lt;li&gt;Deep code understanding that makes the AI more reliable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I encourage you to try it out, tinker with it, and perhaps contribute back to the project. The best way to learn how these protocols work is to build something with them.&lt;/p&gt;




&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/maz557" rel="noopener noreferrer"&gt;
        maz557
      &lt;/a&gt; / &lt;a href="https://github.com/maz557/coding-agent-free" rel="noopener noreferrer"&gt;
        coding-agent-free
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Interactive AI coding agent using free OpenRouter models with real tool calling
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Coding Agent Free&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a98664f9fb664d4599d1a9c884837b58ca6e90c1acf38342561e53bd59f19535/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d617a3535372f636f64696e672d6167656e742d667265653f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562"&gt;&lt;img src="https://camo.githubusercontent.com/a98664f9fb664d4599d1a9c884837b58ca6e90c1acf38342561e53bd59f19535/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d617a3535372f636f64696e672d6167656e742d667265653f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562" alt="Stars"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0d2d0193d955ef6314b60c28d7d74c4262b141d77a9bff6fbb7644c60bed4385/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617a3535372f636f64696e672d6167656e742d667265653f7374796c653d666f722d7468652d6261646765"&gt;&lt;img src="https://camo.githubusercontent.com/0d2d0193d955ef6314b60c28d7d74c4262b141d77a9bff6fbb7644c60bed4385/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617a3535372f636f64696e672d6167656e742d667265653f7374796c653d666f722d7468652d6261646765" alt="License"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ecbf9a41da9b6f309d96a4f5285ec538af43adb692df2b3eb8b5d4ea0d1cc01a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d617a3535372f636f64696e672d6167656e742d667265653f7374796c653d666f722d7468652d6261646765266c6f676f3d676974"&gt;&lt;img src="https://camo.githubusercontent.com/ecbf9a41da9b6f309d96a4f5285ec538af43adb692df2b3eb8b5d4ea0d1cc01a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d617a3535372f636f64696e672d6167656e742d667265653f7374796c653d666f722d7468652d6261646765266c6f676f3d676974" alt="Last Commit"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/50aa8c3857f318836563216ffd2c4bc4687bd5eb11354f2e4a594e2c23162262/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d362e782d3331373843363f7374796c653d666f722d7468652d6261646765266c6f676f3d74797065736372697074"&gt;&lt;img src="https://camo.githubusercontent.com/50aa8c3857f318836563216ffd2c4bc4687bd5eb11354f2e4a594e2c23162262/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d362e782d3331373843363f7374796c653d666f722d7468652d6261646765266c6f676f3d74797065736372697074" alt="TypeScript"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/671fb0c723ec653000da20c74ad13b85b9d1c2151694da26b7193e6066a93216/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6d617a3535372f636f64696e672d6167656e742d667265652f63692e796d6c3f6272616e63683d6d61696e267374796c653d666f722d7468652d6261646765266c6f676f3d676974687562616374696f6e73"&gt;&lt;img src="https://camo.githubusercontent.com/671fb0c723ec653000da20c74ad13b85b9d1c2151694da26b7193e6066a93216/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6d617a3535372f636f64696e672d6167656e742d667265652f63692e796d6c3f6272616e63683d6d61696e267374796c653d666f722d7468652d6261646765266c6f676f3d676974687562616374696f6e73" alt="CI"&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;a href="https://github.com/maz557/coding-agent-free#-why-coding-agent-free" rel="noopener noreferrer"&gt;&lt;strong&gt;Why This Agent?&lt;/strong&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/maz557/coding-agent-free#-requirements--installation" rel="noopener noreferrer"&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/maz557/coding-agent-free#-usage-guide" rel="noopener noreferrer"&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/maz557/coding-agent-free#%EF%B8%8F-cli-interface" rel="noopener noreferrer"&gt;&lt;strong&gt;CLI&lt;/strong&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/maz557/coding-agent-free#-web-interface" rel="noopener noreferrer"&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/maz557/coding-agent-free/docs/GUIDE.md" rel="noopener noreferrer"&gt;&lt;strong&gt;📘 Guide&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;An interactive AI coding assistant that runs in your &lt;strong&gt;terminal&lt;/strong&gt; or &lt;strong&gt;web browser&lt;/strong&gt; — powered by &lt;strong&gt;free&lt;/strong&gt; cloud APIs and &lt;strong&gt;local&lt;/strong&gt; models (Ollama, LM Studio, Llama.cpp). It reads, writes, searches, copies, moves, and deletes files, and runs shell commands — all through natural language tool calling. Includes &lt;strong&gt;MCP&lt;/strong&gt; (Model Context Protocol) and &lt;strong&gt;LSP&lt;/strong&gt; (Language Server Protocol) support for extensibility and deep code understanding.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Offline-ready&lt;/strong&gt;: With a local server, the agent works fully offline — no internet required, no data leaves your machine.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🧠 Why Coding Agent Free?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table&gt;

&lt;thead&gt;

&lt;tr&gt;

&lt;th&gt;Problem&lt;/th&gt;

&lt;th&gt;Solution&lt;/th&gt;

&lt;/tr&gt;

&lt;/thead&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;Coding assistants cost $20/month (ChatGPT+, Claude Pro)&lt;/td&gt;

&lt;td&gt;
&lt;br&gt;
&lt;strong&gt;100% free&lt;/strong&gt; — uses free-tier OpenRouter, Groq, Google, DeepSeek, Mistral + local models&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;One provider goes down / rate-limited&lt;/td&gt;

&lt;td&gt;
&lt;br&gt;
&lt;strong&gt;13 providers&lt;/strong&gt; — auto-fallback on 429 + manual &lt;code&gt;/model &amp;lt;n&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;No internet access / restricted region&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;…&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/maz557/coding-agent-free" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;em&gt;Happy coding! If you have questions, feel free to reach out in the GitHub discussions.&lt;/em&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
