Optimized Memory MCP Server V2
by AgentWong
<h1 id="webperfect-mcp-server">WebPerfect MCP Server</h1>
<p>An intelligent MCP server with a fully automated batch pipeline for web-ready images. Features include noise reduction, auto levels/curves, JPEG artifact removal, 4K resizing, smart sharpening with shadow/highlight enhancement, and advanced WebP conversion. Optimized compression delivers smaller files without sacrificing quality.</p>
<h2 id="features">Features</h2>
<h3 id="advanced-image-processing-pipeline">Advanced Image Processing Pipeline</h3>
<ol>
<li>Strong noise reduction using median filtering</li>
<li>Intelligent auto levels and curves based on image entropy</li>
<li>Advanced texture enhancement with modulation and sharpening</li>
<li>Smart resolution optimization (up to 4K)</li>
<li>Optimized WebP conversion</li>
</ol>
<h3 id="tools">Tools</h3>
<h4 id="process_images"><code>process_images</code></h4>
<p>Process and optimize a batch of images with advanced enhancements.</p>
<pre><code class="language-typescript">{
<span class="hljs-attr">inputDir</span>: <span class="hljs-built_in">string</span>; <span class="hljs-comment">// Directory containing input images</span>
<span class="hljs-attr">outputDir</span>: <span class="hljs-built_in">string</span>; <span class="hljs-comment">// Directory for optimized output</span>
}
</code></pre>
<h3 id="resources">Resources</h3>
<h4 id="resource-templates">Resource Templates</h4>
<ul>
<li>
<p><code>logs/{date}</code>: Access processing logs by date (YYYY-MM-DD)</p>
<pre><code class="language-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"date"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2024-01-20"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"entries"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"timestamp"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2024-01-20T10:00:00Z"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"imagesProcessed"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">15</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"totalInputSize"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"5.2MB"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"totalOutputSize"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.1MB"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"compressionRatio"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"78.8%"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"averageProcessingTime"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.2s"</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span>
</code></pre>
</li>
<li>
<p><code>stats/monthly/{month}</code>: Monthly statistics (YYYY-MM)</p>
<pre><code class="language-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"month"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2024-01"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"totalImagesProcessed"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">450</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"averageCompressionRatio"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"82%"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"popularFormats"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"input"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">"JPEG"</span><span class="hljs-punctuation">,</span> <span class="hljs-string">"PNG"</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"output"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">"WebP"</span><span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"totalStorageSaved"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"150MB"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
</li>
</ul>
<h4 id="static-resources">Static Resources</h4>
<ul>
<li>
<p><code>stats/summary</code>: Overall processing statistics</p>
<pre><code class="language-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"totalImagesProcessed"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">5280</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"averageCompressionRatio"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"81%"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"totalStorageSaved"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.8GB"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"popularEnhancements"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
<span class="hljs-string">"noise_reduction"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"auto_levels_curves"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"texture_enhancement"</span>
<span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"performanceMetrics"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"averageProcessingTime"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1.5s"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"peakThroughput"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"45 images/minute"</span>
<span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre>
</li>
<li>
<p><code>config/optimization-presets</code>: Available optimization presets</p>
<pre><code class="language-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"presets"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"web_standard"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"maxWidth"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1920</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"format"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"webp"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"quality"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">85</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"enhancements"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">"noise_reduction"</span><span class="hljs-punctuation">,</span> <span class="hljs-string">"auto_levels_curves"</span><span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"web_high_quality"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"maxWidth"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">3840</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"format"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"webp"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"quality"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">90</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"enhancements"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
<span class="hljs-string">"noise_reduction"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"auto_levels_curves"</span><span class="hljs-punctuation">,</span>
<span class="hljs-string">"texture_enhancement"</span>
<span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"thumbnail"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"maxWidth"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">400</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"format"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"webp"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"quality"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">80</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"enhancements"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">"noise_reduction"</span><span class="hljs-punctuation">]</span>
<span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre>
</li>
</ul>
<h2 id="installation">Installation</h2>
<ol>
<li>Clone the repository:</li>
</ol>
<pre><code class="language-bash">git <span class="hljs-built_in">clone</span> https://github.com/splendasucks/webperfect-mcp-server.git
<span class="hljs-built_in">cd</span> webperfect-mcp-server
</code></pre>
<ol start="2">
<li>Install dependencies:</li>
</ol>
<pre><code class="language-bash">npm install
</code></pre>
<ol start="3">
<li>Build the server:</li>
</ol>
<pre><code class="language-bash">npm run build
</code></pre>
<h2 id="usage-with-claude">Usage with Claude</h2>
<ol>
<li>Add the server to your Claude MCP settings (typically in <code>claude_desktop_config.json</code>):</li>
</ol>
<pre><code class="language-json"><span class="hljs-punctuation">{</span>
<span class="hljs-attr">"mcpServers"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"webperfect"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
<span class="hljs-attr">"command"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"node"</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"args"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">"/path/to/webperfect-mcp-server/build/index.js"</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
<span class="hljs-attr">"env"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span><span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ol start="2">
<li>
<p>Restart Claude to load the MCP server.</p>
</li>
<li>
<p>The server will be available through Claude's MCP tools and resources:</p>
</li>
</ol>
<pre><code class="language-typescript"><span class="hljs-comment">// Process a batch of images</span>
<use_mcp_tool>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">server_name</span>></span>webperfect<span class="hljs-tag"></<span class="hljs-name">server_name</span>></span></span>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">tool_name</span>></span>process_images<span class="hljs-tag"></<span class="hljs-name">tool_name</span>></span></span>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">arguments</span>></span>
{
"inputDir": "/path/to/input",
"outputDir": "/path/to/output"
}
<span class="hljs-tag"></<span class="hljs-name">arguments</span>></span></span>
</use_mcp_tool>
<span class="hljs-comment">// Access processing statistics</span>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">access_mcp_resource</span>></span>
<span class="hljs-tag"><<span class="hljs-name">server_name</span>></span>webperfect<span class="hljs-tag"></<span class="hljs-name">server_name</span>></span>
<span class="hljs-tag"><<span class="hljs-name">uri</span>></span>stats/summary<span class="hljs-tag"></<span class="hljs-name">uri</span>></span>
<span class="hljs-tag"></<span class="hljs-name">access_mcp_resource</span>></span></span>
</code></pre>
<h2 id="requirements">Requirements</h2>
<ul>
<li>Node.js >= 16</li>
<li>Sharp image processing library</li>
<li>Model Context Protocol SDK</li>
</ul>
<h2 id="license">License</h2>
<p>MIT</p>