phaedo-mcp 0.1.0 → 0.1.1
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 +15 -0
- package/fingerprint-source.js +11 -5
- package/package.json +43 -11
- package/server.json +7 -5
package/README.md
CHANGED
|
@@ -54,9 +54,24 @@ remote HTTP/SSE are out of this cut).
|
|
|
54
54
|
|
|
55
55
|
## Install & test
|
|
56
56
|
|
|
57
|
+
**From npm (published).** The server is on the registry as
|
|
58
|
+
[`phaedo-mcp`](https://www.npmjs.com/package/phaedo-mcp) — run it without cloning:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx phaedo-mcp # run the server directly over stdio
|
|
62
|
+
# or install the `phaedo-mcp` command globally:
|
|
63
|
+
npm install -g phaedo-mcp
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Most users never start the server by hand — point your MCP client at it with the
|
|
67
|
+
**one-click install** below, which wires `phaedo-mcp` into Claude Desktop / Cursor /
|
|
68
|
+
Claude Code for you. The `cd mcp` / `npm run …` commands in the rest of this README
|
|
69
|
+
are for working from a **clone of this repo** (development & the smoke suite):
|
|
70
|
+
|
|
57
71
|
```bash
|
|
58
72
|
cd mcp
|
|
59
73
|
npm install
|
|
74
|
+
npm test # full suite (smoke + phone + cache + pairing + consult + …)
|
|
60
75
|
npm run smoke # 1a: unit + live stdio integration (23 checks)
|
|
61
76
|
npm run smoke:phone # 1b-i: mock-phone authorize→pull→decrypt→project (12 checks)
|
|
62
77
|
npm run smoke:cache # 1b-iii: encrypted at-rest cache + phone-absent fallback (11 checks)
|
package/fingerprint-source.js
CHANGED
|
@@ -28,11 +28,17 @@ function resolveSourcePath(baseDir) {
|
|
|
28
28
|
// Throws on unreadable/invalid source — the tool layer maps that to
|
|
29
29
|
// decryption_failed (the §9.5 "couldn't obtain plaintext fingerprint" case).
|
|
30
30
|
export async function loadFingerprint(baseDir) {
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
|
|
31
|
+
// Explicit local source wins over phone pairing: if PHAEDO_FINGERPRINT names a
|
|
32
|
+
// file, honor it and skip the phone entirely. Pointing at a concrete fingerprint
|
|
33
|
+
// is an unambiguous "use THIS" — it lets a user force a local file and makes the
|
|
34
|
+
// server hermetic for tests on a phone-paired dev machine (where pairing.json +
|
|
35
|
+
// an isolated state dir would otherwise pull from an unreachable phone with no
|
|
36
|
+
// cache to fall back to).
|
|
37
|
+
if (!process.env.PHAEDO_FINGERPRINT && hasPairingRecord(baseDir)) {
|
|
38
|
+
// Phase 1b: a configured pairing record means pull the live fingerprint from
|
|
39
|
+
// the paired phone over the encrypted boundary (no plaintext at rest). On
|
|
40
|
+
// success, refresh the encrypted at-rest cache; if the phone is unreachable,
|
|
41
|
+
// serve the cache so the server still works phone-absent (frictionless default).
|
|
36
42
|
const rec = await loadPairingRecord(baseDir);
|
|
37
43
|
const stateDir = defaultStateDir();
|
|
38
44
|
try {
|
package/package.json
CHANGED
|
@@ -1,22 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "phaedo-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"description": "Phaedo MCP server — inject your cognitive fingerprint into any MCP client, and consult your decision pattern at agent decision points (docs/protocol/mcp-binding.md).",
|
|
8
|
-
"mcpName": "io.github.galavoxx/phaedo",
|
|
8
|
+
"mcpName": "io.github.galavoxx/phaedo-mcp",
|
|
9
9
|
"homepage": "https://getphaedo.com",
|
|
10
|
-
"repository": {
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/galavoxx/phaedo-mcp.git"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"mcp",
|
|
16
|
+
"model-context-protocol",
|
|
17
|
+
"personalization",
|
|
18
|
+
"fingerprint",
|
|
19
|
+
"consultation",
|
|
20
|
+
"agent"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"phaedo-mcp": "server.js"
|
|
24
|
+
},
|
|
13
25
|
"files": [
|
|
14
|
-
"server.js",
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"consult
|
|
26
|
+
"server.js",
|
|
27
|
+
"server.json",
|
|
28
|
+
"fingerprint-source.js",
|
|
29
|
+
"projection.js",
|
|
30
|
+
"errors.js",
|
|
31
|
+
"consult.js",
|
|
32
|
+
"consult-core.js",
|
|
33
|
+
"consult-policy.js",
|
|
34
|
+
"receipts.js",
|
|
35
|
+
"agreement.js",
|
|
36
|
+
"phone-source.js",
|
|
37
|
+
"cache.js",
|
|
38
|
+
"pairing.js",
|
|
39
|
+
"pair.js",
|
|
40
|
+
"pull.js",
|
|
41
|
+
"install.mjs",
|
|
42
|
+
"build-package.mjs",
|
|
43
|
+
"vendor/",
|
|
44
|
+
"lib/",
|
|
45
|
+
"hooks/",
|
|
46
|
+
"installers/",
|
|
47
|
+
"policy-editor.html",
|
|
48
|
+
"sample-fingerprint.json",
|
|
49
|
+
"pairing.sample.json",
|
|
50
|
+
"consult-policies.sample.json",
|
|
51
|
+
"README.md"
|
|
20
52
|
],
|
|
21
53
|
"scripts": {
|
|
22
54
|
"start": "node server.js",
|
package/server.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
-
"name": "io.github.galavoxx/phaedo",
|
|
3
|
+
"name": "io.github.galavoxx/phaedo-mcp",
|
|
4
4
|
"description": "Carry your Phaedo cognitive fingerprint into any MCP client: inject your style at session start, and consult your decision pattern (proceed/clarify/escalate/decline) at agent decision points. Local, user-owned, privacy-preserving.",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.1",
|
|
6
6
|
"repository": {
|
|
7
|
-
"url": "https://github.com/galavoxx/phaedo",
|
|
7
|
+
"url": "https://github.com/galavoxx/phaedo-mcp",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
10
|
"packages": [
|
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "phaedo-mcp",
|
|
15
|
-
"version": "0.1.
|
|
16
|
-
"transport": {
|
|
15
|
+
"version": "0.1.1",
|
|
16
|
+
"transport": {
|
|
17
|
+
"type": "stdio"
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
20
|
]
|
|
19
21
|
}
|