Skip to main content
Glama
Hochfrequenz

TransformerBee.MCP

by Hochfrequenz

TransformerBee.MCP

This is a simple PoC of a Model Context Protocol (MCP) server for transformer.bee, written in Python. Under the hood it uses python-mcp and transformerbeeclient.py.

Installation

You can install the MCP server as Python package or pull the Docker image.

Install as Python Package

uv install transformerbeemcp

or if you are using pip:

pip install transformerbeemcp

Install as Docker Image

docker pull ghcr.io/hochfrequenz/transformerbee.mcp:latest

Related MCP server: vnbdigital-mcp

Start the Server via CLI

Python

_The package ships a simple CLI argument to start the server. In a terminal inside the virtual environment in which you installed the package (here myvenv), call:

(myvenv) run-transformerbee-mcp-server

Docker

docker run --network host -i --rm -e TRANSFORMERBEE_HOST=http://localhost:5021 ghcr.io/hochfrequenz/transformerbee.mcp:latest

(For the environment variables -e ..., see below or the transformerbeeclient.py docs.)

Register MCP Server in Claude Desktop

If you checked out this repository

cd path/to/reporoot/src/transformerbeemcp
fastmcp install server.py

If you installed the package via pip/uv

Modify your claude_desktop_config.json (that can be found in Claude Desktop menu via "Datei > Einstellungen > Entwickler > Konfiguration bearbeiten"):

{
  "mcpServers": {
    "TransformerBee.mcp": {
      "command": "C:\\github\\MyProject\\.myvenv\\Scripts\\run-transformerbee-mcp-server.exe",
      "args": [],
      "env": {
        "TRANSFORMERBEE_HOST": "http://localhost:5021",
        "TRANSFORMERBEE_CLIENT_ID": "",
        "TRANSFORMERBEE_CLIENT_SECRET": ""
      }
    }
  }
}

where C:\github\MyProject\.myvenv is the path to your virtual environment where you installed the package and localhost:5021 exposes transformer.bee running in a docker container. Alternatively, if you haven't configured this handy CLI command https://github.com/Hochfrequenz/TransformerBee.mcp/blob/c0898769670469df13f23b57a55fe4b71ed9795b/pyproject.toml#L101-L102

you can just call python with non-empty args.

Note that a lot of MCP tooling assumes you have uv installed, so you might need to install it in your virtual environment as well.

For details about the environment variables and/or starting transformer.bee locally, check transformerbeeclient.py docs.

If you installed the package via Docker

{
  "mcpServers": {
    "TransformerBee.mcp": {
      "command": "docker",
      "args": [
        "run",
        "--network",
        "host",
        "-i",
        "--rm",
        "-e",
        "TRANSFORMERBEE_HOST=http://localhost:5021",
        "ghcr.io/hochfrequenz/transformerbee.mcp:latest"
      ],
      "env": {
        "TRANSFORMERBEE_HOST": "http://localhost:5021",
        "TRANSFORMERBEE_CLIENT_ID": "",
        "TRANSFORMERBEE_CLIENT_SECRET": ""
      }
    }
  }
}

I'm aware, that using the --network host option is a bit hacky and not best practice.

Available Tools

2 tools
convert_bo4e_to_edifactB

Convert a BO4E transaktion to its EDIFACT equivalent

ParametersJSON Schema
NameRequiredDescriptionDefault
transaktionYesBOneyComb is a data structure that represents a "transaction" in the marktkommunikation. 1 transaction is 1 "Geschäftsvorfall".
edifact_format_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the conversion action without mentioning any side effects, error conditions, permissions, or whether the operation is read-only. Given the tool name, it's likely non-destructive, but this is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no redundant words. It is front-loaded with the essential action and object, making it easy for an agent to quickly understand the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and a sibling tool, the description provides the basic purpose. However, it lacks details about conversion behavior, error handling, or prerequisites (e.g., network access). With no annotations, more context would be beneficial for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 50%, meaning half of the parameters lack descriptions in the schema. The description does not mention any parameters or add meaning beyond the schema. It fails to compensate for the undocumented parameters or clarify their usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Convert' and the resources 'BO4E transaktion' to 'EDIFACT equivalent'. It effectively distinguishes from the sibling tool 'convert_edifact_to_bo4e', which performs the reverse conversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. The sibling tool implies that this is for BO4E-to-EDIFACT conversion, but no guidance on prerequisites, edge cases, or when not to use is provided. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_edifact_to_bo4eC

Convert an EDIFACT message to its BO4E equivalent

ParametersJSON Schema
NameRequiredDescriptionDefault
edifactYes
edifact_format_versionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
stammdatenYes
transaktionsdatenYes
linksNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description alone must disclose behavioral traits. It only says 'convert', omitting any side effects, idempotency, error handling, authentication needs, or other critical behaviors. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loading the verb and resource. While efficient, it could include more useful context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description fails to explain the conversion process, BO4E context, or how to handle the version parameter. The tool is incomplete for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description adds no meaning beyond the schema for either parameter. The edifact_format_version parameter has an enum with no explanation of how to choose the version, and edifact has no description at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (convert), input (EDIFACT message), and output (BO4E equivalent). It effectively distinguishes from the sibling tool convert_bo4e_to_edifact by specifying the direction of conversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. the sibling, no prerequisites, context, or exceptions mentioned. The description only states what it does without any usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.0.8
    • Changedconvert_bo4e_to_edifact12 fields changed
      • removedInput schema / $defs
        Removed value: -{
        -  "BOneyComb": {
        -    "description": "BOneyComb is a data structure that represents a \"transaction\" in the marktkommunikation.\n1 transaction is 1 \"Geschäftsvorfall\".",
        -    "properties": {
        -      "links": {
        -        "anyOf": [
        -          {
        -            "additionalProperties": {
        -              "items": {
        -                "type": "string"
        -              },
        -              "type": "array"
        -            },
        -            "type": "object"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Links"
        -      },
        -      "stammdaten": {
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "title": "Stammdaten",
        -        "type": "array"
        -      },
        -      "transaktionsdaten": {
        -        "additionalProperties": {
        -          "type": "string"
        -        },
        -        "title": "Transaktionsdaten",
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "stammdaten",
        -      "transaktionsdaten"
        -    ],
        -    "title": "BOneyComb",
        -    "type": "object"
        -  },
        -  "EdifactFormatVersion": {
        -    "description": "One format version refers to the period in which an AHB is valid.",
        -    "enum": [
        -      "FV2104",
        -      "FV2110",
        -      "FV2210",
        -      "FV2304",
        -      "FV2310",
        -      "FV2404",
        -      "FV2410",
        -      "FV2504",
        -      "FV2510",
        -      "FV2604",
        -      "FV2610"
        -    ],
        -    "title": "EdifactFormatVersion",
        -    "type": "string"
        -  }
        -}
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / edifact_format_version / anyOf
        Previous value: -[
        -  {
        -    "$ref": "#/$defs/EdifactFormatVersion"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "One format version refers to the period in which an AHB is valid.",
        +    "enum": [
        +      "FV2104",
        +      "FV2110",
        +      "FV2210",
        +      "FV2304",
        +      "FV2310",
        +      "FV2404",
        +      "FV2410",
        +      "FV2504",
        +      "FV2510",
        +      "FV2604",
        +      "FV2610"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / transaktion / $ref
        Removed value: -"#/$defs/BOneyComb"
      • addedInput schema / properties / transaktion / description
        Added value: +"BOneyComb is a data structure that represents a \"transaction\" in the marktkommunikation.\n1 transaction is 1 \"Geschäftsvorfall\"."
      • addedInput schema / properties / transaktion / properties
        Added value: +{
        +  "links": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "stammdaten": {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "transaktionsdaten": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / transaktion / required
        Added value: +[
        +  "stammdaten",
        +  "transaktionsdaten"
        +]
      • addedInput schema / properties / transaktion / type
        Added value: +"object"
      • removedInput schema / title
        Removed value: -"convert_bo4e_to_edifactArguments"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"convert_bo4e_to_edifactOutput"
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedconvert_edifact_to_bo4e10 fields changed
      • removedInput schema / $defs
        Removed value: -{
        -  "EdifactFormatVersion": {
        -    "description": "One format version refers to the period in which an AHB is valid.",
        -    "enum": [
        -      "FV2104",
        -      "FV2110",
        -      "FV2210",
        -      "FV2304",
        -      "FV2310",
        -      "FV2404",
        -      "FV2410",
        -      "FV2504",
        -      "FV2510",
        -      "FV2604",
        -      "FV2610"
        -    ],
        -    "title": "EdifactFormatVersion",
        -    "type": "string"
        -  }
        -}
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / edifact / title
        Removed value: -"Edifact"
      • changedInput schema / properties / edifact_format_version / anyOf
        Previous value: -[
        -  {
        -    "$ref": "#/$defs/EdifactFormatVersion"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "One format version refers to the period in which an AHB is valid.",
        +    "enum": [
        +      "FV2104",
        +      "FV2110",
        +      "FV2210",
        +      "FV2304",
        +      "FV2310",
        +      "FV2404",
        +      "FV2410",
        +      "FV2504",
        +      "FV2510",
        +      "FV2604",
        +      "FV2610"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / title
        Removed value: -"convert_edifact_to_bo4eArguments"
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / description
        Added value: +"BOneyComb is a data structure that represents a \"transaction\" in the marktkommunikation.\n1 transaction is 1 \"Geschäftsvorfall\"."
      • addedOutput schema / properties
        Added value: +{
        +  "links": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "stammdaten": {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "transaktionsdaten": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "stammdaten",
        +  "transaktionsdaten"
        +]
      • removedOutput schema / title
        Removed value: -"convert_edifact_to_bo4eDictOutput"
  2. 2 tool updatesv0.0.7
    • Changedconvert_bo4e_to_edifact1 field changed
      • changedInput schema / $defs / EdifactFormatVersion / enum
        Previous value: -[
        -  "FV2104",
        -  "FV2110",
        -  "FV2210",
        -  "FV2304",
        -  "FV2310",
        -  "FV2404",
        -  "FV2410",
        -  "FV2504",
        -  "FV2510",
        -  "FV2604"
        -]New value: +[
        +  "FV2104",
        +  "FV2110",
        +  "FV2210",
        +  "FV2304",
        +  "FV2310",
        +  "FV2404",
        +  "FV2410",
        +  "FV2504",
        +  "FV2510",
        +  "FV2604",
        +  "FV2610"
        +]
    • Changedconvert_edifact_to_bo4e1 field changed
      • changedInput schema / $defs / EdifactFormatVersion / enum
        Previous value: -[
        -  "FV2104",
        -  "FV2110",
        -  "FV2210",
        -  "FV2304",
        -  "FV2310",
        -  "FV2404",
        -  "FV2410",
        -  "FV2504",
        -  "FV2510",
        -  "FV2604"
        -]New value: +[
        +  "FV2104",
        +  "FV2110",
        +  "FV2210",
        +  "FV2304",
        +  "FV2310",
        +  "FV2404",
        +  "FV2410",
        +  "FV2504",
        +  "FV2510",
        +  "FV2604",
        +  "FV2610"
        +]
  3. 2 tool updates
    • First observedconvert_bo4e_to_edifact
    • First observedconvert_edifact_to_bo4e

TDQS

A3.6/5.0
Disambiguation5/5

The two tools serve opposite directions (BO4E to EDIFACT and vice versa), so there is no ambiguity. An agent can select the correct one based on the desired conversion direction.

Naming Consistency5/5

Both tools follow the exact same naming pattern: 'convert_<source>_to_<target>', which is clear and consistent.

Tool Count5/5

Two tools are perfectly appropriate for a focused bidirectional converter. The scope is narrow and complete, with no need for additional tools.

Completeness5/5

The tool set covers the full conversion cycle: both directions are implemented, so there are no gaps for this domain.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    87+ specialized tools for German and European energy data. Direct AI access to Marktstammdatenregister (MaStR), ENTSO-E, Redispatch 2.0, and Grid Operations for utilities and datacenters.
    2
    GPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying German distribution grid operator data from vnbdigital.de and BDEW register, including lookup by ID, postcode, coordinates, and free-text search.
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables natural language management of BOQ/Tendix project data, including hierarchy, pricing, and contractor handling via the BOQ REST API.
    19
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Hochfrequenz/TransformerBee.mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server