<?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: Darshan Karanth</title>
    <description>The latest articles on DEV Community by Darshan Karanth (@darshan_karanth_d4eae027b).</description>
    <link>https://dev.to/darshan_karanth_d4eae027b</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3682979%2F5e7cf203-eb4a-4c43-a7d1-4d583fc2c647.jpeg</url>
      <title>DEV Community: Darshan Karanth</title>
      <link>https://dev.to/darshan_karanth_d4eae027b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/darshan_karanth_d4eae027b"/>
    <language>en</language>
    <item>
      <title>A Python based MCP server calculator tool</title>
      <dc:creator>Darshan Karanth</dc:creator>
      <pubDate>Sun, 18 Jan 2026 08:37:25 +0000</pubDate>
      <link>https://dev.to/darshan_karanth_d4eae027b/a-python-based-mcp-server-calculator-tool-km4</link>
      <guid>https://dev.to/darshan_karanth_d4eae027b/a-python-based-mcp-server-calculator-tool-km4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
Leverage MCP server python SDK to build a local MCP server.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Requirements&lt;/strong&gt;&lt;br&gt;
Install python version &lt;a href="https://www.python.org/downloads/source/" rel="noopener noreferrer"&gt;3.14+&lt;/a&gt;&lt;br&gt;
&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;vscode&lt;/a&gt; or any IDE&lt;br&gt;
&lt;a href="https://claude.com/download" rel="noopener noreferrer"&gt;Claude desktop&lt;/a&gt; as MCP Client&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;br&gt;
Create project directory and configure python virtual env&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir calculator
python -m venv venv
source .venv/Scripts/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install and initialize uv&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install uv
uv init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add MCP CLI for the project dependencies&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install mcp[cli]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit the created main.py file with the calculator tool&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from mcp.server.fastmcp import FastMCP

# Initialize the MCP server
mcp = FastMCP("Simple Calculator")

@mcp.tool()
def add(a: float, b: float) -&amp;gt; float:
    """Adds two numbers together."""
    return a + b

@mcp.tool()
def subtract(a: float, b: float) -&amp;gt; float:
    """Subtracts b from a."""
    return a - b

@mcp.tool()
def multiply(a: float, b: float) -&amp;gt; float:
    """Multiplies two numbers."""
    return a * b

@mcp.tool()
def divide(a: float, b: float) -&amp;gt; str:
    """Divides a by b. Handles division by zero errors."""
    if b == 0:
        return "Error: Cannot divide by zero."
    return str(a / b)

if __name__ == "__main__":
    mcp.run(transport="stdio")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install claude code and run the MCP server&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uv run mcp install main.py
[01/18/26 13:34:04] INFO     Added server 'Simple Calculator' to Claude config                                                                      claude.py:136
                    INFO     Successfully installed Simple Calculator in Claude app                                                                    cli.py:485
(.venv) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check File -&amp;gt; Settings -&amp;gt; Developer on claude code if the recently created MCP server is running. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiopz3pfzwpaqzitldfjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiopz3pfzwpaqzitldfjo.png" alt="Claudecodemcprunning" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Edit config to see the MCP servers configured on the Claude desktop&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "mcpServers": {
        "Simple Calculator": {
            "command": "C:\\Users\\MCP\\calculator\\.venv\\Scripts\\uv.EXE",
            "args": [
                "run",
                "--frozen",
                "--with",
                "mcp[cli]",
                "mcp",
                "run",
                "C:\\Users\\MCP\\calculator\\main.py"
            ]
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdgtg2rv19j8ij3thgp1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdgtg2rv19j8ij3thgp1.png" alt="Claudedesktopconfig" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test the MCP server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start the conversation and provide an arithmetic calculation. Notice that claude leverages the calculator  MCP server.&lt;br&gt;
Claude asks for tool access and performs subsequent calculation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95enszjolphlu0u4mzhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95enszjolphlu0u4mzhj.png" alt="claudeconversation" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftoo2dqcdr3rvi7fbvkx4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftoo2dqcdr3rvi7fbvkx4.png" alt="ClaudeMultiply" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5p8poa2q3s0g1p2hzzrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5p8poa2q3s0g1p2hzzrb.png" alt="ClaudeDivide" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
