Repository navigation
Upstream TLS
github-actions[bot] edited this page Oct 11, 2026
·
1 revision
Internal MCP servers often use certificates from a private CA or self-signed ones. Give the upstream a tls block
instead of weakening verification:
{
"tls": {
"caPem": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n",
"serverName": "mcp.internal.example",
"clientCertPem": "-----BEGIN CERTIFICATE-----...",
"clientKeyPem": "-----BEGIN EC PRIVATE KEY-----..."
}
}| Field | Behaviour |
|---|---|
caPem |
PEM bundle (up to 10 certificates, 64 KiB). It becomes the only trusted root for this upstream, not a global trust store. A self-signed server certificate can be used directly as the CA |
serverName |
Host name used for SNI and certificate verification. Needed when you connect by IP or an alias that is not in the certificate |
clientCertPem + clientKeyPem
|
Client certificate for mutual TLS. Must be a valid pair |
Applies everywhere vMCP connects: tool discovery, connection tests, health checks and agent sessions.
- There is no "skip verification" option, by design.
-
clientKeyPemis encrypted at rest, write-only, and never returned or exported. If you omit it while keeping the same certificate, the stored key is kept; clearingclientCertPemalso clears the key. -
PUT/POSTreplace the whole block (omit it to keep the stored one);PATCHmerges per field and""clears a field. - Export/apply carry
caPem,serverNameandclientCertPem, never the key. - The UI shows each CA certificate's subject and expiry (and flags expired ones). Renew certificates before they expire: connections fail once they do.
| Symptom | Likely cause |
|---|---|
x509: certificate signed by unknown authority |
Missing or wrong caPem
|
x509: certificate is valid for X, not Y |
Connecting by IP/alias: set serverName to a name in the certificate |
remote error: tls: certificate required |
Server needs mTLS: add the client certificate and key |
| Connection test fails for an mTLS upstream in the UI but the stored upstream works | The test can only use a key you pasted in this session; stored keys cannot be read back |
vMCP is licensed under Apache-2.0. This wiki is generated from the docs/ folder of the repository: send documentation fixes as pull requests, not wiki edits.
- Getting started
- Guided setup and client connections
- Installation options
- Kubernetes quickstart
- Install a published release
- Upstreams
- Virtual servers
- Resources and prompts
- Agent keys and authentication
- OAuth for agents
- SSO and roles
- Tool policies
- PII masking
- Rate limits
- Audit log
- FAQ and troubleshooting