Yes, there's jinja2 templating. Here's a starting point you can use for a custom link (I haven't tested it for a while but I think it should still be OK):
Text:
{% if obj.vc_interfaces.filter(mgmt_only=True).count() == 1 and obj.vc_interfaces.get(mgmt_only=True).ip_addresses.count() == 1 %}Open IPMI{% endif %}
URL:
https://{{ obj.vc_interfaces.get(mgmt_only=True).ip_addresses.first().address.ip }}/
This example doesn't do exactly what you ask: rather than looking for interfaces with name "bmc", it looks for interfaces with the "mgmt_only" flag set to true (which IMO is a better way of doing this). But it could be modified to do that - just change the filter(...) and get(...) conditions.
The "Text" is the label of the button. If it expands to empty string, the button is not displayed. Here it's only displayed if there's exactly one interface which meets that condition, and if that interface has exactly one IP address.
The "URL" is the target URL of the button. It gets the IP address without netmask by using ".address.ip"