智能能源协议服务器

一个用于与IEEE 2030.5(SEP 2.0)智能能源配置文件服务器交互的模型上下文协议(MCP)服务器。

  • by prandogabriel
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 prandogabriel/ieee2030.5-mcp

使用说明

IEEE 2030.5 MCP服务器

用于与IEEE 2030.5(SEP 2.0)智能能源配置文件服务器交互的模型上下文协议(MCP)服务器。

快速入门: npx -y @prandogabriel/ieee2030.5-mcp

目录

特性

  • 🔐 基于证书的身份验证(单个.pem或单独的证书/密钥文件)
  • 📡 完全支持IEEE 2030.5端点
  • 🛠️ 用于所有主要IEEE 2030.5资源的MCP工具
  • 🎯 基于HATEOAS的导航,具有全面的指南
  • ⚙️ 基于环境的配置
  • 🧪 内置测试客户端和MCP检查器支持

先决条件

系统要求

  • Node.js:版本20.0.0或更高版本
  • 程序包管理器:pnpm(推荐)或npm
  • 操作系统:macOS、Linux或Windows

安装Node.js

如果你没有安装Node.js:

使用节点版本管理器(推荐):

# Install nvm (macOS/Linux)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# Install and use Node.js 20
nvm install 20
nvm use 20

直接下载:

安装pnpm

npm install -g pnpm

或者使用核心包(Node.js 16.10+):

corepack enable
corepack prepare pnpm@latest --activate

IEEE 2030.5服务器要求

要使用此MCP服务器,您需要访问符合IEEE 2030.5标准的服务器,该服务器具有:

  • HTTPS端点 (通常为端口8443)
  • 客户端证书身份验证 (推荐.pem格式)
  • 符合IEEE 2030.5/SEP 2.0标准 具有标准端点

常见的IEEE 2030.5实现:

  • OpenADR VEN/VTN服务器
  • 智能逆变器管理系统
  • 公用事业需求响应平台
  • 分布式能源管理系统

快速开始

选项1:使用已发布的包(最快)

对于大多数用户来说,最简单的方法是使用已发布的npm包:

  1. 确保已安装Node.js 20+:

    node --version  # Should be 20.0.0 or higher
    
  2. 测试服务器:

    npx -y @prandogabriel/ieee2030.5-mcp
    
  3. 使用Claude Desktop进行配置 -看 已发布的包配置

选项2:地方发展设置

对于开发或定制:

1.验证要求

检查你的Node.js和pnpm版本:

node --version  # Should be 20.0.0 or higher
pnpm --version  # Should be 8.0.0 or higher

2.克隆和安装

git clone <repository-url>
cd ieee2030.5-mcp
pnpm install

3.配置环境

复制示例环境文件并配置IEEE 2030.5服务器:

cp .env.example .env

编辑 .env 根据您的配置。服务器将自动从以下位置加载环境变量 .env 文件:

# REQUIRED: Your IEEE 2030.5 server URL
IEEE2030_BASE_URL=https://your-ieee2030-server:port

# REQUIRED: Certificate for authentication (choose one option)
# Option 1: Single PEM file (like curl -E $CTRL_CERT)
IEEE2030_CERT_PATH=/path/to/your/client.pem

# Option 2: Separate files
# IEEE2030_CERT_PATH=/path/to/client.crt
# IEEE2030_KEY_PATH=/path/to/client.key

# Optional: Security settings
IEEE2030_INSECURE=true  # Set to true for development with self-signed certs

注: 这 .env 出于安全考虑,git会自动忽略该文件。

4.建设项目

pnpm build

5.测试服务器

使用MCP检查器进行交互式测试和调试:

# Build and start the inspector
pnpm debug

这将:

  1. 构建您的服务器
  2. 在浏览器中打开MCP检查器 http://localhost:5173
  3. 连接到IEEE 2030.5 MCP服务器

检查器提供了一个web UI,您可以在其中:

  • 查看所有可用工具
  • 与参数交互的测试工具
  • 查看实时响应和错误
  • 调试服务器行为

环境配置

变量 描述 必填
IEEE2030_BASE_URL IEEE 2030.5服务器的基本URL ✅ 是的
IEEE2030_CERT_PATH 证书文件(.pem、.crt)的路径 ✅ 证书选项之一
IEEE2030_CERT_VALUE 证书内容为字符串 ✅ 证书选项之一
IEEE2030_KEY_PATH 私钥文件的路径(如果单独) ❌ 可选
IEEE2030_KEY_VALUE 私钥内容为字符串 ❌ 可选
IEEE2030_INSECURE 跳过SSL验证(仅限开发人员) ❌ 默认值:false
IEEE2030_TIMEOUT 请求超时(毫秒) ❌ 默认值:30000

可用的MCP工具

连接和状态工具

  • ieee2030_status -检查客户端配置状态
  • ieee2030_test_connection -测试与IEEE 2030.5服务器的连接

IEEE 2030.5资源工具

  • ieee2030_get_device_capabilities -获取设备功能(/dcap)- 从这里开始资源发现
  • ieee2030_get_end_devices -获取终端设备(/edev)-物理设备及其DER
  • ieee2030_get_der_programs -获取DER程序(/derp)-DER的控制程序
  • ieee2030_get_demand_response_programs -获取需求响应程序(/drp)
  • ieee2030_get_usage_points -获取使用点(/upt)-计量位置
  • ieee2030_get_time -获取服务器时间(/tm)-服务器时间同步
  • ieee2030_get_custom_endpoint -通过动态导航访问任何自定义端点

可用MCP提示

  • ieee2030_navigation_guide -使用HATEOAS原则浏览IEEE 2030.5资源的综合指南

IEEE 2030.5导航

此MCP服务器包括一个全面的导航指南,教您如何动态探索IEEE 2030.5资源。IEEE 2030.5标准使用HATEOAS(超媒体作为应用状态引擎)原则,其中每个响应都包含指向相关资源的链接。

关键导航提示:

  1. 始终从以下内容开始 /dcap (设备功能)以发现可用资源
  2. 动态跟踪链接 -使用 href 导航响应中的属性
  3. 使用自定义端点工具 访问任何已发现的路径
  4. 查看导航提示 有关详细的示例和模式

发展

发展依赖性

本项目使用现代开发工具:

  • TypeScript:类型安全的JavaScript开发
  • esb构建:快速捆绑和编译
  • 生物群系:快速换行和格式化(取代ESLint+Prettier)
  • 节点:开发过程中自动重启
  • MCP检查员:交互式测试和调试

开发命令

# Start development server with auto-reload
pnpm dev

# Run linting and formatting
pnpm lint          # Check for issues
pnpm lint:fix      # Fix issues automatically
pnpm format        # Check formatting
pnpm format:fix    # Fix formatting
pnpm check         # Run both lint and format checks
pnpm check:fix     # Fix both lint and format issues

# Build for production
pnpm build

# Start production server
pnpm start

# Development with auto-restart
pnpm watch

开发工作流程

  1. 进行更改 源代码在 /src
  2. 运行开发服务器: pnpm dev
  3. 使用MCP检查员进行测试: pnpm debug
  4. 格式和lint: pnpm check:fix
  5. 为生产而建: pnpm build

使用示例

使用已发布的软件包(推荐)

使用此MCP服务器的最简单方法是通过已发布的npm包。无需克隆或本地构建!

使用npx(快速入门)

您可以直接使用npx运行服务器:

npx -y @prandogabriel/ieee2030.5-mcp

Claude桌面配置(已发布包)

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "ieee2030-5-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@prandogabriel/ieee2030.5-mcp@0.1.0"
      ],
      "env": {
        "IEEE2030_BASE_URL": "https://your-ieee2030-server:port",
        "IEEE2030_CERT_PATH": "/path/to/your/cert.pem",
        "IEEE2030_INSECURE": "true"
      }
    }
  }
}

使用已发布包的好处:

  • ✅ 无需本地设置 -只需安装并运行
  • ✅ 始终保持最新状态 -指定版本或使用最新版本
  • ✅ 自动依赖关系管理 -npx处理一切
  • ✅ 跨平台兼容性 -适用于任何使用Node.js的系统

配置步骤:

  1. 确保已安装Node.js 20+ (参见 先决条件)
  2. 将配置添加到Claude Desktop 使用上面的JSON
  3. 更新环境变量 您的IEEE 2030.5服务器详细信息:
    • 替换 https://your-ieee2030-server:port 使用您的服务器URL
    • 替换 /path/to/your/cert.pem 使用您的证书路径
    • 集 IEEE2030_INSECURE 向 "false" 用于生产
  4. 重新启动克劳德桌面
  5. 测试连接:
    • 询问Claude:“检查IEEE 2030.5服务器状态”
    • 问克劳德:“给我看看IEEE 2030.5资源的导航指南”

使用Claude Desktop(本地开发)

要将此MCP服务器与Claude Desktop一起使用,请将以下配置添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "ieee2030-5-mcp": {
      "command": "node",
      "args": [
        "/path/to/your/ieee2030.5-mcp/dist/index.js"
      ],
      "env": {
        "IEEE2030_BASE_URL": "https://your-ieee2030-server:port",
        "IEEE2030_CERT_PATH": "/path/to/your/cert.pem",
        "IEEE2030_INSECURE": "true"
      }
    }
  }
}

配置步骤:

  1. 首先构建您的服务器:

    cd /path/to/your/ieee2030.5-mcp
    pnpm build
    
  2. 用实际路径更新配置:

    • 替换 /path/to/your/ieee2030.5-mcp/dist/index.js 包含指向内置服务器的完整路径
    • 替换 https://your-ieee2030-server:port 使用您的实际IEEE 2030.5服务器URL
    • 替换 /path/to/your/cert.pem 带有客户端证书的路径
  3. 重新启动克劳德桌面 使更改生效

  4. 测试连接:

    • 询问Claude:“检查IEEE 2030.5服务器状态”
    • 问Claude:“从IEEE 2030.5服务器获取设备功能”
    • 问克劳德:“给我看看IEEE 2030.5资源的导航指南”

使用MCP检查器

  1. 启动检查器:

    pnpm debug
    
  2. 测试ieee2030_get_device_capabilities:

    • 打开检查器 http://localhost:5173
    • 点击“工具”选项卡
    • 找到 ieee2030_get_device_capabilities 在列表中
    • 点击“执行”测试工具
    • 查看JSON格式的IEEE 2030.5 XML响应
  3. 测试自定义端点:

    • 选择 ieee2030_get_custom_endpoint
    • 输入端点路径,如下所示 /dcap, /tm, /drp
    • 执行并查看结果
  4. 访问导航指南:

    • 点击“提示”选项卡
    • 找到 ieee2030_navigation_guide
    • 单击查看浏览IEEE 2030.5资源的综合指南

程序化使用

您还可以使用MCP SDK以编程方式连接到MCP服务器:

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
import { spawn } from 'node:child_process';

// Start your server process
const serverProcess = spawn('node', ['dist/index.js']);
const transport = new StdioClientTransport({
  reader: serverProcess.stdout,
  writer: serverProcess.stdin,
});

// Connect and use tools
const client = new Client({ name: 'my-client', version: '1.0.0' }, { capabilities: {} });
await client.connect(transport);

// Call IEEE 2030.5 tools
const response = await client.request({
  method: 'tools/call',
  params: { name: 'ieee2030_get_device_capabilities' }
}, { method: 'tools/call' });

贡献

我们欢迎为IEEE 2030.5 MCP服务器做出贡献!无论您是在修复错误、添加功能、改进文档还是增强导航指南,我们都会感谢您的帮助。

🚀 入门指南

  1. 分叉存储库 在GitHub上
  2. 克隆你的叉子 本地:
    git clone https://github.com/your-username/ieee2030.5-mcp.git
    cd ieee2030.5-mcp
    
  3. 安装依赖项:
    pnpm install
    
  4. 创建要素分支:
    git checkout -b feature/your-feature-name
    

🛠️ 开发指南

代码的风格

  • 遵循现有的TypeScript约定
  • 使用 生物群系 用于修剪和格式化: pnpm check:fix
  • 在常规提交之后编写描述性提交消息
  • 为公共API添加JSDoc注释

测试您的更改

  1. 构建项目: pnpm build
  2. 使用MCP检查员进行测试: pnpm debug
  3. 使用Claude Desktop进行测试 使用本地版本
  4. 验证所有工具是否正常工作 使用真正的IEEE 2030.5服务器(如果可用)

代码质量检查表

  • []代码构建没有错误: pnpm build
  • []林亭传球: pnpm lint
  • []格式正确: pnpm format
  • []所有工具都可以加载到MCP检查器中
  • []导航指南反映了任何新的端点

🎯 贡献领域

🐛 漏洞修补

  • 修复SSL/TLS连接问题
  • 改进错误处理和消息
  • 解决XML解析边缘情况

✨ 特性

  • 新的IEEE 2030.5端点 (例如,定价、消息传递、历史数据)
  • 增强的XML/JSON转换 使用模式验证

📚 文档

  • 展开导航指南 更多示例
  • 添加更多IEEE 2030.5资源模式
  • 创建视频教程 或演练
  • 改进错误文档

🧪 测试

  • 单元测试 用于客户端功能
  • 集成测试 使用模拟IEEE 2030.5服务器
  • 端到端测试 使用MCP协议

📝 贡献工作流程

  1. 创建问题 第一个(对于较大的更改)
  2. 实施您的更改:
    # Make your changes
    pnpm check:fix    # Format and lint
    pnpm build        # Test build
    pnpm debug        # Test functionality
    
  3. 以传统格式提交:
    git add .
    git commit -m "feat: add support for new IEEE 2030.5 endpoint"
    # or
    git commit -m "fix: resolve SSL certificate validation issue"
    # or  
    git commit -m "docs: expand navigation guide with pricing examples"
    
  4. 推送并创建PR:
    git push origin feature/your-feature-name
    
  5. 打开拉取请求 与:
    • 变更的清晰描述
    • 屏幕截图/示例(如适用)
    • 提及相关问题

🏗️ 架构概述

了解代码库结构:

src/
├── handlers/           # MCP request handlers
│   ├── tools-handler.ts    # Tool execution logic
│   └── prompts-handler.ts  # Prompt serving logic
├── prompts/           # MCP prompts
│   └── ieee2030-navigation-guide.ts
├── services/          # Core business logic
│   ├── config.ts          # Environment configuration
│   ├── ieee2030-5-client.ts  # IEEE 2030.5 HTTP client
│   └── ieee2030-5-types.ts   # TypeScript definitions
├── tools/             # MCP tools implementation
│   ├── ieee2030-connection-tools.ts
│   ├── ieee2030-data-tools.ts
│   └── tool-registry.ts
├── server.ts          # MCP server setup
└── index.ts           # Entry point

🤝 社区指南

  • 要有礼貌 并包容所有互动
  • 提出问题 如果你对任何事情都不确定
  • 帮助他人 通过审查PR和回答问题
  • 遵守行为准则 (善良和专业)

📧 获取帮助

  • 打开一个问题 对于bug或功能请求
  • 开始讨论 询问问题或想法
  • 检查现有问题 在创建新的之前

感谢您对IEEE 2030.5 MCP服务器的贡献! 🎉

安全说明

  • 在生产环境中始终使用HTTPS
  • 安全地存储证书
  • 集 IEEE2030_INSECURE=false 生产中
  • 验证生产环境中的所有服务器证书
  • 永不承诺 .env 文件 或证书到版本控制

故障排除

常见问题

  1. “IEEE2030_BASE_URL环境变量是必需的”

    • 设置 IEEE2030_BASE_URL 环境变量
  2. “需要证书路径或值”

    • 设置其中之一 IEEE2030_CERT_PATH 或 IEEE2030_CERT_VALUE
  3. SSL证书错误

    • 开发:Set IEEE2030_INSECURE=true
    • 生产:确保正确的证书链
  4. 连接超时

    • 增加 IEEE2030_TIMEOUT 价值
    • 检查网络连接
    • 验证服务器URL和端口