Skip to main content
Glama
Monta MCP Server

Monta MCP Server

by nickknissen

Monta MCP Server

An MCP (Model Context Protocol) server that wraps the Monta Python SDK to provide LLM-friendly access to the Monta EV charging API.

Features

This MCP server exposes the following tools for interacting with Monta's EV charging platform:

Architecture Highlights

  • Efficient session management: Uses FastMCP's lifespan pattern to maintain a single persistent aiohttp session

  • Connection pooling: Reuses HTTP connections across all tool invocations for optimal performance

  • Type-safe context: All tools access shared resources through strongly-typed lifespan context

  • Proper cleanup: Automatically closes sessions on server shutdown

  • Robust error handling: State-changing operations include input validation, timeout protection (10s), and comprehensive error logging

Charge Point Management

  • get_charge_points - List all available charging stations with pagination

  • get_charge_point - Get detailed information about a specific charging station

Charging Operations

  • get_charges - View charging history/sessions with filtering options

  • start_charge - Start a charging session at a specific charge point

  • stop_charge - Stop an active charging session

Wallet & Payments

  • get_personal_wallet - View wallet balance and payment information

  • get_wallet_transactions - Get transaction history with filtering

Related MCP server: pumperly-mcp

Prerequisites

  • Python 3.11 or higher

  • Monta API credentials (client ID and client secret)

  • uv package manager (recommended) or pip

Installation

git clone <repository-url>
cd monta-mcp
uv sync

Using pip

git clone <repository-url>
cd monta-mcp
pip install -e .

Configuration

The server requires Monta API credentials set as environment variables:

export MONTA_CLIENT_ID="your_client_id"
export MONTA_CLIENT_SECRET="your_client_secret"

Getting Monta public API Credentials

Visit Monta Public API Portal and follow the guide

Usage

Running the Server

The server can be run directly:

# Using the installed script (default log: ./monta-mcp.log)
monta-mcp

# With custom log file location
monta-mcp --log-file /path/to/custom.log

# With custom log level
monta-mcp --log-level DEBUG

# Or using Python module
python -m monta_mcp

Command-line Options:

  • --log-file PATH - Path to log file (default: ./monta-mcp.log)

  • --log-level LEVEL - Logging level: DEBUG, INFO, WARNING, ERROR (default: INFO)

Testing with MCP Inspector

You can test the server using the MCP Inspector tool:

npx @modelcontextprotocol/inspector monta-mcp

This will open a web interface where you can:

  • View all available tools

  • Test tool calls with different parameters

  • See responses from the Monta API

Integrating with Claude Desktop

Add this configuration to your Claude Desktop config file:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "monta": {
      "command": "monta-mcp",
      "env": {
        "MONTA_CLIENT_ID": "your_client_id",
        "MONTA_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Or if using uv:

{
  "mcpServers": {
    "monta": {
      "command": "uv",
      "args": ["run", "monta-mcp"],
      "env": {
        "MONTA_CLIENT_ID": "your_client_id",
        "MONTA_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

With custom log location:

{
  "mcpServers": {
    "monta": {
      "command": "uv",
      "args": ["run", "monta-mcp", "--log-file", "/Users/you/logs/monta.log"],
      "env": {
        "MONTA_CLIENT_ID": "your_client_id",
        "MONTA_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

After adding the configuration, restart Claude Desktop. The Monta tools will be available in your conversations.

Example Usage in Claude

Once configured, you can ask Claude things like:

  • "Show me all my charging points"

  • "Get details for charge point 12345"

  • "What's my recent charging history?"

  • "Check my wallet balance"

  • "Start charging at station 12345"

Available Tools

7 tools
get_charge_pointA

Get detailed information about a specific charging point.

Args:
    charge_point_id: The ID of the charge point to retrieve

Returns:
    Charge point details dictionary

Inputs: charge_point_id (required).

get_charge_pointsA

Get a list of available EV charging points/stations.

Args:
    page: Page number for pagination (1-indexed, default: 1)
    per_page: Number of items per page (default: 10, min: 1, max: 100)

Returns:
    List of charge point dictionaries

Inputs: page, per_page. Returns: result

get_chargesA

Get charging history/sessions for a charge point.

Args:
    charge_point_id: The ID of the charge point
    from_date: Filter charges from this date (ISO format, optional)
    to_date: Filter charges to this date (ISO format, optional)
    state: Filter by charge state (e.g., 'completed', 'active', optional)
    page: Page number for pagination (1-indexed, default: 1)
    per_page: Number of items per page (default: 10, min: 1, max: 100)

Returns:
    List of charge session dictionaries

Inputs: charge_point_id (required), page, state, to_date, +2 more. Returns: result

get_personal_walletA

Get personal wallet information including balance and payment details.

Returns:
    Wallet details dictionary

Inputs: no named parameters.

get_wallet_transactionsA

Get wallet transaction history with optional filtering.

Args:
    from_date: Filter transactions from this date (ISO format, optional)
    to_date: Filter transactions to this date (ISO format, optional)
    page: Page number for pagination (1-indexed, default: 1)
    per_page: Number of items per page (default: 10, min: 1, max: 100)

Returns:
    List of transaction dictionaries

Inputs: page, to_date, per_page, from_date. Returns: result

start_chargeC

Start a charging session at a specific charge point.

Args:
    charge_point_id: The ID of the charge point to start charging

Returns:
    Charge session details dictionary or error response

Inputs: charge_point_id (required).

stop_chargeA

Stop an active charging session.

Args:
    charge_id: The ID of the charge session to stop

Returns:
    Charge session details dictionary or error response

Inputs: charge_id (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 7 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose: charge point listing vs detail, charging actions vs history, and wallet operations. No overlap or ambiguity.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with snake_case (e.g., get_charge_points, start_charge). No mixed conventions.

    Tool Count5/5

    7 tools is well-scoped for an EV charging server, covering station info, session management, and financials without excess.

    Completeness4/5

    Core workflows are covered: listing/detailing stations, starting/stopping charges, viewing history, and wallet. Minor gap: no tool to get current charging status directly, but filterable in history.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.
      MIT
    • A
      license
      Not graded
      quality
      F
      maintenance
      MCP server for the OCPI SDK that enables AI-assisted communication with EV charging infrastructure via the Open Charge Point Interface protocol.
      23 npm
      3
      Apache 2.0