@tinycloud/mcp 0.1.0-beta.2
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 +23 -0
- package/bin/tinycloud-mcp +2 -0
- package/dist/cli.cjs +417 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +11 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.js +390 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.cjs +450 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +413 -0
- package/dist/index.js.map +1 -0
- package/dist/results.cjs +64 -0
- package/dist/results.cjs.map +1 -0
- package/dist/results.d.cts +22 -0
- package/dist/results.d.ts +22 -0
- package/dist/results.js +38 -0
- package/dist/results.js.map +1 -0
- package/dist/server.cjs +320 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.cts +14 -0
- package/dist/server.d.ts +14 -0
- package/dist/server.js +291 -0
- package/dist/server.js.map +1 -0
- package/dist/tools.cjs +238 -0
- package/dist/tools.cjs.map +1 -0
- package/dist/tools.d.cts +29 -0
- package/dist/tools.d.ts +29 -0
- package/dist/tools.js +208 -0
- package/dist/tools.js.map +1 -0
- package/generated/mcp-facts.json +148 -0
- package/package.json +68 -0
- package/skills/tinycloud-delegated-secrets/SKILL.md +86 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"tools": [
|
|
4
|
+
{
|
|
5
|
+
"name": "tinycloud_account_applications_list",
|
|
6
|
+
"operationId": "tinycloud.account.applications.list",
|
|
7
|
+
"operationVersion": 1,
|
|
8
|
+
"effects": [
|
|
9
|
+
"read"
|
|
10
|
+
],
|
|
11
|
+
"postures": [
|
|
12
|
+
"owner-openkey",
|
|
13
|
+
"delegate-session",
|
|
14
|
+
"local-owner-key"
|
|
15
|
+
],
|
|
16
|
+
"sensitiveOutput": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "tinycloud_account_spaces_list",
|
|
20
|
+
"operationId": "tinycloud.account.spaces.list",
|
|
21
|
+
"operationVersion": 1,
|
|
22
|
+
"effects": [
|
|
23
|
+
"read"
|
|
24
|
+
],
|
|
25
|
+
"postures": [
|
|
26
|
+
"owner-openkey",
|
|
27
|
+
"delegate-session",
|
|
28
|
+
"local-owner-key"
|
|
29
|
+
],
|
|
30
|
+
"sensitiveOutput": true
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "tinycloud_auth_capabilities",
|
|
34
|
+
"operationId": "tinycloud.auth.capabilities",
|
|
35
|
+
"operationVersion": 1,
|
|
36
|
+
"effects": [
|
|
37
|
+
"read"
|
|
38
|
+
],
|
|
39
|
+
"postures": [
|
|
40
|
+
"owner-openkey",
|
|
41
|
+
"delegate-session",
|
|
42
|
+
"local-owner-key"
|
|
43
|
+
],
|
|
44
|
+
"sensitiveOutput": false
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "tinycloud_auth_import",
|
|
48
|
+
"operationId": "tinycloud.auth.import",
|
|
49
|
+
"operationVersion": 1,
|
|
50
|
+
"effects": [
|
|
51
|
+
"local_write"
|
|
52
|
+
],
|
|
53
|
+
"postures": [
|
|
54
|
+
"owner-openkey",
|
|
55
|
+
"delegate-session",
|
|
56
|
+
"local-owner-key"
|
|
57
|
+
],
|
|
58
|
+
"sensitiveOutput": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "tinycloud_auth_request",
|
|
62
|
+
"operationId": "tinycloud.auth.request",
|
|
63
|
+
"operationVersion": 1,
|
|
64
|
+
"effects": [
|
|
65
|
+
"local_write"
|
|
66
|
+
],
|
|
67
|
+
"postures": [
|
|
68
|
+
"owner-openkey",
|
|
69
|
+
"delegate-session",
|
|
70
|
+
"local-owner-key"
|
|
71
|
+
],
|
|
72
|
+
"sensitiveOutput": false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "tinycloud_auth_status",
|
|
76
|
+
"operationId": "tinycloud.auth.status",
|
|
77
|
+
"operationVersion": 1,
|
|
78
|
+
"effects": [
|
|
79
|
+
"read"
|
|
80
|
+
],
|
|
81
|
+
"postures": [
|
|
82
|
+
"owner-openkey",
|
|
83
|
+
"delegate-session",
|
|
84
|
+
"local-owner-key",
|
|
85
|
+
"unauthenticated"
|
|
86
|
+
],
|
|
87
|
+
"sensitiveOutput": false
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "tinycloud_kv_get",
|
|
91
|
+
"operationId": "tinycloud.kv.get",
|
|
92
|
+
"operationVersion": 1,
|
|
93
|
+
"effects": [
|
|
94
|
+
"read"
|
|
95
|
+
],
|
|
96
|
+
"postures": [
|
|
97
|
+
"owner-openkey",
|
|
98
|
+
"delegate-session",
|
|
99
|
+
"local-owner-key"
|
|
100
|
+
],
|
|
101
|
+
"sensitiveOutput": true
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "tinycloud_kv_list",
|
|
105
|
+
"operationId": "tinycloud.kv.list",
|
|
106
|
+
"operationVersion": 1,
|
|
107
|
+
"effects": [
|
|
108
|
+
"read"
|
|
109
|
+
],
|
|
110
|
+
"postures": [
|
|
111
|
+
"owner-openkey",
|
|
112
|
+
"delegate-session",
|
|
113
|
+
"local-owner-key"
|
|
114
|
+
],
|
|
115
|
+
"sensitiveOutput": true
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "tinycloud_secrets_get",
|
|
119
|
+
"operationId": "tinycloud.secrets.get",
|
|
120
|
+
"operationVersion": 1,
|
|
121
|
+
"effects": [
|
|
122
|
+
"read",
|
|
123
|
+
"local_write"
|
|
124
|
+
],
|
|
125
|
+
"postures": [
|
|
126
|
+
"owner-openkey",
|
|
127
|
+
"delegate-session",
|
|
128
|
+
"local-owner-key"
|
|
129
|
+
],
|
|
130
|
+
"sensitiveOutput": true
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"name": "tinycloud_status",
|
|
134
|
+
"operationId": "tinycloud.status.get",
|
|
135
|
+
"operationVersion": 1,
|
|
136
|
+
"effects": [
|
|
137
|
+
"read"
|
|
138
|
+
],
|
|
139
|
+
"postures": [
|
|
140
|
+
"owner-openkey",
|
|
141
|
+
"delegate-session",
|
|
142
|
+
"local-owner-key",
|
|
143
|
+
"unauthenticated"
|
|
144
|
+
],
|
|
145
|
+
"sensitiveOutput": false
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tinycloud/mcp",
|
|
3
|
+
"version": "0.1.0-beta.2",
|
|
4
|
+
"description": "TinyCloud delegated operations MCP server",
|
|
5
|
+
"author": "TinyCloud, Inc.",
|
|
6
|
+
"license": "EGPL",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "dist/index.cjs",
|
|
9
|
+
"module": "dist/index.js",
|
|
10
|
+
"types": "dist/index.d.ts",
|
|
11
|
+
"bin": {
|
|
12
|
+
"tinycloud-mcp": "./bin/tinycloud-mcp"
|
|
13
|
+
},
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"require": "./dist/index.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./server": {
|
|
21
|
+
"types": "./dist/server.d.ts",
|
|
22
|
+
"import": "./dist/server.js",
|
|
23
|
+
"require": "./dist/server.cjs"
|
|
24
|
+
},
|
|
25
|
+
"./tools": {
|
|
26
|
+
"types": "./dist/tools.d.ts",
|
|
27
|
+
"import": "./dist/tools.js",
|
|
28
|
+
"require": "./dist/tools.cjs"
|
|
29
|
+
},
|
|
30
|
+
"./results": {
|
|
31
|
+
"types": "./dist/results.d.ts",
|
|
32
|
+
"import": "./dist/results.js",
|
|
33
|
+
"require": "./dist/results.cjs"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist",
|
|
38
|
+
"bin",
|
|
39
|
+
"generated",
|
|
40
|
+
"skills"
|
|
41
|
+
],
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=20"
|
|
44
|
+
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsup",
|
|
47
|
+
"clean": "rm -rf dist",
|
|
48
|
+
"test": "bun run build && bun scripts/test.ts && bun run check:generated",
|
|
49
|
+
"test:stdio": "bun run build && bun test src/stdio.test.ts",
|
|
50
|
+
"typecheck": "tsc -p tsconfig.json",
|
|
51
|
+
"generate": "bun scripts/generate.ts",
|
|
52
|
+
"check:generated": "bun scripts/generate.ts --check"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@modelcontextprotocol/server": "2.0.0-beta.4",
|
|
56
|
+
"@tinycloud/operations": "0.1.0-beta.2"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@modelcontextprotocol/client": "2.0.0-beta.4",
|
|
60
|
+
"@types/node": "^20",
|
|
61
|
+
"tsup": "^8.0.0",
|
|
62
|
+
"typescript": "^5.9.3"
|
|
63
|
+
},
|
|
64
|
+
"repository": {
|
|
65
|
+
"type": "git",
|
|
66
|
+
"url": "https://github.com/tinycloudlabs/web-sdk"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# TinyCloud delegated exploration and secrets
|
|
2
|
+
|
|
3
|
+
Use the TinyCloud MCP tools as a resumable authority workflow. Never ask the
|
|
4
|
+
user to paste a secret value, private key, token, or delegation credential into
|
|
5
|
+
chat.
|
|
6
|
+
|
|
7
|
+
<!-- BEGIN GENERATED TINYCloud operation facts -->
|
|
8
|
+
The following facts are generated from `@tinycloud/operations/operations.json`:
|
|
9
|
+
|
|
10
|
+
- `tinycloud_account_applications_list` -> `tinycloud.account.applications.list@1`; effects: read; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: yes.
|
|
11
|
+
- `tinycloud_account_spaces_list` -> `tinycloud.account.spaces.list@1`; effects: read; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: yes.
|
|
12
|
+
- `tinycloud_auth_capabilities` -> `tinycloud.auth.capabilities@1`; effects: read; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: no.
|
|
13
|
+
- `tinycloud_auth_import` -> `tinycloud.auth.import@1`; effects: local_write; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: no.
|
|
14
|
+
- `tinycloud_auth_request` -> `tinycloud.auth.request@1`; effects: local_write; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: no.
|
|
15
|
+
- `tinycloud_auth_status` -> `tinycloud.auth.status@1`; effects: read; postures: owner-openkey, delegate-session, local-owner-key, unauthenticated; sensitive output: no.
|
|
16
|
+
- `tinycloud_kv_get` -> `tinycloud.kv.get@1`; effects: read; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: yes.
|
|
17
|
+
- `tinycloud_kv_list` -> `tinycloud.kv.list@1`; effects: read; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: yes.
|
|
18
|
+
- `tinycloud_secrets_get` -> `tinycloud.secrets.get@1`; effects: read, local_write; postures: owner-openkey, delegate-session, local-owner-key; sensitive output: yes.
|
|
19
|
+
- `tinycloud_status` -> `tinycloud.status.get@1`; effects: read; postures: owner-openkey, delegate-session, local-owner-key, unauthenticated; sensitive output: no.
|
|
20
|
+
<!-- END GENERATED TINYCloud operation facts -->
|
|
21
|
+
|
|
22
|
+
<!-- BEGIN GENERATED TINYCloud operations coverage -->
|
|
23
|
+
Coverage is generated from the Commander registration ledger; legacy commands are not MCP tools.
|
|
24
|
+
|
|
25
|
+
- 1 migrated registration(s).
|
|
26
|
+
- 1 partially migrated registration(s).
|
|
27
|
+
- 111 legacy registration(s) remain Commander-owned.
|
|
28
|
+
- `auth import [source]` → `tinycloud.auth.import@1` (partially-migrated; remaining legacy inputs: v1 delegation artifact, v1 permission artifact without command, bare portable delegation, stored delegation wrapper, cross-user delegation persisted with activated=false).
|
|
29
|
+
- `secrets get <name>` → `tinycloud.secrets.get@1` (migrated).
|
|
30
|
+
<!-- END GENERATED TINYCloud operations coverage -->
|
|
31
|
+
|
|
32
|
+
## Account and KV exploration
|
|
33
|
+
|
|
34
|
+
1. A fresh `delegate-session` profile must first bootstrap its session through
|
|
35
|
+
the CLI: emit one exact `tc auth request --cap ...` artifact, have the owner
|
|
36
|
+
grant that artifact, and import the result with `tc auth import`. Start MCP
|
|
37
|
+
only after the import succeeds.
|
|
38
|
+
2. Inspect posture with `tinycloud_status` or `tinycloud_auth_status`.
|
|
39
|
+
3. Call `tinycloud_account_spaces_list` and
|
|
40
|
+
`tinycloud_account_applications_list`. If either returns
|
|
41
|
+
`authority_required`, give the exact structured request to the account
|
|
42
|
+
owner for `tc auth grant --stdin --yes`, then import the returned artifact
|
|
43
|
+
with `tinycloud_auth_import`.
|
|
44
|
+
4. Choose a non-secrets space from those results. Use `tinycloud_kv_list` with
|
|
45
|
+
an exact space and prefix. Follow the same request, owner grant, import,
|
|
46
|
+
restart, and retry sequence when authority is required.
|
|
47
|
+
5. Use `tinycloud_kv_get` for one exact returned key. A list grant does not
|
|
48
|
+
imply get authority; request and import the exact get grant when required.
|
|
49
|
+
6. Do not broaden a path, substitute a sibling key, change the audience, or
|
|
50
|
+
use generic KV tools against a secrets space. Use `tinycloud_secrets_get`
|
|
51
|
+
for secrets.
|
|
52
|
+
|
|
53
|
+
## Secret workflow
|
|
54
|
+
|
|
55
|
+
1. Inspect posture first with `tinycloud_status` or `tinycloud_auth_status`.
|
|
56
|
+
Treat `delegate-session` as delegated authority even when its owner DID is
|
|
57
|
+
the target space owner. Do not infer owner authority from metadata.
|
|
58
|
+
2. Call `tinycloud_secrets_get` with the validated secret reference (`name`,
|
|
59
|
+
and optional `scope` or `space`). If the result is `authority_required`,
|
|
60
|
+
do not retry blindly and do not infer whether the secret exists.
|
|
61
|
+
3. Present the exact structured `request` and its exact `approval` OpenKey
|
|
62
|
+
action to the user for out-of-band approval. Preserve the request ID and
|
|
63
|
+
do not edit, broaden, or replace its requested entries.
|
|
64
|
+
4. In a later call, use `tinycloud_auth_import` with the returned request ID
|
|
65
|
+
and the approved delegation artifact. A process restart is expected to be
|
|
66
|
+
safe. If the session rotated, the old artifact must be rejected with an
|
|
67
|
+
audience mismatch; rerun the original secret call for a new request.
|
|
68
|
+
5. Retry the original `tinycloud_secrets_get` call after a successful import.
|
|
69
|
+
The successful structured result is authoritative. Do not copy its value
|
|
70
|
+
into text, a follow-up message, diagnostics, or a transcript summary.
|
|
71
|
+
6. If the result is `setup_required`, show the structured Secret Manager setup
|
|
72
|
+
link. The link contains only the secret reference and target space; it never
|
|
73
|
+
contains a secret value.
|
|
74
|
+
|
|
75
|
+
MCP hosts may retain tool arguments and successful results in their own
|
|
76
|
+
transcripts, caches, or evaluation records. TinyCloud controls only its own
|
|
77
|
+
logs and local profile state, not host-side transcript retention. Hosts should
|
|
78
|
+
apply their own sensitive-result retention and access controls.
|
|
79
|
+
|
|
80
|
+
This proving surface uses local stdio only. It has no continuation tool,
|
|
81
|
+
resources, prompts, elicitation, remote transport, generic permission grant,
|
|
82
|
+
or secret mutation tool.
|
|
83
|
+
|
|
84
|
+
This is a beta surface. Delegated posture is the default; owner-profile data
|
|
85
|
+
access requires explicit opt-in. The user must enter secrets only in Secret
|
|
86
|
+
Manager, never in chat.
|