Saltar al contenido
ecdsa.com

Servidor MCP

El Model Context Protocol (MCP) permite a los agentes de IA y a los asistentes de los IDE invocar herramientas. El servidor de ecdsa.com les da las operaciones de la API y los catálogos de referencia del sitio, para que un asistente pueda verificar una firma o explicar un error de TLS en lugar de adivinar.

Endpoint

https://ecdsa.com/api/mcp

Streamable HTTP, sin estado: sin sesiones y sin nada que instalar. Funciona cualquier cliente MCP que se conecte a servidores remotos.

No hace falta clave de API: todas las herramientas funcionan de forma anónima. Las claves de API, cuando lleguen con las cuentas, harán que las llamadas pasen del límite por IP al límite propio de la clave.

Conectar un cliente

Claude Code

El primer comando añade el servidor solo para ti; con --scope project se guarda en el .mcp.json del repositorio y funciona para todos los que abran el proyecto.

Terminal
claude mcp add --transport http ecdsa https://ecdsa.com/api/mcp
claude mcp add --transport http ecdsa --scope project https://ecdsa.com/api/mcp
.mcp.json
{
  "mcpServers": {
    "ecdsa": {
      "type": "http",
      "url": "https://ecdsa.com/api/mcp"
    }
  }
}
Con una clave de API

Para cuando las claves de API estén disponibles. No pongas la clave en archivos que incluyas en un commit.

Añade la clave con el ámbito local, donde se queda en tu equipo: una entrada local sustituye a la compartida del mismo nombre, solo para ti.

Terminal
claude mcp add --transport http ecdsa https://ecdsa.com/api/mcp \
  --header "Authorization: Bearer ecdsa_live_…"

Claude Desktop y claude.ai

Personalizar → Conectores → Añadir → Añadir conector personalizado. URL https://ecdsa.com/api/mcp, autenticación: Sin inicio de sesión. Los conectores pertenecen a tu cuenta de Claude, así que uno añadido en claude.ai también funciona en Claude Desktop; el plan gratuito permite un conector personalizado.

Con una clave de API

Para cuando las claves de API estén disponibles. No pongas la clave en archivos que incluyas en un commit.

Si el cuadro de diálogo del conector ofrece la opción Encabezados de solicitud, añade Authorization con el valor Bearer ecdsa_live_…; si todavía no la ofrece, usa el puente stdio de abajo con su opción --header. Los conectores llaman desde la nube de Anthropic, así que, sin clave, todos sus usuarios comparten un mismo cupo por IP.

Cursor

En ~/.cursor/mcp.json para todos los proyectos o en .cursor/mcp.json para uno solo:

mcp.json
{
  "mcpServers": {
    "ecdsa": {
      "url": "https://ecdsa.com/api/mcp"
    }
  }
}
Con una clave de API

Para cuando las claves de API estén disponibles. No pongas la clave en archivos que incluyas en un commit.

Para una clave, es preferible el archivo global. Cursor rellena ECDSA_API_KEY a partir del entorno, así que la variable debe estar definida.

~/.cursor/mcp.json
{
  "mcpServers": {
    "ecdsa": {
      "url": "https://ecdsa.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:ECDSA_API_KEY}"
      }
    }
  }
}

VS Code

En el .vscode/mcp.json del espacio de trabajo o desde la línea de comandos:

.vscode/mcp.json
{
  "servers": {
    "ecdsa": {
      "type": "http",
      "url": "https://ecdsa.com/api/mcp"
    }
  }
}
Terminal
code --add-mcp '{"name":"ecdsa","type":"http","url":"https://ecdsa.com/api/mcp"}'
Con una clave de API

Para cuando las claves de API estén disponibles. No pongas la clave en archivos que incluyas en un commit.

VS Code pide la clave la primera vez que se inicia el servidor y la guarda en su almacenamiento de secretos.

.vscode/mcp.json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "ecdsa-api-key",
      "description": "ecdsa.com API key",
      "password": true
    }
  ],
  "servers": {
    "ecdsa": {
      "type": "http",
      "url": "https://ecdsa.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${input:ecdsa-api-key}"
      }
    }
  }
}

Clientes que solo admiten stdio

Enlázalos con el servidor remoto mediante mcp-remote:

mcp.json
{
  "mcpServers": {
    "ecdsa": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://ecdsa.com/api/mcp"
      ]
    }
  }
}

Herramientas

El servidor ofrece 11 herramientas; la lista se lee aquí de su propio registro y es la misma que devuelve tools/list.

  • verify_signatureVerify an ECDSA signature

    Verifies a signature over a message (or a precomputed digest) against a public key. Curves: P-256, P-384, P-521, secp256k1. Signature formats auto-detected: ASN.1 DER or raw r‖s, in hex, base64 or base64url. Public key formats: PEM SPKI ("PUBLIC KEY"), EC JWK, or a bare SEC1 point in hex/base64. A signature that simply does not verify returns valid: false with HTTP 200; only unparseable input yields 400.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clavePOST/v1/verify

  • convert_signatureConvert a signature between DER and raw r‖s

    Decodes a signature (DER or raw, auto-detected; hex/base64/base64url) and returns both encodings plus r, s and the high-S flag. normalize: "low-s" replaces a high-S s with n − s. Warnings list DER canonicality deviations (BER lengths, missing 0x00 pads, trailing bytes) and curve-ambiguity notes.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clavePOST/v1/convert

  • decode_jwtDecode a JWT (no signature check)

    Decodes a compact JWS token: header, payload, enriched exp/iat/nbf time claims and a classification of the algorithm. The signature is NOT verified — the response carries verified: false explicitly. Use /v1/jwt/verify to check ES* signatures.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clavePOST/v1/jwt/decode

  • verify_jwtVerify an ES256/ES384/ES512 JWT signature

    Verifies the token's ECDSA signature against a public key (PEM SPKI, EC JWK, or bare SEC1 point). Non-ECDSA algorithms (HS*, RS*, PS*, EdDSA, ES256K, none) return 400 with code unsupported_algorithm. A signature that fails verification returns valid: false with HTTP 200. Time claims are noted in explanations but do not affect valid.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clavePOST/v1/jwt/verify

  • decode_certificateDecode an X.509 certificate or chain

    Accepts PEM (one or more CERTIFICATE blocks — a whole chain works) or a single DER certificate as base64/hex. Returns a structured summary per certificate — subject, issuer, validity, key and signature algorithms, SAN, key usage, fingerprint — plus assessments (weak hashes, expiry, CA/Browser Forum lifetime limits, post-quantum notes).

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clavePOST/v1/cert/decode

  • get_domain_healthTLS signature-health grade for a domain

    Connects to the domain on port 443, examines the served certificate chain, key and signature algorithms, protocol versions and lifetimes, and returns a letter grade with findings, plus the leaf certificate's expiry and key algorithm as structured fields. Results are cached for 1 hour. Only public DNS hostnames are accepted — IP addresses, single-label names and private/reserved addresses are refused. Extra rate limit: 10 requests/minute per IP. A fresh scan can take several seconds.

    Solo lectura; se conecta al host que le indiquesÁmbito scan · 5 unidades de cuota por llamada con claveGET/v1/health/{domain}

  • explain_errorExplain an error message

    Looks up an error message from a cryptography, TLS, certificate, JWT, SSH, code-signing or Web3 library in the ecdsa.com error catalog (299 messages, reproduced against the libraries that print them) and returns what it means, its likely causes and step-by-step fixes with code. Paste the message as printed; a whole log excerpt or stack trace works too. Never include private keys or secrets: input containing a private key is refused.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clave

  • lookup_oidLook up an object identifier (OID)

    Resolves an ASN.1 object identifier used in X.509 certificates, CSRs, CMS/PKCS#7, PKCS#8/#12 and post-quantum PKI against the ecdsa.com OID catalog (938 identifiers: curated, IANA SMI arcs, CCADB EV policies). Accepts a dotted OID, its DER encoding in hex, or a name such as prime256v1 or ecdsa-with-SHA256; returns the name, aliases, category, DER encoding, OpenSSL names and references. Unknown OIDs still get their DER encoding and nearest known ancestor.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clave

  • lookup_algorithmLook up a cryptographic algorithm identifier

    Resolves an algorithm identifier against the IANA registries for JOSE and COSE (algorithms, key types, curves), TLS (cipher suites, signature schemes, supported groups), SSH, DNSSEC and HPKE: what it is, its code point, recommendation status, parameters (curve, hash, key size), names in OpenSSL/GnuTLS/NSS and the defining RFCs. Accepts names (ES256, TLS_AES_128_GCM_SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ecdsa-sha2-nistp256, X25519MLKEM768) or code points (-7, 0x0403, 13); `registry` narrows the search.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clave

  • lookup_curveLook up an elliptic curve

    Describes a named elliptic curve from the ecdsa.com curve catalog (54 curves, each checked arithmetically): its names in every standard (SEC 2, NIST, ANSI X9.62, JOSE/COSE, SSH, TLS), OIDs with DER encoding, domain parameters, security level, status (recommended to broken) and where it is used. Accepts any spelling — P-256, secp256r1, prime256v1, nistp256, X25519, Ed25519, brainpoolP256r1 — or the curve's OID.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clave

  • glossaryDefine a cryptography term

    Defines a term from the ecdsa.com glossary (302 terms on signatures, JOSE, PKI, TLS, email authentication, Web3, post-quantum cryptography, identity and supply chain): a one-sentence definition, the explanation from the term's page, references to the standards and related terms, tools and errors.

    Solo lecturaÁmbito api · 1 unidad de cuota por llamada con clave

Límites

Las llamadas anónimas comparten el cupo de la API REST: 60 solicitudes por minuto por IP, más 10 por minuto para get_domain_health, cuyos escaneos reales también consumen los cupos de escaneo compartidos. Los clientes alojados —los conectores de claude.ai y Claude Desktop— llaman desde la nube de Anthropic, así que sus usuarios consumen el mismo cupo por IP y, con un uso intensivo, aparece rate_limited.

Claves privadas

Los argumentos que contienen material de clave privada —un bloque PEM PRIVATE KEY, una clave de OpenSSH, SSH2 o PuTTY, una JWK con «d»— se rechazan con private_key_rejected antes de que ocurra nada más, exactamente igual que en la API REST. Los argumentos nunca se registran.