Fipsign Mcp Python — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Fipsign Mcp Python (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server for FIPSign — post-quantum digital signing via ML-DSA-65 (NIST FIPS 204).
Gives Claude Desktop, Claude Code, and any MCP-compatible AI agent full access to the FIPSign API without writing code: sign payloads, verify tokens, issue and revoke post-quantum certificates, and monitor usage.
| Tool | Description | Token cost |
|---|---|---|
fipsign_health | Check service status | free |
fipsign_public_key | Get the server's ML-DSA-65 public key | free |
fipsign_sign | Sign any payload | 1 token |
fipsign_verify | Verify a signed token | 1 token |
fipsign_revoke | Permanently revoke a token | 1 token |
fipsign_usage | Get token balance and usage history | free |
fipsign_generate_key_pair | Generate an ML-DSA-65 key pair locally | free |
fipsign_ca_issue | Issue a post-quantum certificate | 1 token |
fipsign_ca_revoke_cert | Revoke a certificate | 1 token |
fipsign_ca_get_cert | Get certificate status by ID | free |
fipsign_ca_get_crl | Get the Certificate Revocation List | free |
The Inspector opens a browser UI where you can call each tool manually and inspect responses without Claude Desktop.
git clone https://github.com/fipsign/fipsign-mcp-python
cd fipsign-mcp-python
pip install -e .
export FIPSIGN_API_KEY=pqa_your_real_key
npx @modelcontextprotocol/inspector python -m fipsign_mcp.serverOpen the URL shown in the terminal (typically http://localhost:5173). Select a tool, fill in the parameters, and run it.
Install in editable mode, then point Claude Desktop at the module:
pip install -e .Add to your claude_desktop_config.json (see path below):
{
"mcpServers": {
"fipsign": {
"command": "python",
"args": ["-m", "fipsign_mcp.server"],
"env": {
"FIPSIGN_API_KEY": "pqa_your_real_key"
}
}
}
}{
"mcpServers": {
"fipsign": {
"command": "uvx",
"args": ["fipsign-mcp"],
"env": {
"FIPSIGN_API_KEY": "pqa_your_real_key"
}
}
}
}Or with pip-installed package:
{
"mcpServers": {
"fipsign": {
"command": "fipsign-mcp",
"env": {
"FIPSIGN_API_KEY": "pqa_your_real_key"
}
}
}
}claude_desktop_config.json is located at:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonAdd the fipsign entry inside mcpServers (create the file if it doesn't exist):
{
"mcpServers": {
"fipsign": {
"command": "uvx",
"args": ["fipsign-mcp"],
"env": {
"FIPSIGN_API_KEY": "pqa_your_real_key"
}
}
}
}Restart Claude Desktop after editing the config.
claude mcp add fipsign -- env FIPSIGN_API_KEY=pqa_your_real_key uvx fipsign-mcpOr manually in your project's .claude/mcp.json:
{
"mcpServers": {
"fipsign": {
"command": "uvx",
"args": ["fipsign-mcp"],
"env": {
"FIPSIGN_API_KEY": "pqa_your_real_key"
}
}
}
}| Variable | Required | Default | Description |
|---|---|---|---|
FIPSIGN_API_KEY | Yes (for most tools) | — | Your FIPSign API key. Format: pqa_ + 64 lowercase hex chars. Get one at app.fipsign.dev. |
FIPSIGN_BASE_URL | No | https://api.fipsign.dev | Override API base URL (useful for self-hosted instances or local dev). |
fipsign_health, fipsign_public_key, and fipsign_generate_key_pair work without an API key.
fipsign_generate_key_pair returns the secretKey as the 32-byte ML-DSA-65 seed (base64), not the 4032-byte expanded key returned by the JS SDK's generateKeyPair(). The publicKey (1952 bytes) is identical in both SDKs and fully compatible with fipsign_ca_issue.
This difference only matters if you need to sign data locally on a Python device using the returned secretKey:
from cryptography.hazmat.primitives.asymmetric.mldsa import MLDSA65PrivateKey
import base64
private_key = MLDSA65PrivateKey.from_seed_bytes(base64.b64decode(secret_key))
signature = private_key.sign(message)Once configured, you can ask Claude:
Signing:
Certificates:
Monitoring:
pip install build twine
python -m build
twine upload dist/*~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.