@signet-auth/mcp-tools 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -5
- package/dist/server.js +2 -4
- package/dist/tools.js +16 -17
- package/package.json +11 -6
- package/server.json +21 -0
package/README.md
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- mcp-name: io.github.prismer-ai/signet-mcp-tools -->
|
|
4
4
|
|
|
5
|
-
Standalone MCP server exposing Signet cryptographic tools over `stdio`.
|
|
5
|
+
Standalone MCP server exposing Signet cryptographic tools over `stdio`. Use it from any MCP-compatible client without embedding Signet directly into your app.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@signet-auth/mcp-tools)
|
|
8
|
+
[](https://github.com/Prismer-AI/signet)
|
|
9
|
+
|
|
10
|
+
Best for:
|
|
11
|
+
|
|
12
|
+
- Plugging Signet into Claude, Codex, or any MCP-compatible client
|
|
13
|
+
- Running signing and verification as an external tool server
|
|
14
|
+
- Quick experiments that need Signet over `stdio`
|
|
15
|
+
|
|
16
|
+
Use another package if:
|
|
17
|
+
|
|
18
|
+
- You want to embed Signet directly into app code: [`@signet-auth/core`](https://www.npmjs.com/package/@signet-auth/core)
|
|
19
|
+
- You want client-side MCP transport signing: [`@signet-auth/mcp`](https://www.npmjs.com/package/@signet-auth/mcp)
|
|
20
|
+
- You want server-side execution-boundary verification: [`@signet-auth/mcp-server`](https://www.npmjs.com/package/@signet-auth/mcp-server)
|
|
6
21
|
|
|
7
22
|
## Tools
|
|
8
23
|
|
|
@@ -11,15 +26,16 @@ Standalone MCP server exposing Signet cryptographic tools over `stdio`.
|
|
|
11
26
|
- `signet_verify`: Verify a Signet receipt against a public key.
|
|
12
27
|
- `signet_content_hash`: Compute the canonical SHA-256 content hash for JSON input.
|
|
13
28
|
|
|
14
|
-
##
|
|
29
|
+
## Quick start
|
|
15
30
|
|
|
16
31
|
```bash
|
|
17
|
-
|
|
32
|
+
npx @signet-auth/mcp-tools
|
|
18
33
|
```
|
|
19
34
|
|
|
20
|
-
|
|
35
|
+
Or install globally:
|
|
21
36
|
|
|
22
37
|
```bash
|
|
38
|
+
npm install -g @signet-auth/mcp-tools
|
|
23
39
|
signet-mcp-tools
|
|
24
40
|
```
|
|
25
41
|
|
|
@@ -48,8 +64,11 @@ io.github.prismer-ai/signet-mcp-tools
|
|
|
48
64
|
|
|
49
65
|
The registry manifest is in [server.json](./server.json).
|
|
50
66
|
|
|
51
|
-
##
|
|
67
|
+
## Related packages
|
|
52
68
|
|
|
69
|
+
- [`@signet-auth/core`](https://www.npmjs.com/package/@signet-auth/core) — lower-level signing and verification primitives
|
|
70
|
+
- [`@signet-auth/mcp`](https://www.npmjs.com/package/@signet-auth/mcp) — sign outbound MCP requests on the client side
|
|
71
|
+
- [`@signet-auth/mcp-server`](https://www.npmjs.com/package/@signet-auth/mcp-server) — verify requests before execution on the server side
|
|
53
72
|
- [Full documentation & all SDKs](https://github.com/Prismer-AI/signet)
|
|
54
73
|
|
|
55
74
|
If Signet is useful to you, [star us on GitHub](https://github.com/Prismer-AI/signet) — it helps others discover the project.
|
package/dist/server.js
CHANGED
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @signet-auth/mcp-tools — Standalone MCP server exposing Signet crypto tools.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* of passing keys through tool arguments. The generate_keypair tool only returns
|
|
8
|
-
* the public key — secret keys should be managed via the Signet CLI keystore.
|
|
5
|
+
* signet_sign reads the secret key from the SIGNET_SECRET_KEY environment
|
|
6
|
+
* variable. Keys are never accepted as tool arguments.
|
|
9
7
|
*/
|
|
10
8
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
11
9
|
import { createSignetToolsServer } from './tools.js';
|
package/dist/tools.js
CHANGED
|
@@ -8,49 +8,48 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
8
8
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
9
9
|
import { generateKeypair, sign, verifyAny, contentHash, } from '@signet-auth/core';
|
|
10
10
|
export function createSignetToolsServer() {
|
|
11
|
-
const server = new Server({ name: 'signet-mcp-tools', version: '0.4.
|
|
11
|
+
const server = new Server({ name: 'signet-mcp-tools', version: '0.4.6' }, { capabilities: { tools: {} } });
|
|
12
12
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
13
13
|
tools: [
|
|
14
14
|
{
|
|
15
15
|
name: 'signet_generate_keypair',
|
|
16
|
-
description: '
|
|
16
|
+
description: 'Create a fresh Ed25519 identity for demos, tests, or agent bootstrapping. Returns JSON with {public_key, note}. The secret key is intentionally not returned by this MCP tool, so use Signet CLI or your own secure key storage for long-lived identities.',
|
|
17
17
|
inputSchema: { type: 'object', properties: {} },
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
name: 'signet_sign',
|
|
21
|
-
description: '
|
|
21
|
+
description: 'Create a Signet receipt for a tool call before execution. The secret key is read from the SIGNET_SECRET_KEY environment variable (never passed as an argument). Returns the full signed receipt JSON.',
|
|
22
22
|
inputSchema: {
|
|
23
23
|
type: 'object',
|
|
24
24
|
properties: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
target: { type: 'string', description: 'Target MCP server URI' },
|
|
25
|
+
tool: { type: 'string', description: 'Name of the tool or action being attested, for example github_create_issue or file_write.' },
|
|
26
|
+
params: { description: 'Exact JSON arguments to bind into the receipt. Changing this JSON later will change the params hash and invalidate verification expectations.' },
|
|
27
|
+
signer_name: { type: 'string', description: 'Stable signer or agent name that will appear in the receipt, such as ci-agent or research-bot.' },
|
|
28
|
+
signer_owner: { type: 'string', description: 'Optional human, team, or org that owns the signer identity.' },
|
|
29
|
+
target: { type: 'string', description: 'Optional target URI for the system where the action will run, such as mcp://github.local.' },
|
|
31
30
|
},
|
|
32
31
|
required: ['tool', 'signer_name'],
|
|
33
32
|
},
|
|
34
33
|
},
|
|
35
34
|
{
|
|
36
35
|
name: 'signet_verify',
|
|
37
|
-
description: 'Verify a
|
|
36
|
+
description: 'Verify that a receipt was signed by the expected public key. Use this to validate receipts from agents, logs, tests, or exchanged MCP metadata. Returns JSON {valid: boolean}. This checks signature validity against the supplied key; it does not enforce freshness, authorization, or policy decisions.',
|
|
38
37
|
inputSchema: {
|
|
39
38
|
type: 'object',
|
|
40
39
|
properties: {
|
|
41
|
-
receipt_json: { type: 'string', description: '
|
|
42
|
-
public_key: { type: 'string', description: '
|
|
40
|
+
receipt_json: { type: 'string', description: 'Serialized receipt JSON to verify. This should be the full receipt object as a string.' },
|
|
41
|
+
public_key: { type: 'string', description: 'Expected signer public key, either bare base64 or ed25519:base64.' },
|
|
43
42
|
},
|
|
44
43
|
required: ['receipt_json', 'public_key'],
|
|
45
44
|
},
|
|
46
45
|
},
|
|
47
46
|
{
|
|
48
47
|
name: 'signet_content_hash',
|
|
49
|
-
description: 'Compute SHA-256 hash
|
|
48
|
+
description: 'Compute a deterministic SHA-256 hash over canonical JSON using RFC 8785 JCS. Use this when you need a stable digest for receipt params, audit records, or comparing semantically identical JSON with different formatting or key order. Returns JSON {hash: string}.',
|
|
50
49
|
inputSchema: {
|
|
51
50
|
type: 'object',
|
|
52
51
|
properties: {
|
|
53
|
-
content: { description: 'JSON
|
|
52
|
+
content: { description: 'Any JSON value to hash: object, array, string, number, boolean, or null.' },
|
|
54
53
|
},
|
|
55
54
|
required: ['content'],
|
|
56
55
|
},
|
|
@@ -65,14 +64,14 @@ export function createSignetToolsServer() {
|
|
|
65
64
|
const kp = generateKeypair();
|
|
66
65
|
// Only return public key — secret key management via CLI/env
|
|
67
66
|
return {
|
|
68
|
-
content: [{ type: 'text', text: JSON.stringify({ public_key: kp.publicKey, note: '
|
|
67
|
+
content: [{ type: 'text', text: JSON.stringify({ public_key: kp.publicKey, note: 'This is an ephemeral keypair for demos/tests. The secret key was not returned for security. For persistent identities, use: signet identity generate --name <name>' }) }],
|
|
69
68
|
};
|
|
70
69
|
}
|
|
71
70
|
case 'signet_sign': {
|
|
72
|
-
const secretKey =
|
|
71
|
+
const secretKey = process.env.SIGNET_SECRET_KEY;
|
|
73
72
|
if (!secretKey) {
|
|
74
73
|
return {
|
|
75
|
-
content: [{ type: 'text', text: 'Error:
|
|
74
|
+
content: [{ type: 'text', text: 'Error: SIGNET_SECRET_KEY environment variable is not set. Set it before starting the server.' }],
|
|
76
75
|
isError: true,
|
|
77
76
|
};
|
|
78
77
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signet-auth/mcp-tools",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "MCP server exposing Signet
|
|
3
|
+
"version": "0.4.6",
|
|
4
|
+
"description": "Standalone MCP server exposing Signet signing, verification, and content hash tools",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
7
7
|
"model-context-protocol",
|
|
8
8
|
"signet",
|
|
9
9
|
"signing",
|
|
10
|
-
"
|
|
10
|
+
"verification",
|
|
11
|
+
"content-hash",
|
|
11
12
|
"cryptography"
|
|
12
13
|
],
|
|
13
14
|
"homepage": "https://github.com/Prismer-AI/signet/tree/main/packages/signet-mcp-tools#readme",
|
|
@@ -19,12 +20,16 @@
|
|
|
19
20
|
"url": "git+https://github.com/Prismer-AI/signet.git",
|
|
20
21
|
"directory": "packages/signet-mcp-tools"
|
|
21
22
|
},
|
|
22
|
-
"mcpName": "io.github.
|
|
23
|
+
"mcpName": "io.github.prismer-ai/signet-mcp-tools",
|
|
23
24
|
"type": "module",
|
|
24
25
|
"bin": {
|
|
25
26
|
"signet-mcp-tools": "dist/server.js"
|
|
26
27
|
},
|
|
27
|
-
"files": [
|
|
28
|
+
"files": [
|
|
29
|
+
"dist/",
|
|
30
|
+
"server.json",
|
|
31
|
+
"README.md"
|
|
32
|
+
],
|
|
28
33
|
"scripts": {
|
|
29
34
|
"build": "npx tsc",
|
|
30
35
|
"test": "npx tsc -p tsconfig.test.json && node --test dist-test/tests/tools.test.js",
|
|
@@ -35,7 +40,7 @@
|
|
|
35
40
|
},
|
|
36
41
|
"dependencies": {
|
|
37
42
|
"@modelcontextprotocol/sdk": "^1.10.0",
|
|
38
|
-
"@signet-auth/core": "^0.4.
|
|
43
|
+
"@signet-auth/core": "^0.4.6"
|
|
39
44
|
},
|
|
40
45
|
"devDependencies": {
|
|
41
46
|
"@types/node": "^22",
|
package/server.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
|
|
3
|
+
"name": "io.github.prismer-ai/signet-mcp-tools",
|
|
4
|
+
"title": "Signet MCP Tools",
|
|
5
|
+
"description": "MCP server exposing Signet cryptographic signing, verification, and content hash tools over stdio.",
|
|
6
|
+
"version": "0.4.6",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "https://github.com/Prismer-AI/signet",
|
|
9
|
+
"source": "github"
|
|
10
|
+
},
|
|
11
|
+
"packages": [
|
|
12
|
+
{
|
|
13
|
+
"registryType": "npm",
|
|
14
|
+
"identifier": "@signet-auth/mcp-tools",
|
|
15
|
+
"version": "0.4.6",
|
|
16
|
+
"transport": {
|
|
17
|
+
"type": "stdio"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|