Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
PKI MCP server: inspect, verify, issue, sign X.509, CSR, CRL, OCSP, CMS, TSP, PKCS#12. 34 tools
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
PKINATIVE_MCP_OUTPUT_DIR, PKINATIVE_MCP_CACHE_DIR, PKINATIVE_MCP_PORT, PKINATIVE_MCP_HTTP_TOKEN, PKINATIVE_MCP_PASSWORD, PKINATIVE_MCP_AT, PKINATIVE_MCP_MAX_INPUT_BYTES, PKINATIVE_MCP_MAX_KDF_ITERATIONS, PKINATIVE_MCP_MAX_PATHS_EXPLOREDLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"pkinative": {
"command": "npx",
"args": [
"-y",
"pkinative-mcp"
],
"env": {
"PKINATIVE_MCP_OUTPUT_DIR": "your-value",
"PKINATIVE_MCP_CACHE_DIR": "your-value",
"PKINATIVE_MCP_PORT": "your-value",
"PKINATIVE_MCP_HTTP_TOKEN": "your-value",
"PKINATIVE_MCP_PASSWORD": "your-value",
"PKINATIVE_MCP_AT": "your-value",
"PKINATIVE_MCP_MAX_INPUT_BYTES": "your-value",
"PKINATIVE_MCP_MAX_KDF_ITERATIONS": "your-value",
"PKINATIVE_MCP_MAX_PATHS_EXPLORED": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add pkinative --env PKINATIVE_MCP_OUTPUT_DIR=your-value --env PKINATIVE_MCP_CACHE_DIR=your-value --env PKINATIVE_MCP_PORT=your-value --env PKINATIVE_MCP_HTTP_TOKEN=your-value --env PKINATIVE_MCP_PASSWORD=your-value --env PKINATIVE_MCP_AT=your-value --env PKINATIVE_MCP_MAX_INPUT_BYTES=your-value --env PKINATIVE_MCP_MAX_KDF_ITERATIONS=your-value --env PKINATIVE_MCP_MAX_PATHS_EXPLORED=your-value -- npx -y pkinative-mcpCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"pkinative": {
"command": "npx",
"args": [
"-y",
"pkinative-mcp"
],
"env": {
"PKINATIVE_MCP_OUTPUT_DIR": "your-value",
"PKINATIVE_MCP_CACHE_DIR": "your-value",
"PKINATIVE_MCP_PORT": "your-value",
"PKINATIVE_MCP_HTTP_TOKEN": "your-value",
"PKINATIVE_MCP_PASSWORD": "your-value",
"PKINATIVE_MCP_AT": "your-value",
"PKINATIVE_MCP_MAX_INPUT_BYTES": "your-value",
"PKINATIVE_MCP_MAX_KDF_ITERATIONS": "your-value",
"PKINATIVE_MCP_MAX_PATHS_EXPLORED": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"pkinative": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"pkinative-mcp"
],
"env": {
"PKINATIVE_MCP_OUTPUT_DIR": "your-value",
"PKINATIVE_MCP_CACHE_DIR": "your-value",
"PKINATIVE_MCP_PORT": "your-value",
"PKINATIVE_MCP_HTTP_TOKEN": "your-value",
"PKINATIVE_MCP_PASSWORD": "your-value",
"PKINATIVE_MCP_AT": "your-value",
"PKINATIVE_MCP_MAX_INPUT_BYTES": "your-value",
"PKINATIVE_MCP_MAX_KDF_ITERATIONS": "your-value",
"PKINATIVE_MCP_MAX_PATHS_EXPLORED": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
PKINATIVE_MCP_OUTPUT_DIR envPKINATIVE_MCP_CACHE_DIR envPKINATIVE_MCP_PORT envPKINATIVE_MCP_AT envPKINATIVE_MCP_MAX_INPUT_BYTES envPKINATIVE_MCP_MAX_KDF_ITERATIONS envPKINATIVE_MCP_MAX_PATHS_EXPLORED envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 9 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub Nizoka, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: PKINATIVE_MCP_HTTP_TOKEN, PKINATIVE_MCP_PASSWORD
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (1.0.0) llegó al registro hace 22 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, CloudGPU MCP
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Rent a per-minute GPU from your MCP client, run a job, download results, shut it down.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
MCP server for PKI — inspect and verify X.509 certificates, CSRs, CRLs, OCSP responses, CMS SignedData and RFC 3161 time-stamps; build and validate certificate chains (RFC 5280 path validation, name and purpose checks, offline CRL and OCSP revocation); create certificates, CSRs, CMS signatures, OCSP and time-stamp requests; open PKCS#8 and PKCS#12 without ever returning a key byte; decode ASN.1, PEM and OIDs — 34 tools and 7 prompts on the pkinative engine (zero-dependency, pure TypeScript, Web Crypto for every signature; OpenSSL 3 interoperability validated in CI), for Claude Desktop, Cursor, ChatGPT and any Model Context Protocol client. No network, ever.
pkinative-mcp exposes 34 tools to any MCP host, in six groups. The kind says how the result is shaped: a *read* tool returns facts (structuredContent, projectable with verbosity / fields); a *verdict* tool returns valid + reasons[] and is never `isError` for a negative verdict; an *artefact* tool delivers DER or PEM once, inline or into the sandbox. The last column names the refusal codes an agent branches on (the full table is in docs/AGENT_CONTRACT.md).
| Tool | Kind | What it does | Key refusal codes |
|---|---|---|---|
convert_pem | read | mode: 'decode' lists every block of a PEM text (label, DER size, offset, SHA-256) and extractIndex delivers one as DER / PEM / hex; mode: 'encode' wraps exactly one DER value into one strict RFC 7468 block under label. A private-key block is listed, never extracted and never produced; key material anywhere in the input is refused. | SECURITY_VIOLATION, NOT_FOUND, VALIDATION_ERROR, PKI_PEM_UNEXPECTED_LABEL, PKI_PEM_* |
resolve_oid | read | Object identifiers in one call: name (registered names, ≤ 1000 per call), validate (X.660 grammar, reported never thrown), list (the engine registry, paged 200 / 2000), encode (dotted → hex, content or whole TLV, RELATIVE-OID), decode (hex → dotted + name). | VALIDATION_ERROR, PKI_OID_INVALID, PKI_ASN1_* |
compute_fingerprint | read | fingerprint of the exact DER (SHA-256 default; SHA-1 / 384 / 512), key-id (the RFC 5280 §4.2.1.2 identifier of the public key of a certificate, CSR or PUBLIC KEY), shake256 (outputLength bytes, the Ed448 CMS digest). Any object may be digested; no input byte is returned. | VALIDATION_ERROR, PKI_X509_*, PKI_ASN1_* |
decode_asn1 | read | The X.690 node tree of any DER (BER with encodingRules: 'ber'): offsets, tags, previews, OID names, ≤ 20 000 nodes; nodePath narrows to a subtree, read applies a typed reader, reencode: true re-encodes the node as an artefact. Refuses a private key or a PKCS#12 (by label, or when the DER parses as one). | SECURITY_VIOLATION, NOT_FOUND, PKI_ASN1_UNEXPECTED_TAG, PKI_API_MISUSE, PKI_ASN1_* |
encode_asn1 | artefact | A JSON node spec (boolean, integer, bit-string, octet-string, oid, string, time, sequence / set / set-of, explicit / implicit, tlv, der) encoded to DER through the engine's own encoders — deterministic; the inverse of decode_asn1. | VALIDATION_ERROR (naming the JSON path), SECURITY_VIOLATION, PKI_LIMIT_EXCEEDED, PKI_ASN1_*, PKI_OID_INVALID |
| Tool | Kind | What it does | Key refusal codes |
|---|---|---|---|
inspect_certificate | read | The RFC 5280 report of one certificate: serial, algorithms, issuer / subject (RFC 4514 + RDNs), validity, public key, the 19 extension kinds decoded (rawExtensions: true keeps them raw), fingerprints, diagnostics; extension returns one; issuer / checkSelfSignature adds one signature check — which is not trust. | NOT_FOUND, PKI_PEM_UNEXPECTED_LABEL, PKI_X509_*, PKI_CRYPTO_ALGORITHM_REFUSED |
create_certificate | artefact | Issue an X.509 v3 certificate from spec (subject, validity, extensions), signed by signer (a PKCS#8 key or a PKCS#12 file imported as a non-extractable Web Crypto key): self-signed CA, or a leaf issued from a certificate / CSR / PUBLIC KEY. Serial 'random' by default; verified against the issuer before the bytes return. | KEY_MISMATCH, RSA_SCHEME_REQUIRED, KEY_TYPE_REQUIRED, SECRET_REQUIRED, UNSUPPORTED_KEY, VALIDATION_ERROR |
encode_x509_structure | artefact | One X.509 building block (name, validity, spki, algorithm-identifier, extension(s), basic-constraints, key-usage, extended-key-usage, subject-alt-name, SKI / AKI, signature-algorithm) encoded deterministically from a closed spec; hex by default. Nothing here signs. | VALIDATION_ERROR (naming the member), KEY_TYPE_REQUIRED, SECRET_REQUIRED, RSA_SCHEME_REQUIRED |
decode_extension | read | One extnValue content (hex or DER) decoded by its OID exactly as inspect_certificate would; critical is checked against the kind's RFC 5280 rule (a diagnostic, not a refusal). | PKI_X509_EXTENSION_MALFORMED, VALIDATION_ERROR |
check_certificate_name | verdict | The RFC 6125 identity verdict: certificate + host / ip (SAN dNSName / iPAddress, wildcards, an opt-in CN fallback held to the chain's name constraints), or the match form presented + reference with no certificate. | PKI_REASON_NAME_MISMATCH (in reasons[]), VALIDATION_ERROR |
check_certificate_purpose | verdict | May certificate be used for purpose (serverAuth, clientAuth, codeSigning, emailProtection, timeStamping, ocspSigning, any, or an OID) along [certificate, ...chain]? restrictIssuers (default true) applies a CA's own EKU to what it issued. | PKI_REASON_PURPOSE_NOT_PERMITTED (in reasons[]), VALIDATION_ERROR |
inspect_csr | read | The RFC 2986 report of one PKCS#10 request: subject, key, attributes, the extensions requested, whether a challengePassword is present (never its text), and by default the proof of possession (signature.valid). | PKI_REASON_SIGNATURE_NOT_CHECKED (in reasons[]), PKI_X509_*, PKI_PEM_UNEXPECTED_LABEL |
create_csr | artefact | A PKCS#10 request from spec (subject, the extensions to request) signed by signer; the public key is derived from a plain key, taken from the PKCS#12 certificate or given as subjectPublicKey; the proof of possession is verified before the bytes return. | KEY_MISMATCH, RSA_SCHEME_REQUIRED, SECRET_REQUIRED, KEY_TYPE_REQUIRED, VALIDATION_ERROR |
| Tool | Kind | What it does | Key refusal codes |
|---|---|---|---|
verify_certificate_chain | verdict | The one-call trust verdict: a path from leaf through candidates to one of your trustAnchors, every signature verified, RFC 5280 §6 validation at at (validity, constraints, key usage, names, policies), serverName (RFC 6125) and purposes, and revocation from the CRL / OCSP bytes you supply (requireRevocation demands evidence for the end-entity certificate). | PKI_REASON_* in reasons[] (NO_TRUST_ANCHOR, EXPIRED, NOT_YET_VALID, REVOKED, REVOCATION_UNKNOWN, NAME_MISMATCH, …), VALIDATION_ERROR |
build_certificate_path | verdict | Path discovery only: which intermediates lead from leaf to an anchor under the structural rules at at. No signature is checked — valid is always false, the verdict is found and structuralReasons. | PKI_REASON_SIGNATURE_NOT_CHECKED (always), PKI_REASON_NO_TRUST_ANCHOR |
validate_certificate_path | verdict | RFC 5280 §6.1 validation of a path you ordered (leaf first) against your anchors at at; every link signature verified first (checkSignatures: false gives the structural verdict with failingReasons). No revocation here. | PKI_REASON_SIGNATURE_INVALID, PKI_REASON_SIGNATURE_NOT_CHECKED, VALIDATION_ERROR |
inspect_crl | read | The RFC 5280 §5 report of one CRL: issuer, updates, CRL number, delta indicator, IDP, entry count (walked, never all decoded), extensions; find looks one serial up; issuer adds one signature check. | VALIDATION_ERROR, PKI_X509_*, PKI_CRYPTO_ALGORITHM_REFUSED |
check_crl_revocation | verdict | One certificate against one base crl (and an optional delta) you fetched, at at: scope, freshness (staleTolerance), the signature verified against issuer, the serial looked up. A delta whose signature does not verify against issuer is not applied: valid: false with PKI_REASON_REVOCATION_UNKNOWN on delta. | PKI_REASON_REVOKED, PKI_REASON_REVOCATION_UNKNOWN (in reasons[]), VALIDATION_ERROR (a delta without deltaCRLIndicator) |
create_ocsp_request | artefact | The DER OCSPRequest (RFC 6960) for certificate under issuer: CertID with SHA-1 (default) or SHA-256, an RFC 8954 nonce ('random' or hex), certIdOnly. You POST the bytes to the responder; summary.nonceHex / certIdHex match the answer. | VALIDATION_ERROR |
inspect_ocsp_response | read | The RFC 6960 report of one response: status, responder id, producedAt, every SingleResponse (CertID, status, updates), extensions, embedded certificates, nonce presence; responder adds one signature check. | PKI_* (PKI_ASN1_*, PKI_X509_*), VALIDATION_ERROR |
check_ocsp_status | verdict | One response for one certificate: the CertID recomputed from issuer, the signature verified (responder, the embedded certificates or the issuer), the signer authorised (RFC 6960 §4.2.2.2), status, freshness at at, nonce (nonce, requireNonce). | PKI_REASON_REVOKED and the other PKI_REASON_* in reasons[], VALIDATION_ERROR |
| Tool | Kind | What it does | Key refusal codes |
|---|---|---|---|
sign_cms | artefact | An RFC 5652 SignedData over content (attached or detached) or a precomputed contentDigest, one signer (PKCS#8 key or PKCS#12), certificate, chain and crls parsed then embedded; signed attributes always written (contentType, messageDigest, signingTime, SigningCertificateV2, CMSAlgorithmProtection); verified against the signer certificate before the bytes return. | KEY_MISMATCH, RSA_SCHEME_REQUIRED, SECRET_REQUIRED, VALIDATION_ERROR, PKI_API_MISUSE, ENGINE_ERROR |
| verify_cms | verdict | The one-call verdict on a SignedData: for every signer the signed attributes, the content digest (att
Solo se muestra el principio; lee el resto en el repo