Monta MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Monta MCP Server show me my charging points"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 paginationget_charge_point- Get detailed information about a specific charging station
Charging Operations
get_charges- View charging history/sessions with filtering optionsstart_charge- Start a charging session at a specific charge pointstop_charge- Stop an active charging session
Wallet & Payments
get_personal_wallet- View wallet balance and payment informationget_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)
uvpackage manager (recommended) orpip
Installation
Using uv (recommended)
git clone <repository-url>
cd monta-mcp
uv syncUsing 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_mcpCommand-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-mcpThis 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 toolsget_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
Scored across 7 tools
Every tool has a clearly distinct purpose: charge point listing vs detail, charging actions vs history, and wallet operations. No overlap or ambiguity.
All tools follow a consistent verb_noun pattern with snake_case (e.g., get_charge_points, start_charge). No mixed conventions.
7 tools is well-scoped for an EV charging server, covering station info, session management, and financials without excess.
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
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceMCP server providing tools for AI-agents to interact with Enapter EMS.Apache 2.0- AlicenseAqualityBmaintenanceMCP server that exposes any Pumperly instance to LLMs, enabling real-time fuel price queries, station search, route planning, and geocoding.6102 npm3GPL 3.0
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for the OCPI SDK that enables AI-assisted communication with EV charging infrastructure via the Open Charge Point Interface protocol.23 npm3Apache 2.0