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., "@Aedifion MCP Serverget the temperature timeseries for the Berlin office project"
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.
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.gitUsing pip
pip install git+https://github.com/tookta/mcp-server-aedifion.gitFrom 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 credentialsVariable | Required | Default | Description |
| Yes* | — | Your aedifion account email |
| Yes* | — | Your aedifion account password |
| No | — | Pre-obtained bearer token (alternative to username/password) |
| No |
| API 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-aedifionOr with environment variables:
claude mcp add aedifion --env AEDIFION_USERNAME=your-email --env AEDIFION_PASSWORD=your-password -- mcp-server-aedifionAvailable tools
The server exposes 95+ tools organized by category, covering all major areas of the aedifion API.
Meta
Tool | Description |
| Check API server availability |
| Get the aedifion API version |
| List all available API endpoints |
| Get all label definitions |
| Get available unit/label systems (SI, imperial, etc.) |
User
Tool | Description |
| Get current user details |
| Update user profile (first name, last name) |
| Get user's project permissions |
| Get user's assigned roles |
AI assistant
Tool | Description |
| List AI conversation threads |
| Get messages in a thread |
| Send a message to the aedifion AI assistant |
| Delete a conversation thread |
Company
Tool | Description |
| Get company details with projects and users |
| Update company name/description |
| List company roles |
| List company project permissions |
| List company labels |
| Create a new project |
| Create a new user |
| Get user details |
| Delete a user |
Realm
Tool | Description |
| List all companies in the realm |
| List all projects in the realm |
| List all users in the realm |
Project
Tool | Description |
| Get project details |
| Update project name/description |
| Delete a project (requires name confirmation) |
| List datapoints with optional filtering |
| Get timeseries data for multiple datapoints |
| Write timeseries data |
| Delete timeseries data |
| List project alerts |
| List datapoint tags |
| Add/overwrite a tag |
| Delete a tag |
| List project components |
| Get component details |
| Add a component to a project |
| Remove a component |
| Get pin mappings for a component |
| Map a pin to a datapoint |
| Unmap a pin |
| Get component attributes |
| Get project permissions |
| Get project labels |
| Set alternate keys for datapoints |
| List setpoints |
| Write a setpoint value |
| Delete a setpoint |
| Get setpoint status |
| Get current weather |
| Get weather forecast |
| Grant/revoke AI assistant consent |
| List saved plot views |
| Create a plot view |
| Delete a plot view |
| List project logbooks |
| Create a logbook |
| Get logbook details |
| Delete a logbook |
| Create a logbook entry |
| Delete a logbook entry |
| List project comments |
| Add a comment |
| Delete a comment |
Datapoint
Tool | Description |
| Get datapoint details |
| Update datapoint description/unit |
| Delete a datapoint |
| Get timeseries for a single datapoint |
| Get usage information (where referenced) |
| List favorite datapoints |
| Mark as favorite |
| Remove from favorites |
| Get datapoint labels |
Alerts
Tool | Description |
| Create a threshold-based alert |
| Update alert configuration |
| Enable an alert |
| Disable an alert |
| Delete an alert |
Tasks
Tool | Description |
| List project tasks |
| Create a task |
| Get task details |
| Update a task |
| Delete a task |
| Assign a task to a user |
| Unassign a task |
| Add a comment to a task |
| Delete a task comment |
Components (global catalog)
Tool | Description |
| List all component definitions |
| Get attribute definitions for a component type |
| Get pin definitions for a component type |
Analytics
Tool | Description |
| List available analysis functions |
| Get analysis function details |
| List analytics instances in a project |
| Create an analytics instance |
| Get instance details |
| Update an instance |
| Delete an instance |
| Enable an instance |
| Disable an instance |
| Manually trigger execution |
| Get instance results |
| Get instance status |
| Get aggregated KPIs for a project |
| Get per-component KPI aggregation |
| High-level KPI overview |
| Analytics status overview |
| Technical monitoring data |
| Energy efficiency analysis |
| Operational optimization data |
| Compliance data |
| Component-specific analytics results |
Controls
Tool | Description |
| List available controls apps |
| Get controls app details |
| List controls instances |
| Create a controls instance |
| Get instance details |
| Update an instance |
| Delete an instance |
| Enable an instance |
| Disable an instance |
| Get 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-aedifionTesting with MCP Inspector
npx @modelcontextprotocol/inspector mcp-server-aedifionAuthentication
The server supports two authentication methods:
Username/Password (recommended): Set
AEDIFION_USERNAMEandAEDIFION_PASSWORD. The server automatically obtains and refreshes bearer tokens viaPOST /v2/user/token.Pre-obtained token: Set
AEDIFION_TOKENwith 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 definitionsclient.py— Async HTTP client built onhttpx. Handles Basic Auth -> bearer token exchange, automatic token refresh, and providesget/post/put/deletehelpers.server.py— MCP server built withFastMCP. Registers 95+ tools covering all 12 API categories. Each tool maps to one or more aedifion API endpoints.
License
MIT — see LICENSE.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.