Skip to main content
Glama
aleostudio MCP Server

aleostudio MCP Server

by aleostudio

Simple MCP server with tools for AI agents

A fast and lightweight MCP server with different tools for AI agents. It supports STDIO (Claude Desktop) and SSE (remote agents).

Index


Related MCP server: Python FastMCP Server

Prerequisites

  • Python >= 3.11

  • uv and pip installed

↑ index


Configuration

Init virtualenv and install dependencies with:

uv venv
source .venv/bin/activate
uv sync

Create your .env file by copying:

cp env.dist .env

Then, customize it if needed.

↑ index


Run server in STDIO mode

First of all, to test the server, install and run a MCP Inspector with:

npx @modelcontextprotocol/inspector uv run python -m app.main

At the end, a UI will open in your browser. Connect to the server by clicking Connect on the left menu.

Then, from the top bar, click on Tools and List tools. At this point you can choose you preferred tools and play with it.

If you want to test it without the inspector, simply launch with:

uv run python -m app.main

↑ index


Run server in SSE mode

If you want to use the server through SSE from remote agents, launch it with:

uv run python -m app.main --sse --port 8000

As the STDIO mode, you can test it with MCP Inspector (remote) with:

npx @modelcontextprotocol/inspector

If you want to simulate a tool call from a remote agent, create a simple STDIO client in python (e.g. stdio_test.py) with this code:

import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def test():
    server_params = StdioServerParameters(command="uv", args=["run", "python", "server.py"], cwd="./")
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            
            # Tools list
            tools = await session.list_tools()
            print("Tools:", [t.name for t in tools.tools])
            
            # Call calculate
            result = await session.call_tool("calculate", { "operation": "multiply", "a": 6, "b": 7 })
            print("Result:", result.content)

asyncio.run(test())

Then run with:

python3 stdio_test.py

You will see a the available tools list and the result of calculate.

↑ index


Configure Claude Desktop

If you want to use tools on Claude Desktop, create the file claude_desktop_config.json with this content:

{
  "mcpServers": {
    "mcp-server-tools": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-server", "python", "-m", "app.main"]
    }
  }
}

Move this file in:

  • macOS: ~/Library/Application Support/Claude

  • Windows: %APPDATA%\Claude

↑ index


Available tools

Tool

Descrizione

calculate

Math operations (add, subtract, multiply, divide, power)

get_datetime

Date/hour with timezone and configurable format

process_text

Text handler (word count, extract email/URL, stats)

fetch_url

HTTP GET/HEAD requests

convert_data

JSON, Base64, Hex conversions

↑ index


Create new tool

To create new tool you need to:

  • Create a new file (e.g. app/tools/my_new_tool.py)

  • Write your logic keeping this structure:

    from app.mcp import mcp
    
    @mcp.tool()
    def my_new_tool(your_param: str) -> dict[str, Any]:
      """
      Clear and exaustive tool description.
    
      Args:
          your_param: clear and exaustive param description
    
      Returns:
          Clear and exaustive result description
      """
    
      # YOUR LOGIC HERE
    
      if some_error:
          return {"success": False, "error": "Clear error description"}
      
      return {
          "success": True,
          "your_resp": "...",
          "other_resp": "...",
      }
  • Edit app/tools/__init__.py file and add your tool:

    from app.tools import my_new_tool
    
    __all__ = [
        "my_new_tool",
    ]
  • Restart your server

In the same way, if you want to delete an existing tool, simply delete it from __init__.py and delete the related .py file.

↑ index


Debug in VSCode

To debug your Python microservice you need to:

  • Install VSCode

  • Ensure you have Python extension installed

  • Ensure you have selected the right interpreter with virtualenv on VSCode

  • Click on Run and Debug menu and create a launch.json file

  • From dropdown, select Python debugger and FastAPI

  • Change the .vscode/launch.json created in the project root with this (customizing host and port if changed):

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "MCP Server (SSE)",
      "type": "debugpy",
      "request": "launch",
      "module": "app.main",
      "args": [
          "--sse",
          "--port", "8000",
          "--reload"
      ],
      "envFile": "${workspaceFolder}/.env",
      "console": "integratedTerminal",
      "cwd": "${workspaceFolder}",
      "justMyCode": true
    },
    {
      "name": "MCP Server (STDIO)",
      "type": "debugpy",
      "request": "launch",
      "module": "app.main",
      "args": [
          "--reload"
      ],
      "envFile": "${workspaceFolder}/.env",
      "console": "integratedTerminal",
      "cwd": "${workspaceFolder}",
      "justMyCode": true
    }
  ]
}
  • Put some breakpoint in the code, then press the green play button

  • Call the API to debug

↑ index


Made with ♥️ by Alessandro Orrù

Available Tools

5 tools
calculateB
Execute basic math operation.

Args:
    operation: operation to execute (add, subtract, multiply, divide, power)
    a: first operand
    b: second operand

Returns:
    Operation result with details

Inputs: operation (required), a (required), b (required). Returns: object

convert_dataB
Convert data in different formats.

Args:
    data: data to convert
    from_format: source format (json, base64, hex)
    to_format: destination format (json, base64, hex)

Returns:
    Converted data

Inputs: data (required), from_format (required), to_format (required). Returns: object

fetch_urlA
Execute HTTP requests to external URLs.

Args:
    url: URL to fetch
    method: HTTP method (GET, HEAD)

Returns:
    Status code, headers and content (truncated if too long)

Inputs: url (required), method. Returns: object

get_datetimeA
Get current date/time with configurable format.

Args:
    timezone_offset: UTC offset in hours (-12 +14)
    format_type: output format (iso, human, unix, components)

Returns:
    Date/time in the required format

Inputs: timezone_offset, format_type. Returns: object

process_textC
Handle text with various operations.

Args:
    text: text to handle
    operation: action to perform (word_count, char_count, reverse, uppercase, lowercase, title_case, extract_emails, extract_urls, summarize_stats)
    options: additional options for specific operations

Returns:
    Operation result

Inputs: text (required), operation (required), options. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no overlap: calculate handles math operations, convert_data transforms data formats, fetch_url performs HTTP requests, get_datetime retrieves time information, and process_text manipulates text. The descriptions clearly differentiate their domains, making misselection unlikely.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (calculate, convert_data, fetch_url, get_datetime, process_text). The naming is uniform and predictable throughout the set, with no mixing of conventions or styles.

    Tool Count5/5

    With 5 tools, this server is well-scoped for a utility toolkit. Each tool serves a distinct and useful function, and the count is appropriate for covering basic operations without being overly sparse or bloated.

    Completeness4/5

    The tool set covers a broad range of utility operations (math, data conversion, HTTP, datetime, text processing) with no obvious major gaps. Minor gaps might include more advanced HTTP methods (e.g., POST) or additional data formats, but the surface is largely complete for general-purpose tasks.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A self-contained, dependency-free MCP server that provides utility tools for time, date, mathematical calculations, and shell command execution. It supports remote connectivity through SSE and is designed for easy deployment via Docker.
      GPL 3.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      A Python-based MCP server demonstrating basic math and text tools, supporting both SSE and STDIO transports for integration with AI assistants like Cline in VS Code.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      A general-purpose MCP server with utility tools including datetime information, safe math calculations, text statistics, JSON extraction, knowledge base search, and HTTP GET requests. It demonstrates server-side MCP implementation and can be connected to Claude Desktop or LangGraph agents.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      A small MCP server for the boring-but-essential utilities every model needs: dates, calendars, arithmetic, unit conversion. Use it so your assistant stops "next-token guessing" math and date math.
      4
      50 PyPI
      1
      MIT