proofscan 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 +38 -36
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -14,27 +14,29 @@ proofscan provides visibility into MCP (Model Context Protocol) server communica
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
npm install
|
|
18
|
-
npm run build
|
|
19
|
-
npm link # Makes 'proofscan' available globally
|
|
17
|
+
npm install -g proofscan
|
|
20
18
|
```
|
|
21
19
|
|
|
22
|
-
Or run
|
|
20
|
+
Or run without installing:
|
|
23
21
|
|
|
24
22
|
```bash
|
|
25
|
-
|
|
23
|
+
npx proofscan --help
|
|
26
24
|
```
|
|
27
25
|
|
|
26
|
+
## CLI Commands
|
|
27
|
+
|
|
28
|
+
The CLI is available as both `pfscan` (short) and `proofscan` (full).
|
|
29
|
+
|
|
28
30
|
## Quickstart
|
|
29
31
|
|
|
30
32
|
### 1. Initialize Configuration
|
|
31
33
|
|
|
32
34
|
```bash
|
|
33
35
|
# Create config in OS-standard location
|
|
34
|
-
|
|
36
|
+
pfscan config init
|
|
35
37
|
|
|
36
38
|
# Check where config is stored
|
|
37
|
-
|
|
39
|
+
pfscan config path
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
### 2. Import MCP Server from mcp.so / Claude Desktop
|
|
@@ -43,31 +45,31 @@ Copy the `mcpServers` JSON from mcp.so or Claude Desktop settings and import via
|
|
|
43
45
|
|
|
44
46
|
```bash
|
|
45
47
|
# Full mcpServers format
|
|
46
|
-
echo '{ "mcpServers": { "time": { "command": "uvx", "args": ["mcp-server-time"] } } }' |
|
|
48
|
+
echo '{ "mcpServers": { "time": { "command": "uvx", "args": ["mcp-server-time"] } } }' | pfscan connectors import --from mcpServers --stdin
|
|
47
49
|
|
|
48
50
|
# Or just the server definition (requires --name)
|
|
49
|
-
echo '{ "command": "uvx", "args": ["mcp-server-time"] }' |
|
|
51
|
+
echo '{ "command": "uvx", "args": ["mcp-server-time"] }' | pfscan connectors import --from mcpServers --stdin --name time
|
|
50
52
|
|
|
51
53
|
# Import from file
|
|
52
|
-
|
|
54
|
+
pfscan connectors import --from mcpServers --file ./servers.json
|
|
53
55
|
```
|
|
54
56
|
|
|
55
57
|
### 3. List Connectors
|
|
56
58
|
|
|
57
59
|
```bash
|
|
58
|
-
|
|
60
|
+
pfscan connectors list
|
|
59
61
|
```
|
|
60
62
|
|
|
61
63
|
### 4. Scan a Connector
|
|
62
64
|
|
|
63
65
|
```bash
|
|
64
|
-
|
|
66
|
+
pfscan scan start --id time
|
|
65
67
|
```
|
|
66
68
|
|
|
67
69
|
### 5. View Events
|
|
68
70
|
|
|
69
71
|
```bash
|
|
70
|
-
|
|
72
|
+
pfscan monitor tail --id time --last 20
|
|
71
73
|
```
|
|
72
74
|
|
|
73
75
|
## Commands
|
|
@@ -83,37 +85,37 @@ proofscan monitor tail --id time --last 20
|
|
|
83
85
|
### Config
|
|
84
86
|
|
|
85
87
|
```bash
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
pfscan config path # Show config file path
|
|
89
|
+
pfscan config init [--force] # Initialize config
|
|
90
|
+
pfscan config show # Show config (secrets masked)
|
|
91
|
+
pfscan config validate # Validate config
|
|
90
92
|
```
|
|
91
93
|
|
|
92
94
|
### Connectors
|
|
93
95
|
|
|
94
96
|
```bash
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
pfscan connectors list # List all connectors
|
|
98
|
+
pfscan connectors show --id <id> # Show connector details
|
|
99
|
+
pfscan connectors add --id <id> --stdio "cmd" # Add stdio connector
|
|
100
|
+
pfscan connectors enable --id <id> # Enable connector
|
|
101
|
+
pfscan connectors disable --id <id> # Disable connector
|
|
102
|
+
pfscan connectors remove --id <id> # Remove connector
|
|
101
103
|
|
|
102
104
|
# Import from mcpServers format
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
pfscan connectors import --from mcpServers --stdin
|
|
106
|
+
pfscan connectors import --from mcpServers --file <path> [--name <id>]
|
|
105
107
|
```
|
|
106
108
|
|
|
107
109
|
### Scan
|
|
108
110
|
|
|
109
111
|
```bash
|
|
110
|
-
|
|
112
|
+
pfscan scan start --id <id> [--timeout <sec>]
|
|
111
113
|
```
|
|
112
114
|
|
|
113
115
|
### Monitor
|
|
114
116
|
|
|
115
117
|
```bash
|
|
116
|
-
|
|
118
|
+
pfscan monitor tail --id <id> [--last <N>]
|
|
117
119
|
```
|
|
118
120
|
|
|
119
121
|
## Config File Format
|
|
@@ -169,22 +171,22 @@ Each event contains:
|
|
|
169
171
|
|
|
170
172
|
```bash
|
|
171
173
|
# Initialize
|
|
172
|
-
$
|
|
174
|
+
$ pfscan config init
|
|
173
175
|
✓ Config created at: /home/user/.config/proofscan/config.json
|
|
174
176
|
|
|
175
177
|
# Import a server
|
|
176
178
|
$ echo '{"mcpServers":{"time":{"command":"uvx","args":["mcp-server-time"]}}}' \
|
|
177
|
-
|
|
|
179
|
+
| pfscan connectors import --from mcpServers --stdin
|
|
178
180
|
✓ Imported 1 connector(s): time
|
|
179
181
|
|
|
180
182
|
# List connectors
|
|
181
|
-
$
|
|
183
|
+
$ pfscan connectors list
|
|
182
184
|
ID Enabled Type Command/URL
|
|
183
185
|
-----------------------------------
|
|
184
186
|
time yes stdio uvx mcp-server-time
|
|
185
187
|
|
|
186
188
|
# Scan the server
|
|
187
|
-
$
|
|
189
|
+
$ pfscan scan start --id time
|
|
188
190
|
Scanning connector: time...
|
|
189
191
|
✓ Scan successful!
|
|
190
192
|
Connector: time
|
|
@@ -193,7 +195,7 @@ Scanning connector: time...
|
|
|
193
195
|
Events recorded: 8
|
|
194
196
|
|
|
195
197
|
# View events
|
|
196
|
-
$
|
|
198
|
+
$ pfscan monitor tail --id time --last 5
|
|
197
199
|
Recent events for 'time' (last 5):
|
|
198
200
|
|
|
199
201
|
Time Dir Status Kind Summary
|
|
@@ -210,7 +212,7 @@ Time Dir Status Kind Summary
|
|
|
210
212
|
Add `--json` for machine-readable output:
|
|
211
213
|
|
|
212
214
|
```bash
|
|
213
|
-
$
|
|
215
|
+
$ pfscan connectors list --json
|
|
214
216
|
[
|
|
215
217
|
{
|
|
216
218
|
"ID": "time",
|
|
@@ -220,7 +222,7 @@ $ proofscan connectors list --json
|
|
|
220
222
|
}
|
|
221
223
|
]
|
|
222
224
|
|
|
223
|
-
$
|
|
225
|
+
$ pfscan scan start --id time --json
|
|
224
226
|
{
|
|
225
227
|
"success": true,
|
|
226
228
|
"connector_id": "time",
|
|
@@ -266,14 +268,14 @@ proofscan accepts several JSON formats for import:
|
|
|
266
268
|
Failures are always recorded as events. Even if a scan fails, you can inspect what happened:
|
|
267
269
|
|
|
268
270
|
```bash
|
|
269
|
-
$
|
|
271
|
+
$ pfscan scan start --id broken-server
|
|
270
272
|
Scanning connector: broken-server...
|
|
271
273
|
✗ Scan failed!
|
|
272
274
|
Connector: broken-server
|
|
273
275
|
Error: Initialize failed: Request timeout for method: initialize
|
|
274
276
|
Events recorded: 3
|
|
275
277
|
|
|
276
|
-
$
|
|
278
|
+
$ pfscan monitor tail --id broken-server --last 5
|
|
277
279
|
Time Dir Status Kind Summary
|
|
278
280
|
----------------------------------------------------------------------
|
|
279
281
|
10:35:01 → transport [connect_attempt]
|
package/dist/cli.js
CHANGED
|
@@ -14,9 +14,9 @@ function getConfigPath() {
|
|
|
14
14
|
return resolveConfigPath({ configPath: globalConfigPath });
|
|
15
15
|
}
|
|
16
16
|
program
|
|
17
|
-
.name('
|
|
17
|
+
.name('pfscan')
|
|
18
18
|
.description('MCP Server scanner - eliminate black boxes by capturing JSON-RPC from connection to tools/list')
|
|
19
|
-
.version('0.1.
|
|
19
|
+
.version('0.1.1')
|
|
20
20
|
.option('-c, --config <path>', 'Path to config file')
|
|
21
21
|
.option('--json', 'Output in JSON format')
|
|
22
22
|
.option('-v, --verbose', 'Verbose output')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,+BAA+B;AAC/B,IAAI,gBAAoC,CAAC;AAEzC,SAAS,aAAa;IACpB,OAAO,iBAAiB,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,+BAA+B;AAC/B,IAAI,gBAAoC,CAAC;AAEzC,SAAS,aAAa;IACpB,OAAO,iBAAiB,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,gGAAgG,CAAC;KAC7G,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,gBAAgB,CAAC;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;AACvD,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3D,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC;AACrD,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;AAExD,gBAAgB;AAChB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "proofscan",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "MCP Server scanner - eliminate black boxes by capturing JSON-RPC from connection to tools/list",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"proofscan": "./dist/cli.js"
|
|
9
|
+
"proofscan": "./dist/cli.js",
|
|
10
|
+
"pfscan": "./dist/cli.js"
|
|
10
11
|
},
|
|
11
12
|
"files": [
|
|
12
13
|
"dist",
|