pkinative MCP — X.509, CMS, OCSP, time-stamps and PKCS#12 without a key byte leaving
io.github.Nizoka/pkinative-mcp · v1.0.0
PKI MCP server: inspect, verify, issue, sign X.509, CSR, CRL, OCSP, CMS, TSP, PKCS#12. 34 tools
Connect Runs on your machine
claude mcp add pkinative-mcp -e PKINATIVE_MCP_OUTPUT_DIR=<PKINATIVE_MCP_OUTPUT_DIR> -e PKINATIVE_MCP_CACHE_DIR=<PKINATIVE_MCP_CACHE_DIR> -e PKINATIVE_MCP_PORT=<PKINATIVE_MCP_PORT> -e PKINATIVE_MCP_HTTP_TOKEN=<PKINATIVE_MCP_HTTP_TOKEN> -e PKINATIVE_MCP_PASSWORD=<PKINATIVE_MCP_PASSWORD> -e PKINATIVE_MCP_AT=<PKINATIVE_MCP_AT> -e PKINATIVE_MCP_MAX_INPUT_BYTES=<PKINATIVE_MCP_MAX_INPUT_BYTES> -e PKINATIVE_MCP_MAX_KDF_ITERATIONS=<PKINATIVE_MCP_MAX_KDF_ITERATIONS> -e PKINATIVE_MCP_MAX_PATHS_EXPLORED=<PKINATIVE_MCP_MAX_PATHS_EXPLORED> -- npx -y [email protected]
{
"mcpServers": {
"pkinative-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"PKINATIVE_MCP_OUTPUT_DIR": "<PKINATIVE_MCP_OUTPUT_DIR>",
"PKINATIVE_MCP_CACHE_DIR": "<PKINATIVE_MCP_CACHE_DIR>",
"PKINATIVE_MCP_PORT": "<PKINATIVE_MCP_PORT>",
"PKINATIVE_MCP_HTTP_TOKEN": "<PKINATIVE_MCP_HTTP_TOKEN>",
"PKINATIVE_MCP_PASSWORD": "<PKINATIVE_MCP_PASSWORD>",
"PKINATIVE_MCP_AT": "<PKINATIVE_MCP_AT>",
"PKINATIVE_MCP_MAX_INPUT_BYTES": "<PKINATIVE_MCP_MAX_INPUT_BYTES>",
"PKINATIVE_MCP_MAX_KDF_ITERATIONS": "<PKINATIVE_MCP_MAX_KDF_ITERATIONS>",
"PKINATIVE_MCP_MAX_PATHS_EXPLORED": "<PKINATIVE_MCP_MAX_PATHS_EXPLORED>"
}
}
}
}
{
"mcpServers": {
"pkinative-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"PKINATIVE_MCP_OUTPUT_DIR": "<PKINATIVE_MCP_OUTPUT_DIR>",
"PKINATIVE_MCP_CACHE_DIR": "<PKINATIVE_MCP_CACHE_DIR>",
"PKINATIVE_MCP_PORT": "<PKINATIVE_MCP_PORT>",
"PKINATIVE_MCP_HTTP_TOKEN": "<PKINATIVE_MCP_HTTP_TOKEN>",
"PKINATIVE_MCP_PASSWORD": "<PKINATIVE_MCP_PASSWORD>",
"PKINATIVE_MCP_AT": "<PKINATIVE_MCP_AT>",
"PKINATIVE_MCP_MAX_INPUT_BYTES": "<PKINATIVE_MCP_MAX_INPUT_BYTES>",
"PKINATIVE_MCP_MAX_KDF_ITERATIONS": "<PKINATIVE_MCP_MAX_KDF_ITERATIONS>",
"PKINATIVE_MCP_MAX_PATHS_EXPLORED": "<PKINATIVE_MCP_MAX_PATHS_EXPLORED>"
}
}
}
}
{
"servers": {
"pkinative-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"PKINATIVE_MCP_OUTPUT_DIR": "<PKINATIVE_MCP_OUTPUT_DIR>",
"PKINATIVE_MCP_CACHE_DIR": "<PKINATIVE_MCP_CACHE_DIR>",
"PKINATIVE_MCP_PORT": "<PKINATIVE_MCP_PORT>",
"PKINATIVE_MCP_HTTP_TOKEN": "<PKINATIVE_MCP_HTTP_TOKEN>",
"PKINATIVE_MCP_PASSWORD": "<PKINATIVE_MCP_PASSWORD>",
"PKINATIVE_MCP_AT": "<PKINATIVE_MCP_AT>",
"PKINATIVE_MCP_MAX_INPUT_BYTES": "<PKINATIVE_MCP_MAX_INPUT_BYTES>",
"PKINATIVE_MCP_MAX_KDF_ITERATIONS": "<PKINATIVE_MCP_MAX_KDF_ITERATIONS>",
"PKINATIVE_MCP_MAX_PATHS_EXPLORED": "<PKINATIVE_MCP_MAX_PATHS_EXPLORED>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
PKINATIVE_MCP_OUTPUT_DIROptional | Absolute path of the one sandbox directory: path inputs are read from it and outputMode='file' outputs are written under it (never overwritten; the real path of every file read and of every parent written must stay inside — a planted symlink or junction is SECURITY_VIOLATION). Key-bearing files (.k… |
PKINATIVE_MCP_CACHE_DIROptional | Opt-in content-addressed response cache directory (SHA-256 keyed, 1h TTL, 256 MiB LRU, plaintext at rest). Never caches path inputs, file output, a call carrying a password or a signer, a clock-dependent instant, a random serial or nonce, describe_engine or draft_governance_issue. |
PKINATIVE_MCP_PORTOptional | Serve Streamable HTTP on this loopback port (POST /mcp) instead of stdio (MCP 2026-07-28, stateless, legacy fallback). Unauthenticated unless PKINATIVE_MCP_HTTP_TOKEN is set. |
PKINATIVE_MCP_HTTP_TOKENOptional, secret | Opt-in bearer token for the HTTP transport (>= 16 chars, no whitespace; a weaker value refuses to start). When set, /mcp requires 'Authorization: Bearer <token>' or answers 401. Compared constant-time, never logged. |
PKINATIVE_MCP_PASSWORDOptional, secret | Operator-side password of the encrypted PKCS#8 key or PKCS#12 file the tools open (keeps the secret out of the model transcript). Exclusive with the per-call password input (both at once is VALIDATION_ERROR). Never logged; only its presence is reported at startup. |
PKINATIVE_MCP_ATOptional | Pinned instant (ISO 8601 or epoch milliseconds) every omitted at / notBefore / signingTime falls back to, for reproducible verdicts and artefacts. Unset: the wall clock (a clock-dependent result is never cached). An invalid value refuses to start. |
PKINATIVE_MCP_MAX_INPUT_BYTESOptional | Operator ceiling for limits.maxInputBytes and the decoded size of one PKI object (default 67108864 = 64 MiB, the engine default). Integer >= 1024, read once at startup; an invalid value refuses to start. A per-call value above it is refused with LIMIT_CEILING_EXCEEDED. |
PKINATIVE_MCP_MAX_KDF_ITERATIONSOptional | Operator ceiling for limits.maxKdfIterations and limits.maxPkcs12KdfIterations (default 10000000, the engine default): the CPU bound of a hostile PBES2 key or PKCS#12 file. Integer >= 1, read once at startup; an invalid value refuses to start. |
PKINATIVE_MCP_MAX_PATHS_EXPLOREDOptional | Operator ceiling for limits.maxPathsExplored (default 1000, the engine default): the RFC 5280 section 6 path-building work bound. Integer >= 1, read once at startup; an invalid value refuses to start. |
Details
| Package | [email protected] (NPM, stdio) |
| First published | 17 Oct 2026 |
| Last updated | 17 Oct 2026 |
| Registry name | io.github.Nizoka/pkinative-mcp |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
