Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
PKI MCP server: inspect, verify, issue, sign X.509, CSR, CRL, OCSP, CMS, TSP, PKCS#12. 34 tools
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
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_EXPLORED「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、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"
}
}
}
}ターミナルでこれを実行します
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-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.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"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"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"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
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 envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Nizoka で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:PKINATIVE_MCP_HTTP_TOKEN, PKINATIVE_MCP_PASSWORD
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.0)がレジストリに届いたのは22 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Statuser
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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.
Monitor services, manage incidents and status pages in Statuser.cloud from your AI assistant.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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
冒頭だけを表示しています。続きはリポジトリで読めます