MCP EV Assistant Server

MCP EV Assistant Server

A powerful server implementation for managing Electric Vehicle (EV) charging stations, trip planning, and resource management. This server provides a comprehensive set of tools and APIs for EV-related services.

Abiorh001

Research & Data
Visit Server

README

MCP EV Assistant Server

A powerful server implementation for managing Electric Vehicle (EV) charging stations, trip planning, and resource management. This server provides a comprehensive set of tools and APIs for EV-related services.

Table of Contents

Features

1. EV Charging Station Services

  • Charging Station Locator: Find nearby EV charging stations based on location and preferences
  • Socket Type Filtering: Search for specific charging socket types (CCS, CHAdeMO, Type 2, etc.)
  • Distance-based Search: Specify search radius for finding charging stations

2. Trip Planning

  • Route Planning: Plan EV-friendly routes between locations
  • Charging Stop Integration: Automatically includes necessary charging stops
  • Range Consideration: Takes into account vehicle range and current charge level

3. Resource Management

  • PDF Document Management: Handles EV-related PDF documents (user guides, manuals, etc.)
  • Resource Subscription: Supports resource subscription for real-time updates
  • Automatic Text Extraction: PDF text extraction with fallback mechanisms

4. Interactive Prompts

  • Charging Station Search: Interactive prompts for finding charging stations
  • Charging Time Estimation: Calculate charging duration based on various parameters
  • Route Planning Assistance: Interactive route planning with charging considerations

Installation

1. Clone the Repository

git clone https://github.com/Abiorh001/mcp_ev_assistant_server.git
cd mcp_ev_assistant_server

2. Set Up Virtual Environment (Recommended)

python -m venv .venv
source .venv/bin/activate  # On Linux/Mac
# or
.venv\\Scripts\\activate  # On Windows

3. Install Dependencies

uv sync

Configuration

1. Environment Variables

Create a .env file in your project root with the following variables:

OPENCHARGE_MAP_API_KEY=your_opencharge_map_api_key
GOOGLE_MAP_API_KEY=your_google_map_api_key

2. Server Configuration

Create or update servers_config.json:

{
  "mcpServers": {
    "ev_assistant": {
      "command": "/home/$USER/path/mcp_learning/.venv/bin/python",
      "args": ["/home/$USER/path/mcp_ev_assistant_server/ev_assistant_server.py"],
      "env": {
        "OPENCHARGE_MAP_API_KEY": "your_opencharge_map_api_key",
        "GOOGLE_MAP_API_KEY": "your_google_map_api_key"
      }
    }
  }
}

3. Directory Structure

mcp_ev_assistant_server/
├── ev_assistant_server.py
├── .env
├── servers_config.json
├── Data/                  # PDF resources directory
├── agentTools/           # Tool implementations
│   ├── charge_station_locator.py
│   └── ev_trip_planner.py
└── core/                 # Core functionality
    ├── schemas.py
    └── logger.py

Usage

Starting the Server

# Method 1: Direct Python execution
python ev_assistant_server.py


API Examples

  1. Finding Charging Stations:
result = await client.call_tool("charge_points_locator", {
    "address": "London, UK",
    "max_distance": 10,
    "socket_type": "CCS"
})
  1. Planning a Trip:
result = await client.call_tool("ev_trip_planner", {
    "user_address": "Manchester, UK",
    "user_destination_address": "Liverpool, UK",
    "socket_type": "Type 2"
})

API Reference

Tools

  1. charge_points_locator

    • Purpose: Find EV charging stations near a location
    • Parameters:
      • address: Location to search around (string, required)
      • max_distance: Search radius in kilometers (integer, required)
      • socket_type: Type of charging socket (string, required)
  2. ev_trip_planner

    • Purpose: Plan an EV-friendly route
    • Parameters:
      • user_address: Starting location (string, required)
      • user_destination_address: Destination location (string, required)
      • socket_type: Preferred charging socket type (string, required)

Prompts

  1. find-charging-stations

    • Required:
      • location: Search location
    • Optional:
      • radius: Search radius in km
      • socket_type: Charging socket type
  2. charging-time-estimate

    • Required:
      • vehicle_model: EV make and model
      • current_charge: Current battery percentage
      • target_charge: Desired battery percentage
      • charger_power: Charging station power in kW
  3. route-planner

    • Required:
      • start_location: Starting point
      • end_location: Destination
      • vehicle_range: Vehicle's full charge range
    • Optional:
      • current_charge: Current battery percentage

Resource Management

PDF Resource Handling

  • Automatically discovers PDF files in the /Data directory
  • Supports text extraction with multiple fallback methods
  • Handles resource subscriptions for updates

Subscription System

# Subscribe to a resource
await client.subscribe_resource("file:///pdf/ev_manual")

# Unsubscribe from a resource
await client.unsubscribe_resource("file:///pdf/ev_manual")

Error Handling

  • Comprehensive error logging
  • Fallback mechanisms for PDF processing
  • Input validation using Pydantic schemas
  • Graceful handling of missing resources

Development

Adding New Tools

  1. Define the tool schema in core.schemas
  2. Implement the tool function in agentTools
  3. Add the tool to handle_list_tools()
  4. Implement the tool handling in handle_call_tool()

Adding New Prompts

  1. Define the prompt structure in PROMPTS
  2. Implement validation in handle_get_prompt()
  3. Add necessary schema validation

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Recommended Servers

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

A Model Context Protocol (MCP) server that provides comprehensive cryptocurrency analysis using the CoinCap API. This server offers real-time price data, market analysis, and historical trends through an easy-to-use interface.

Featured
TypeScript
MCP PubMed Search

MCP PubMed Search

Server to search PubMed (PubMed is a free, online database that allows users to search for biomedical and life sciences literature). I have created on a day MCP came out but was on vacation, I saw someone post similar server in your DB, but figured to post mine.

Featured
Python
dbt Semantic Layer MCP Server

dbt Semantic Layer MCP Server

A server that enables querying the dbt Semantic Layer through natural language conversations with Claude Desktop and other AI assistants, allowing users to discover metrics, create queries, analyze data, and visualize results.

Featured
TypeScript
mixpanel

mixpanel

Connect to your Mixpanel data. Query events, retention, and funnel data from Mixpanel analytics.

Featured
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.

Featured
Python
Nefino MCP Server

Nefino MCP Server

Provides large language models with access to news and information about renewable energy projects in Germany, allowing filtering by location, topic (solar, wind, hydrogen), and date range.

Official
Python
Vectorize

Vectorize

Vectorize MCP server for advanced retrieval, Private Deep Research, Anything-to-Markdown file extraction and text chunking.

Official
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

A server that provides access to Mathematica documentation through FastMCP, enabling users to retrieve function documentation and list package symbols from Wolfram Mathematica.

Local
Python
kb-mcp-server

kb-mcp-server

An MCP server aimed to be portable, local, easy and convenient to support semantic/graph based retrieval of txtai "all in one" embeddings database. Any txtai embeddings db in tar.gz form can be loaded

Local
Python
Research MCP Server

Research MCP Server

The server functions as an MCP server to interact with Notion for retrieving and creating survey data, integrating with the Claude Desktop Client for conducting and reviewing surveys.

Local
Python