电动汽车充电管理服务器

一个用于管理电动汽车充电站、行程规划和资源管理的强大服务器实现,提供全面的工具和API。

  • by Abiorh001
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 abiorh001/mcp_ev_assistant_server

使用说明

MCP电动汽车辅助服务器

一个功能强大的服务器实现,用于管理电动汽车(EV)充电站、行程规划和资源管理。该服务器为电动汽车相关服务提供了一套全面的工具和API。

目录

特性

1.电动汽车充电站服务

  • 充电站定位器:根据位置和偏好查找附近的电动汽车充电站
  • 套接字类型过滤:搜索特定的充电插座类型(CCS、CHAdeMO、Type 2等)
  • 基于距离的搜索:指定查找充电站的搜索半径

2.行程规划

  • 路线规划:规划不同地点之间的电动汽车友好路线
  • 充电停止集成:自动包括必要的充电停止
  • 范围考虑:考虑到车辆续航里程和当前充电水平

3.资源管理

  • PDF文档管理:处理电动汽车相关的PDF文档(用户指南、手册等)
  • 资源订阅:支持实时更新的资源订阅
  • 自动文本提取:使用回退机制提取PDF文本

4.互动提示

  • 充电站搜索:查找充电站的交互式提示
  • 充电时间估算:根据各种参数计算充电时间
  • 路线规划协助:考虑收费的交互式路线规划

安装

1.克隆存储库

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

2.设置虚拟环境(推荐)

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

3.安装依赖项

uv sync

配置

1.环境变量

创建一个 .env 项目根目录中的文件,包含以下变量:

OPENCHARGE_MAP_API_KEY=your_opencharge_map_api_key
GOOGLE_MAP_API_KEY=your_google_map_api_key

2.服务器配置

创建或更新 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.目录结构

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

用法

启动服务器

# Method 1: Direct Python execution
python ev_assistant_server.py


API示例

  1. 寻找充电站:
result = await client.call_tool("charge_points_locator", {
    "address": "London, UK",
    "max_distance": 10,
    "socket_type": "CCS"
})
  1. 计划旅行:
result = await client.call_tool("ev_trip_planner", {
    "user_address": "Manchester, UK",
    "user_destination_address": "Liverpool, UK",
    "socket_type": "Type 2"
})

api参考

工具

  1. charge_points_locator

    • 目的:查找附近的电动汽车充电站
    • 参数:
      • address:要搜索的位置(字符串,必填)
      • max_distance:搜索半径,单位为公里(整数,必填)
      • socket_type:充电插座类型(串,必填)
  2. ev_trip_planner

    • 目的:规划电动汽车友好路线
    • 参数:
      • user_address:起始位置(字符串,必填)
      • user_destination_address:目标位置(字符串,必填)
      • socket_type:首选充电插座类型(字符串,必填)

鼓励

  1. 查找充电站

    • 必修的:
      • location:搜索位置
    • 可选:
      • radius:搜索半径(单位:km)
      • socket_type:充电插座类型
  2. 充电时间估算

    • 必修的:
      • vehicle_model:电动汽车品牌和型号
      • current_charge:当前电池百分比
      • target_charge:所需电池百分比
      • charger_power:充电站功率(kW)
  3. 路线规划师

    • 必修的:
      • start_location:起点
      • end_location:目的地
      • vehicle_range:车辆的满充电范围
    • 可选:
      • current_charge:当前电池百分比

资源管理

PDF资源处理

  • 自动发现PDF文件 /Data 目录
  • 支持使用多种回退方法进行文本提取
  • 处理更新的资源订阅

订阅系统

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

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

错误处理

  • 全面的错误记录
  • PDF处理的回退机制
  • 使用Pydantic模式进行输入验证
  • 妥善处理缺失资源

发展

添加新工具

  1. 在中定义工具模式 core.schemas
  2. 在中实现工具功能 agentTools
  3. 将工具添加到 handle_list_tools()
  4. 实施工具搬运 handle_call_tool()

添加新提示

  1. 在中定义提示结构 PROMPTS
  2. 在中实施验证 handle_get_prompt()
  3. 添加必要的架构验证

贡献

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。