<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLM on Simple Enough Blog</title><link>https://blog.dev.simpleenough.net/tags/llm/</link><description>Recent content in LLM on Simple Enough Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 17 Jun 2026 10:00:00 +0200</lastBuildDate><atom:link href="https://blog.dev.simpleenough.net/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>MCP Servers: Integration and Ecosystem</title><link>https://blog.dev.simpleenough.net/blog/mcpecosystem/</link><pubDate>Wed, 17 Jun 2026 10:00:00 +0200</pubDate><guid>https://blog.dev.simpleenough.net/blog/mcpecosystem/</guid><description>&lt;p>In the first article, we laid the groundwork for the Model Context Protocol; in the second, we built a server from end to end. That leaves the question that turns a prototype into an everyday tool: &lt;strong>how do you integrate an MCP server into your working environment, reusing the existing ecosystem, without opening a security hole?&lt;/strong> That&amp;rsquo;s the subject of this final article.&lt;/p>
&lt;hr>




&lt;h2 id="i-connecting-a-server-to-claude-and-claude-code" class="heading">I. Connecting a server to Claude and Claude Code&lt;a href="#i-connecting-a-server-to-claude-and-claude-code" aria-labelledby="i-connecting-a-server-to-claude-and-claude-code">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>In the tutorial, we connected our server to Claude Desktop through &lt;code>claude_desktop_config.json&lt;/code>. &lt;strong>Claude Code&lt;/strong>, the command-line assistant, offers an even more direct approach with the &lt;code>claude mcp&lt;/code> subcommand:&lt;/p></description></item><item><title>Tutorial: Building Your First MCP Server in Python</title><link>https://blog.dev.simpleenough.net/blog/mcptuto/</link><pubDate>Wed, 10 Jun 2026 10:00:00 +0200</pubDate><guid>https://blog.dev.simpleenough.net/blog/mcptuto/</guid><description>&lt;p>In the first article on Model Context Protocol servers, we laid the groundwork: its host / client / server architecture and its three primitives (tools, resources, prompts). Now for the practical part. In this tutorial, we build a small MCP server in Python from end to end, exposing one &lt;strong>tool&lt;/strong> and one &lt;strong>resource&lt;/strong>, then we connect it to a host to watch a model use it.&lt;/p>
&lt;hr>




&lt;h2 id="i-prerequisites-and-installation" class="heading">I. Prerequisites and installation&lt;a href="#i-prerequisites-and-installation" aria-labelledby="i-prerequisites-and-installation">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>You need &lt;strong>Python 3.10 or higher&lt;/strong>. The official SDK also ships a handy command-line utility to test and install a server.&lt;/p></description></item><item><title>MCP Servers: Understanding the Model Context Protocol</title><link>https://blog.dev.simpleenough.net/blog/mcp/</link><pubDate>Wed, 03 Jun 2026 10:00:00 +0200</pubDate><guid>https://blog.dev.simpleenough.net/blog/mcp/</guid><description>&lt;p>Language models are brilliant at reasoning over text, but by nature they are cut off from the world. A model cannot read your files, query your database, or call an API unless it is explicitly given the means to do so. The &lt;strong>Model Context Protocol (MCP)&lt;/strong> is the standard that solves this problem in a generic way. This first article lays the groundwork; the next ones will dive into building a server and integrating it into an ecosystem.&lt;/p></description></item><item><title>What is a Harness for AI Agents? Understanding the Infrastructure Behind Claude Code and Cursor</title><link>https://blog.dev.simpleenough.net/blog/harness_intro/</link><pubDate>Wed, 27 May 2026 15:55:01 +0200</pubDate><guid>https://blog.dev.simpleenough.net/blog/harness_intro/</guid><description>&lt;h2 id="i-what-is-a-harness-for-ai-agents" class="heading">I. What is a Harness for AI Agents?&lt;a href="#i-what-is-a-harness-for-ai-agents" aria-labelledby="i-what-is-a-harness-for-ai-agents">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>When you first discover tools like &lt;strong>Claude Code&lt;/strong>, &lt;strong>Cursor&lt;/strong>, or &lt;strong>OpenAI Codex&lt;/strong>, it is easy to assume that a simple language model is capable of understanding an entire codebase, fixing bugs, executing commands, and running tests autonomously.&lt;/p>
&lt;p>However, the technical reality is far more interesting.&lt;/p>
&lt;p>The AI model is often only one piece of the system. Behind these tools lies a much more important layer than it first appears: the &lt;strong>harness&lt;/strong>.&lt;/p></description></item><item><title>Writing a Prompt: Technical Guide</title><link>https://blog.dev.simpleenough.net/blog/prompt/</link><pubDate>Fri, 18 Apr 2025 11:02:00 +0100</pubDate><guid>https://blog.dev.simpleenough.net/blog/prompt/</guid><description>&lt;h2 id="i-understanding-what-a-prompt-is-in-langchain" class="heading">I. Understanding What a Prompt Is in LangChain&lt;a href="#i-understanding-what-a-prompt-is-in-langchain" aria-labelledby="i-understanding-what-a-prompt-is-in-langchain">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>In LangChain, a &lt;em>prompt&lt;/em> is a textual structure designed to guide a language model. A well-constructed prompt includes several key components:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Instruction&lt;/strong>: What you explicitly ask the model to do.&lt;/li>
&lt;li>&lt;strong>Context&lt;/strong>: Additional information to frame the answer.&lt;/li>
&lt;li>&lt;strong>Input Data&lt;/strong>: The specific input provided at runtime.&lt;/li>
&lt;li>&lt;strong>Output Indicator&lt;/strong>: What kind of output is expected.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>This format enables clear, framed, and reproducible queries.&lt;br>
Here’s another example using &lt;code>LangChain&lt;/code> in Python with this structure:&lt;/p></description></item><item><title>Hallucinating with LangChain</title><link>https://blog.dev.simpleenough.net/blog/hallucination/</link><pubDate>Mon, 07 Apr 2025 09:22:00 +0100</pubDate><guid>https://blog.dev.simpleenough.net/blog/hallucination/</guid><description>&lt;h2 id="i-what-is-a-hallucination" class="heading">I What is a hallucination?&lt;a href="#i-what-is-a-hallucination" aria-labelledby="i-what-is-a-hallucination">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>A hallucination refers to a response generated by a language model that is factually incorrect, invented, or misinterprets reality. It can range from a minor inaccuracy to a completely fabricated citation or even a made-up technical or historical claim.&lt;/p>
&lt;p>Example:&lt;/p>





 &lt;blockquote class="blockquote">
 &lt;p>“Einstein discovered general relativity in 1975.”&lt;/p>
 &lt;/blockquote>
&lt;p>That’s incorrect (it was in 1915), but the model might produce this kind of statement if it lacks the proper context or is too confident in its reasoning.&lt;/p></description></item><item><title>1000: The Magic Number in the World of LLMs</title><link>https://blog.dev.simpleenough.net/blog/chunk/</link><pubDate>Wed, 26 Mar 2025 09:05:00 +0100</pubDate><guid>https://blog.dev.simpleenough.net/blog/chunk/</guid><description>&lt;h2 id="i-chunk-size-why-1000-tokens" class="heading">I. Chunk Size: Why ~1000 Tokens?&lt;a href="#i-chunk-size-why-1000-tokens" aria-labelledby="i-chunk-size-why-1000-tokens">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>The default value of &lt;strong>1000 tokens per chunk&lt;/strong> is not arbitrary:&lt;/p>
&lt;ul>
&lt;li>A chunk of this size generally contains &lt;strong>enough information to remain semantically coherent&lt;/strong> without being too large.&lt;/li>
&lt;li>It remains &lt;strong>compatible with the context window&lt;/strong> of modern LLMs (4k, 8k, 32k, or even 1M tokens).&lt;/li>
&lt;li>It helps avoid &lt;strong>diluting meaning&lt;/strong> or breaking semantic units.&lt;/li>
&lt;/ul>
&lt;p>In some cases, other sizes may be more appropriate:&lt;/p></description></item></channel></rss>