Self-signed certificates and MCP tools: pin it, don't skip it
Calling a self-hosted server like Proxmox or GitLab from an MCP tool? Fix the certificate error safely: get a public certificate, or trust its exact fingerprint.

In this post
- Why the call is refused
- Fix 1: a public certificate
- Fix 2: trust its exact certificate
- When the certificate changes
Self-hosted servers such as Proxmox, GitLab or a home lab box often use a certificate they made themselves. Call one from a tool and Glxymesh refuses it. That's on purpose.
Why the call is refused#
A self-made certificate is usually issued for a name like pve3a-01, not the address the tool calls. Nothing proves the server is really yours, so anyone between Glxymesh and your server could answer in its place and read your API token.
Fix 1: give the server a public certificate#
Point a DNS name at the server and get a free certificate from Let's Encrypt. Proxmox has this built in under Certificates → ACME. Then call the server by that name. This is the best fix: nothing to update when the certificate renews.
Fix 2: trust its exact certificate#
The refusal shows the certificate's SHA-256 fingerprint. Put it under network.trust, for the same host you wrote in network.allow:
network:
allow: ["{PROXMOX_HOST}"]
trust:
"{PROXMOX_HOST}": "3F:9A:1C:D2:7E:40:B8:65:0D:E1:5A:93:C4:2F:78:B6:11:AE:0C:5D:F3:92:67:4B:E8:D0:1A:7C:39:B5:62:F4"From then on, Glxymesh accepts that one certificate from that server, and no other. A person approves it before it's used, just like a new host.
Before you approve, check the fingerprint against the server's own. On Proxmox, see the node's System → Certificates, or run:
$ openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -fingerprint -sha256When the certificate changes#
When the server's certificate is renewed or replaced, calls fail until the new fingerprint is in tool.yml and approved. If that happens often, switch to Fix 1.
Also worth knowing#
- The address must be reachable from the internet. Private addresses like
192.168.x.xare refused in production. - Keep the server's address in the vault as
{PROXMOX_HOST}, so it isn't written into your code. - Every tool call leaves from one public IP. Ask support for it to allow-list Glxymesh on your firewall.
More on hosts, keys and your own servers: Keys and network access.
Explore MCP guides by task: creation, hosting, connections and security.


