Skip to main content
Glama
aleostudio

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
ParametersJSON Schema
NameRequiredDescriptionDefault
operationYes
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'Returns: Operation result with details' which gives some behavioral context about output, but doesn't cover important aspects like error handling (e.g., division by zero), precision limitations, rate limits, or authentication requirements for a calculation service.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns) and front-loaded purpose statement. Every sentence earns its place, though the 'Returns' statement could be slightly more specific about what 'details' includes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, basic math operations) and the presence of an output schema (which should document return values), the description is reasonably complete for core functionality. However, it lacks important context about error cases, limitations, and behavioral expectations that would be needed for robust agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds significant value by documenting all three parameters with clear semantics: operation types (add, subtract, multiply, divide, power) and operand roles (first and second). This fully compensates for the schema's lack of descriptions, though it doesn't provide format details like whether 'power' means exponentiation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Execute basic math operation' with specific operations listed in the Args section. It distinguishes itself from sibling tools like convert_data or process_text by focusing on mathematical calculations. However, it doesn't explicitly differentiate from potential mathematical siblings that might not exist in this set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While the sibling tools have different domains (data conversion, URL fetching, datetime operations, text processing), there's no explicit comparison or context about when mathematical calculation is appropriate versus other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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
ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
from_formatYes
to_formatYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions conversion behavior but lacks details on error handling (e.g., invalid formats), performance characteristics, or side effects. The description is minimal and doesn't compensate for the absence of annotations, leaving behavioral traits unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: it starts with the core purpose, then lists args and returns in a structured format. Every sentence earns its place without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no annotations, but with an output schema), the description is partially complete. It covers the purpose and parameters adequately, and the output schema handles return values, but it lacks usage guidelines and behavioral details. For a conversion tool with no annotations, more context on errors or limitations would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains each parameter's purpose ('data to convert', 'source format', 'destination format') and lists valid format options (json, base64, hex). This compensates well for the schema's lack of descriptions, though it doesn't detail format-specific requirements or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Convert data in different formats.' This specifies the verb ('convert') and resource ('data'), though it doesn't explicitly distinguish from sibling tools like 'process_text' which might also handle data transformation. The purpose is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'process_text' or other siblings. It lists parameters and returns but offers no context about appropriate use cases, prerequisites, or exclusions. Usage is implied through parameter descriptions but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
methodNoGET

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it specifies supported HTTP methods (GET, HEAD), mentions content truncation behavior, and describes the return format (status code, headers, content). It doesn't cover rate limits, authentication needs, or error handling, but provides solid foundational information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured with a clear purpose statement followed by organized Args and Returns sections. Every sentence earns its place, with zero wasted words. The information is front-loaded and efficiently presented in just four lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (HTTP client), no annotations, and the presence of an output schema, the description provides good coverage of purpose, parameters, and return behavior. It could benefit from mentioning security considerations or error scenarios, but covers the essential operational aspects adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining both parameters: 'url' as 'URL to fetch' and 'method' as 'HTTP method (GET, HEAD)' with the default value implied. It adds meaningful context beyond the bare schema, though it could specify URL format requirements or method constraints more explicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Execute HTTP requests') and target resource ('to external URLs'), distinguishing it from sibling tools like calculate or process_text. It uses precise technical terminology that leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the mention of 'external URLs' and HTTP methods, suggesting this is for web requests rather than internal operations. However, it provides no explicit guidance on when to use this tool versus alternatives or any prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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
ParametersJSON Schema
NameRequiredDescriptionDefault
timezone_offsetNo
format_typeNoiso

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the tool returns current date/time with configurable format, which covers the basic behavior, but doesn't mention performance characteristics, error conditions, or whether it requires external resources. The description doesn't contradict annotations since none exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for Args and Returns, and every sentence serves a purpose. It could be slightly more concise by combining some elements, but overall it's efficient and front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, no annotations, and the presence of an output schema (which handles return value documentation), the description provides adequate context. It explains parameters thoroughly and states the return purpose, though it could benefit from more behavioral context about edge cases or limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant value beyond the input schema, which has 0% description coverage. It explains what 'timezone_offset' represents (UTC offset in hours with valid range) and what 'format_type' controls (output format with specific options like iso, human, unix, components), providing crucial semantic context that the schema alone lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('current date/time'), plus it distinguishes its functionality from siblings by specifying configurable format options. It goes beyond a simple tautology by explaining what the tool actually does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'calculate' or other siblings. It mentions configurable format but doesn't specify scenarios where one format would be preferred over another or when this tool is appropriate compared to other date/time operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
operationYes
optionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'various operations' and lists them in the Args section, but doesn't disclose behavioral traits like whether operations are read-only or mutating, performance characteristics, error handling, or rate limits. The description is minimal and lacks important behavioral context for a tool with multiple operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and well-structured with clear sections (Args, Returns). The first sentence is front-loaded with the main purpose. However, the 'Args' section could be more integrated with the description rather than appearing as separate documentation, and the 'Handle text with various operations' opening is somewhat generic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters with 0% schema description coverage but an output schema exists, the description provides adequate parameter information but lacks behavioral context. The existence of an output schema means return values don't need explanation, but for a tool with multiple operations and no annotations, more guidance about operation selection and behavioral characteristics would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides significant parameter semantics beyond the schema. While schema description coverage is 0%, the Args section explicitly lists all 9 possible operations for the 'operation' parameter and explains the purpose of 'text' and 'options' parameters. This compensates well for the lack of schema descriptions, though it doesn't detail what 'options' might contain for specific operations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Handle text with various operations' which provides a general purpose but is vague about what specific operations are available. It mentions 'text' as the resource but doesn't clearly distinguish this tool from potential siblings like 'calculate' or 'convert_data' that might also handle text. The verb 'handle' is generic rather than specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention any prerequisites, constraints, or comparison with sibling tools like 'calculate' or 'convert_data'. There's no indication of when specific operations should be chosen or what context makes this tool appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedcalculate
    • First observedconvert_data
    • First observedfetch_url
    • First observedget_datetime
    • First observedprocess_text

TDQS

A3.7/5.0
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
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
    C
    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
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aleostudio/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server