MCP Hub
Back to servers

mcp-server-aedifion

aedifion MCP server

glama
Updated
Mar 3, 2026

mcp-server-aedifion

An MCP (Model Context Protocol) server that provides tools for interacting with the aedifion cloud API. This server enables AI assistants (Claude, etc.) to manage building IoT data, analytics, controls, and more through the aedifion platform.

What is aedifion?

aedifion provides a cloud platform for building performance optimization. Their API offers access to:

  • Building IoT data — datapoints, timeseries, setpoints
  • Analytics — automated analysis functions, KPI tracking, energy efficiency monitoring
  • Controls — remote building control apps
  • Project management — components, tags, labels, logbooks, tasks, alerts
  • Weather data — current conditions and forecasts for building locations

API documentation: https://api.cloud.aedifion.eu/ui/

Installation

Using uv (recommended)

uv pip install git+https://github.com/tookta/mcp-server-aedifion.git

Using pip

pip install git+https://github.com/tookta/mcp-server-aedifion.git

From source

git clone https://github.com/tookta/mcp-server-aedifion.git
cd mcp-server-aedifion
uv pip install -e .

Configuration

Environment variables

The server requires aedifion API credentials. Create a .env file in your working directory (see .env.example):

cp .env.example .env
# Edit .env with your credentials
VariableRequiredDefaultDescription
AEDIFION_USERNAMEYes*Your aedifion account email
AEDIFION_PASSWORDYes*Your aedifion account password
AEDIFION_TOKENNoPre-obtained bearer token (alternative to username/password)
AEDIFION_BASE_URLNohttps://api.cloud.aedifion.euAPI base URL

* Required unless AEDIFION_TOKEN is set.

Claude Desktop

Add the server to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "aedifion": {
      "command": "mcp-server-aedifion",
      "env": {
        "AEDIFION_USERNAME": "your-email@example.com",
        "AEDIFION_PASSWORD": "your-password"
      }
    }
  }
}

Or if running from source with uv:

{
  "mcpServers": {
    "aedifion": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/mcp-server-aedifion",
        "run", "mcp-server-aedifion"
      ],
      "env": {
        "AEDIFION_USERNAME": "your-email@example.com",
        "AEDIFION_PASSWORD": "your-password"
      }
    }
  }
}

Claude Code

Add the server to your Claude Code settings:

claude mcp add aedifion -- mcp-server-aedifion

Or with environment variables:

claude mcp add aedifion --env AEDIFION_USERNAME=your-email --env AEDIFION_PASSWORD=your-password -- mcp-server-aedifion

Available tools

The server exposes 95+ tools organized by category, covering all major areas of the aedifion API.

Meta

ToolDescription
pingCheck API server availability
get_api_versionGet the aedifion API version
get_endpointsList all available API endpoints
get_label_definitionsGet all label definitions
get_label_systemsGet available unit/label systems (SI, imperial, etc.)

User

ToolDescription
get_userGet current user details
update_userUpdate user profile (first name, last name)
get_user_permissionsGet user's project permissions
get_user_rolesGet user's assigned roles

AI assistant

ToolDescription
ai_get_threadsList AI conversation threads
ai_get_threadGet messages in a thread
ai_chatSend a message to the aedifion AI assistant
ai_delete_threadDelete a conversation thread

Company

ToolDescription
get_companyGet company details with projects and users
update_companyUpdate company name/description
get_company_rolesList company roles
get_company_permissionsList company project permissions
get_company_labelsList company labels
create_projectCreate a new project
create_userCreate a new user
get_company_userGet user details
delete_company_userDelete a user

Realm

ToolDescription
get_realm_companiesList all companies in the realm
get_realm_projectsList all projects in the realm
get_realm_usersList all users in the realm

Project

ToolDescription
get_projectGet project details
update_projectUpdate project name/description
delete_projectDelete a project (requires name confirmation)
get_project_datapointsList datapoints with optional filtering
get_project_timeseriesGet timeseries data for multiple datapoints
write_project_timeseriesWrite timeseries data
delete_project_timeseriesDelete timeseries data
get_project_alertsList project alerts
get_project_tagsList datapoint tags
add_project_tagAdd/overwrite a tag
delete_project_tagDelete a tag
get_project_componentsList project components
get_project_componentGet component details
add_project_componentAdd a component to a project
delete_project_componentRemove a component
get_component_pinsGet pin mappings for a component
map_component_pinMap a pin to a datapoint
unmap_component_pinUnmap a pin
get_component_attributesGet component attributes
get_project_permissionsGet project permissions
get_project_labelsGet project labels
set_datapoint_renamingsSet alternate keys for datapoints
get_project_setpointsList setpoints
write_setpointWrite a setpoint value
delete_setpointDelete a setpoint
get_setpoint_statusGet setpoint status
get_project_weatherGet current weather
get_project_weather_forecastGet weather forecast
grant_ai_consentGrant/revoke AI assistant consent
get_plot_viewsList saved plot views
create_plot_viewCreate a plot view
delete_plot_viewDelete a plot view
get_logbooksList project logbooks
create_logbookCreate a logbook
get_logbookGet logbook details
delete_logbookDelete a logbook
create_logbook_entryCreate a logbook entry
delete_logbook_entryDelete a logbook entry
get_project_commentsList project comments
add_project_commentAdd a comment
delete_project_commentDelete a comment

Datapoint

ToolDescription
get_datapointGet datapoint details
update_datapointUpdate datapoint description/unit
delete_datapointDelete a datapoint
get_datapoint_timeseriesGet timeseries for a single datapoint
get_datapoint_usageGet usage information (where referenced)
get_favorite_datapointsList favorite datapoints
set_favorite_datapointMark as favorite
remove_favorite_datapointRemove from favorites
get_datapoint_labelsGet datapoint labels

Alerts

ToolDescription
create_threshold_alertCreate a threshold-based alert
update_threshold_alertUpdate alert configuration
enable_alertEnable an alert
disable_alertDisable an alert
delete_alertDelete an alert

Tasks

ToolDescription
get_project_tasksList project tasks
create_taskCreate a task
get_taskGet task details
update_taskUpdate a task
delete_taskDelete a task
assign_taskAssign a task to a user
unassign_taskUnassign a task
add_task_commentAdd a comment to a task
delete_task_commentDelete a task comment

Components (global catalog)

ToolDescription
get_componentsList all component definitions
get_component_attribute_definitionsGet attribute definitions for a component type
get_component_pin_definitionsGet pin definitions for a component type

Analytics

ToolDescription
get_analytics_functionsList available analysis functions
get_analytics_functionGet analysis function details
get_analytics_instancesList analytics instances in a project
create_analytics_instanceCreate an analytics instance
get_analytics_instanceGet instance details
update_analytics_instanceUpdate an instance
delete_analytics_instanceDelete an instance
enable_analytics_instanceEnable an instance
disable_analytics_instanceDisable an instance
trigger_analytics_instanceManually trigger execution
get_analytics_instance_resultGet instance results
get_analytics_instance_statusGet instance status
get_analytics_kpi_aggregationGet aggregated KPIs for a project
get_analytics_components_kpiGet per-component KPI aggregation
get_analytics_kpi_overviewHigh-level KPI overview
get_analytics_statusAnalytics status overview
get_technical_monitoringTechnical monitoring data
get_energy_efficiencyEnergy efficiency analysis
get_operational_optimizationOperational optimization data
get_complianceCompliance data
get_component_resultsComponent-specific analytics results

Controls

ToolDescription
get_controls_appsList available controls apps
get_controls_appGet controls app details
get_controls_instancesList controls instances
create_controls_instanceCreate a controls instance
get_controls_instanceGet instance details
update_controls_instanceUpdate an instance
delete_controls_instanceDelete an instance
enable_controls_instanceEnable an instance
disable_controls_instanceDisable an instance
get_controls_instance_statusGet instance status

Usage examples

Check API connectivity

"Ping the aedifion API to check if it's available."

Browse projects and data

"Show me all projects in my company."

"List all datapoints in project 42 that contain 'temperature' in their name."

Query timeseries data

"Get the temperature readings for datapoint 'bacnet500-4120-External-Air-Temperature' in project 42 from the last 24 hours, resampled to 15-minute intervals."

Analytics

"What analysis functions are available? Show me the KPI overview for project 42."

"Get the energy efficiency analysis for project 42 for the last month."

Alerts

"Create a threshold alert on the room temperature datapoint in project 42 that warns at 26C and goes critical at 30C."

Building controls

"List all active controls instances in project 42 and show their current status."

Weather

"What's the current weather at the building location for project 42?"

Development

Setup

git clone https://github.com/tookta/mcp-server-aedifion.git
cd mcp-server-aedifion
uv venv
source .venv/bin/activate
uv pip install -e .

Running locally

# With environment variables
AEDIFION_USERNAME=user@example.com AEDIFION_PASSWORD=pass mcp-server-aedifion

# Or with a .env file
cp .env.example .env
# Edit .env with your credentials
mcp-server-aedifion

Testing with MCP Inspector

npx @modelcontextprotocol/inspector mcp-server-aedifion

Authentication

The server supports two authentication methods:

  1. Username/Password (recommended): Set AEDIFION_USERNAME and AEDIFION_PASSWORD. The server automatically obtains and refreshes bearer tokens via POST /v2/user/token.

  2. Pre-obtained token: Set AEDIFION_TOKEN with a valid bearer token. Useful for short-lived sessions or when credentials shouldn't be stored.

Token refresh happens automatically when a 401 Unauthorized response is received.

Architecture

src/mcp_server_aedifion/
  __init__.py       # Package init
  client.py         # HTTP client with auth handling
  server.py         # MCP server with tool definitions
  • client.py — Async HTTP client built on httpx. Handles Basic Auth -> bearer token exchange, automatic token refresh, and provides get/post/put/delete helpers.
  • server.py — MCP server built with FastMCP. Registers 95+ tools covering all 12 API categories. Each tool maps to one or more aedifion API endpoints.

License

MIT — see LICENSE.

Reviews

No reviews yet

Sign in to write a review