Provides tools for interacting with IEEE 2030.5 (SEP 2.0) Smart Energy Profile servers, enabling management of device capabilities, end devices, DER programs, demand response programs, and usage points.
Click on "Install 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., "@IEEE 2030.5 MCP Serverlist all active demand response events"
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.
IEEE 2030.5 MCP Server
A Model Context Protocol (MCP) server for interacting with IEEE 2030.5 (SEP 2.0) Smart Energy Profile servers.
Quick Start: npx -y @prandogabriel/ieee2030.5-mcp
Table of Contents
Features
๐ Certificate-based authentication (single .pem or separate cert/key files)
๐ก Full IEEE 2030.5 endpoint support
๐ ๏ธ MCP tools for all major IEEE 2030.5 resources
๐ฏ HATEOAS-based navigation with comprehensive guide
โ๏ธ Environment-based configuration
๐งช Built-in test client and MCP Inspector support
Prerequisites
System Requirements
Node.js: Version 20.0.0 or higher
Package Manager: pnpm (recommended) or npm
Operating System: macOS, Linux, or Windows
Install Node.js
If you don't have Node.js installed:
Using Node Version Manager (recommended):
# 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 20Direct download:
Download from nodejs.org (LTS version recommended)
Install pnpm
npm install -g pnpmOr using corepack (Node.js 16.10+):
corepack enable
corepack prepare pnpm@latest --activateIEEE 2030.5 Server Requirements
To use this MCP server, you need access to an IEEE 2030.5 compliant server with:
HTTPS endpoint (typically port 8443)
Client certificate authentication (.pem format recommended)
IEEE 2030.5/SEP 2.0 compliance with standard endpoints
Common IEEE 2030.5 implementations:
OpenADR VEN/VTN servers
Smart inverter management systems
Utility demand response platforms
Distributed Energy Resource (DER) management systems
Quick Start
Option 1: Using Published Package (Fastest)
For most users, the simplest way is to use the published npm package:
Ensure Node.js 20+ is installed:
node --version # Should be 20.0.0 or higherTest the server:
npx -y @prandogabriel/ieee2030.5-mcpConfigure with Claude Desktop - see Published Package Configuration
Option 2: Local Development Setup
For development or customization:
1. Verify Requirements
Check your Node.js and pnpm versions:
node --version # Should be 20.0.0 or higher
pnpm --version # Should be 8.0.0 or higher2. Clone and Install
git clone <repository-url>
cd ieee2030.5-mcp
pnpm install3. Configure Environment
Copy the example environment file and configure your IEEE 2030.5 server:
cp .env.example .envEdit .env with your configuration. The server will automatically load environment variables from the .env file:
# 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 certsNote: The .env file is automatically ignored by git for security.
4. Build the Project
pnpm build5. Test the Server
Use the MCP Inspector for interactive testing and debugging:
# Build and start the inspector
pnpm debugThis will:
Build your server
Open the MCP Inspector in your browser at
http://localhost:5173Connect to your IEEE 2030.5 MCP server
The inspector provides a web UI where you can:
View all available tools
Test tools interactively with parameters
See real-time responses and errors
Debug your server behavior
Environment Configuration
Variable | Description | Required |
| Base URL of your IEEE 2030.5 server | โ Yes |
| Path to certificate file (.pem, .crt) | โ One of cert options |
| Certificate content as string | โ One of cert options |
| Path to private key file (if separate) | โ Optional |
| Private key content as string | โ Optional |
| Skip SSL verification (dev only) | โ Default: false |
| Request timeout in milliseconds | โ Default: 30000 |
Available MCP Tools
Connection & Status Tools
ieee2030_status- Check client configuration statusieee2030_test_connection- Test connectivity to IEEE 2030.5 server
IEEE 2030.5 Resource Tools
ieee2030_get_device_capabilities- Get device capabilities (/dcap) - Start here for resource discoveryieee2030_get_end_devices- Get end devices (/edev) - Physical devices and their DERsieee2030_get_der_programs- Get DER programs (/derp) - Control programs for DERsieee2030_get_demand_response_programs- Get demand response programs (/drp)ieee2030_get_usage_points- Get usage points (/upt) - Metering locationsieee2030_get_time- Get server time (/tm) - Server time synchronizationieee2030_get_custom_endpoint- Access any custom endpoint with dynamic navigation
Available MCP Prompts
ieee2030_navigation_guide- Comprehensive guide for navigating IEEE 2030.5 resources using HATEOAS principles
IEEE 2030.5 Navigation
This MCP server includes a comprehensive navigation guide that teaches you how to explore IEEE 2030.5 resources dynamically. The IEEE 2030.5 standard uses HATEOAS (Hypermedia as the Engine of Application State) principles, where each response contains links to related resources.
Key Navigation Tips:
Always start with
/dcap(Device Capabilities) to discover available resourcesFollow links dynamically - use the
hrefattributes in responses to navigateUse the custom endpoint tool to access any discovered path
Check the navigation guide prompt for detailed examples and patterns
Development
Development Dependencies
This project uses modern development tools:
TypeScript: Type-safe JavaScript development
esbuild: Fast bundling and compilation
Biome: Fast linting and formatting (replaces ESLint + Prettier)
nodemon: Auto-restart during development
MCP Inspector: Interactive testing and debugging
Development Commands
# 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 watchDevelopment Workflow
Make changes to source code in
/srcRun development server:
pnpm devTest with MCP Inspector:
pnpm debugFormat and lint:
pnpm check:fixBuild for production:
pnpm build
Usage Examples
Using Published Package (Recommended)
The easiest way to use this MCP server is through the published npm package. No need to clone or build locally!
With npx (Quick Start)
You can run the server directly using npx:
npx -y @prandogabriel/ieee2030.5-mcpClaude Desktop Configuration (Published Package)
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %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"
}
}
}
}Benefits of using the published package:
โ No local setup required - just install and run
โ Always up-to-date - specify version or use latest
โ Automatic dependency management - npx handles everything
โ Cross-platform compatibility - works on any system with Node.js
Configuration Steps:
Ensure Node.js 20+ is installed (see Prerequisites)
Add configuration to Claude Desktop using the JSON above
Update environment variables with your IEEE 2030.5 server details:
Replace
https://your-ieee2030-server:portwith your server URLReplace
/path/to/your/cert.pemwith your certificate pathSet
IEEE2030_INSECUREto"false"for production
Restart Claude Desktop
Test the connection:
Ask Claude: "Check the IEEE 2030.5 server status"
Ask Claude: "Show me the navigation guide for IEEE 2030.5 resources"
Using with Claude Desktop (Local Development)
To use this MCP server with Claude Desktop, add the following configuration to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %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"
}
}
}
}Configuration Steps:
Build your server first:
cd /path/to/your/ieee2030.5-mcp pnpm buildUpdate the config with your actual paths:
Replace
/path/to/your/ieee2030.5-mcp/dist/index.jswith the full path to your built serverReplace
https://your-ieee2030-server:portwith your actual IEEE 2030.5 server URLReplace
/path/to/your/cert.pemwith the path to your client certificate
Restart Claude Desktop for the changes to take effect
Test the connection:
Ask Claude: "Check the IEEE 2030.5 server status"
Ask Claude: "Get device capabilities from the IEEE 2030.5 server"
Ask Claude: "Show me the navigation guide for IEEE 2030.5 resources"
Using MCP Inspector
Start the inspector:
pnpm debugTest ieee2030_get_device_capabilities:
Open the inspector at
http://localhost:5173Click on "Tools" tab
Find
ieee2030_get_device_capabilitiesin the listClick "Execute" to test the tool
View the IEEE 2030.5 XML response in JSON format
Test custom endpoints:
Select
ieee2030_get_custom_endpointEnter endpoint path like
/dcap,/tm,/drpExecute and see results
Access navigation guide:
Click on "Prompts" tab
Find
ieee2030_navigation_guideClick to view the comprehensive guide for navigating IEEE 2030.5 resources
Programmatic Usage
You can also connect to your MCP server programmatically using the MCP SDK:
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' });Contributing
We welcome contributions to the IEEE 2030.5 MCP Server! Whether you're fixing bugs, adding features, improving documentation, or enhancing the navigation guide, your help is appreciated.
๐ Getting Started
Fork the repository on GitHub
Clone your fork locally:
git clone https://github.com/your-username/ieee2030.5-mcp.git cd ieee2030.5-mcpInstall dependencies:
pnpm installCreate a feature branch:
git checkout -b feature/your-feature-name
๐ ๏ธ Development Guidelines
Code Style
Follow existing TypeScript conventions
Use Biome for linting and formatting:
pnpm check:fixWrite descriptive commit messages following conventional commits
Add JSDoc comments for public APIs
Testing Your Changes
Build the project:
pnpm buildTest with MCP Inspector:
pnpm debugTest with Claude Desktop using your local build
Verify all tools work with a real IEEE 2030.5 server (if available)
Code Quality Checklist
Code builds without errors:
pnpm buildLinting passes:
pnpm lintFormatting is correct:
pnpm formatAll tools can be loaded in MCP Inspector
Navigation guide reflects any new endpoints
๐ฏ Areas for Contribution
๐ Bug Fixes
Fix SSL/TLS connection issues
Improve error handling and messages
Resolve XML parsing edge cases
โจ Features
New IEEE 2030.5 endpoints (e.g., pricing, messaging, historical data)
Enhanced XML/JSON conversion with schema validation
๐ Documentation
Expand navigation guide with more examples
Add more IEEE 2030.5 resource patterns
Create video tutorials or walkthroughs
Improve error documentation
๐งช Testing
Unit tests for client functions
Integration tests with mock IEEE 2030.5 servers
End-to-end tests with MCP protocol
๐ Contribution Workflow
Create an issue first (for larger changes)
Implement your changes:
# Make your changes pnpm check:fix # Format and lint pnpm build # Test build pnpm debug # Test functionalityCommit with conventional format:
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"Push and create PR:
git push origin feature/your-feature-nameOpen a Pull Request with:
Clear description of changes
Screenshots/examples if applicable
Reference to related issues
๐๏ธ Architecture Overview
Understanding the codebase structure:
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๐ค Community Guidelines
Be respectful and inclusive in all interactions
Ask questions if you're unsure about anything
Help others by reviewing PRs and answering issues
Follow the code of conduct (be kind and professional)
๐ง Getting Help
Open an issue for bugs or feature requests
Start a discussion for questions or ideas
Check existing issues before creating new ones
Thank you for contributing to the IEEE 2030.5 MCP Server! ๐
Security Notes
Always use HTTPS in production
Store certificates securely
Set
IEEE2030_INSECURE=falsein productionValidate all server certificates in production environments
Never commit or certificates to version control
Troubleshooting
Common Issues
"IEEE2030_BASE_URL environment variable is required"
Set the
IEEE2030_BASE_URLenvironment variable
"Certificate path or value is required"
Set either
IEEE2030_CERT_PATHorIEEE2030_CERT_VALUE
SSL Certificate errors
For development: Set
IEEE2030_INSECURE=trueFor production: Ensure proper certificate chain
Connection timeouts
Increase
IEEE2030_TIMEOUTvalueCheck network connectivity
Verify server URL and port
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.