@henrikogard/auroradocs-mcp 0.1.1 → 0.2.0
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 +53 -36
- package/dist/auroraClient.d.ts +27 -10
- package/dist/auroraClient.js +171 -92
- package/dist/contracts.d.ts +121 -0
- package/dist/contracts.js +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.js +105 -0
- package/dist/index.js +17 -33
- package/dist/input.d.ts +24 -0
- package/dist/input.js +28 -0
- package/dist/mcpSurfaces.d.ts +6 -0
- package/dist/mcpSurfaces.js +97 -0
- package/dist/projectContext.d.ts +18 -0
- package/dist/projectContext.js +281 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.js +52 -0
- package/dist/toolCatalog.d.ts +28 -4
- package/dist/toolCatalog.js +510 -7
- package/dist/tools.d.ts +21 -5
- package/dist/tools.js +481 -316
- package/docs/agent-planning-knowledge-roadmap.md +424 -0
- package/docs/agent-profiles.md +72 -0
- package/docs/security.md +97 -0
- package/docs/setup.md +219 -0
- package/docs/superpowers/plans/2026-07-14-mcp-runtime-resume-work.md +628 -0
- package/docs/tools.md +86 -0
- package/docs/troubleshooting.md +67 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
# AuroraDocs MCP Server
|
|
2
2
|
|
|
3
|
-
`@henrikogard/auroradocs-mcp` connects a local MCP client to
|
|
4
|
-
|
|
5
|
-
to `https://api.auroradocs.eu`.
|
|
3
|
+
`@henrikogard/auroradocs-mcp` connects a local MCP client to independently
|
|
4
|
+
granted AuroraCloud workspaces. It runs on your computer over stdio and sends
|
|
5
|
+
authenticated requests to `https://api.auroradocs.eu`.
|
|
6
6
|
|
|
7
7
|
The public package is `@henrikogard/auroradocs-mcp`, the executable is
|
|
8
|
-
`aurora-mcp`, and this documentation targets version `0.
|
|
8
|
+
`aurora-mcp`, and this documentation targets version `0.2.0`.
|
|
9
9
|
|
|
10
10
|
For an end-to-end installation walkthrough, use the dedicated
|
|
11
|
-
[Setup guide](docs/setup.md).
|
|
11
|
+
[Setup guide](docs/setup.md). Hermes and OpenClaw users should also apply the
|
|
12
|
+
bounded [read-only agent profiles](docs/agent-profiles.md).
|
|
12
13
|
|
|
13
14
|
## Requirements
|
|
14
15
|
|
|
@@ -21,7 +22,14 @@ For an end-to-end installation walkthrough, use the dedicated
|
|
|
21
22
|
Browser-only workspaces and Local folders workspaces are not supported. The
|
|
22
23
|
server does not read a browser tab or a folder on your computer.
|
|
23
24
|
|
|
24
|
-
## Create an MCP
|
|
25
|
+
## Create an MCP credential
|
|
26
|
+
|
|
27
|
+
New multi-workspace installations should use an `aur_mcp_client_` credential
|
|
28
|
+
with owner-approved, independently revocable workspace grants. Follow the
|
|
29
|
+
[Setup guide](docs/setup.md) for that flow. The workspace-scoped `aur_mcp_`
|
|
30
|
+
steps below remain available during the legacy migration window.
|
|
31
|
+
|
|
32
|
+
### Legacy workspace token
|
|
25
33
|
|
|
26
34
|
1. Sign in to AuroraDocs and open the AuroraCloud workspace you want to use.
|
|
27
35
|
2. Go to **Settings → Workspace → MCP Access**.
|
|
@@ -52,8 +60,8 @@ write scope does not imply its read counterpart.
|
|
|
52
60
|
| Confirm the connection and list titles | `read:objects` |
|
|
53
61
|
| Read page or Canvas content | `read:objects`, `read:content` |
|
|
54
62
|
| Search and read workspace knowledge | `read:objects`, `read:content`, `search` |
|
|
55
|
-
| Review
|
|
56
|
-
| Update task metadata after confirmation | `read:objects`, `tasks`, `write:objects` |
|
|
63
|
+
| Review tasks and week planning | `read:objects`, `read:tasks` |
|
|
64
|
+
| Update task metadata after confirmation | `read:objects`, `read:tasks`, `write:tasks`, `write:objects` |
|
|
57
65
|
| Create or rename non-task objects | `read:objects`, `write:objects` |
|
|
58
66
|
| Replace or append document content | `read:objects`, `read:content`, `write:content` |
|
|
59
67
|
|
|
@@ -62,8 +70,9 @@ membership at startup and most tools operate on object metadata. Add
|
|
|
62
70
|
`write:objects` or `write:content` only when you intend to let the client modify
|
|
63
71
|
the workspace. See the complete [scope and tool reference](docs/tools.md).
|
|
64
72
|
|
|
65
|
-
|
|
66
|
-
|
|
73
|
+
New client grants use separate `read:tasks` and `write:tasks` scopes. The legacy
|
|
74
|
+
`tasks` scope permits both reading and writing task metadata; it is
|
|
75
|
+
compatibility-only and cannot be selected for new grants.
|
|
67
76
|
|
|
68
77
|
`search_objects` and its `search` alias search object titles with `read:objects` only.
|
|
69
78
|
`wiki_search` searches workspace knowledge and requires `read:objects` plus `search`.
|
|
@@ -72,18 +81,22 @@ in the knowledge-search recipe above.
|
|
|
72
81
|
|
|
73
82
|
## Configure a client
|
|
74
83
|
|
|
75
|
-
All examples below use the production AuroraCloud API
|
|
76
|
-
`0.
|
|
84
|
+
All examples below use the production AuroraCloud API, a new client credential,
|
|
85
|
+
and package version `0.2.0`. Replace `REDACTED` locally. Do not commit the
|
|
77
86
|
resulting configuration. The examples store the token in the client's saved
|
|
78
87
|
configuration, so protect that file as a credential.
|
|
79
88
|
|
|
80
|
-
|
|
89
|
+
New client credentials require these environment variables:
|
|
81
90
|
|
|
82
91
|
| Variable | Value |
|
|
83
92
|
| --- | --- |
|
|
84
93
|
| `AURORA_API_URL` | `https://api.auroradocs.eu` |
|
|
85
|
-
| `
|
|
86
|
-
|
|
94
|
+
| `AURORA_API_TOKEN` | the one-time `aur_mcp_client_` credential |
|
|
95
|
+
|
|
96
|
+
Do not set `AURORA_WORKSPACE_ID` for a client credential. The server discovers
|
|
97
|
+
only its owner-approved grants with `list_workspaces`; each data call then
|
|
98
|
+
selects a workspace explicitly. A legacy `aur_mcp_` token still requires
|
|
99
|
+
`AURORA_WORKSPACE_ID` during the migration window.
|
|
87
100
|
|
|
88
101
|
Do not configure an AuroraDocs email or password. Public onboarding supports
|
|
89
102
|
MCP-token authentication only.
|
|
@@ -98,10 +111,9 @@ this server under `mcpServers`, preserving any servers already present:
|
|
|
98
111
|
"mcpServers": {
|
|
99
112
|
"auroradocs": {
|
|
100
113
|
"command": "npx",
|
|
101
|
-
"args": ["-y", "@henrikogard/auroradocs-mcp@0.
|
|
114
|
+
"args": ["-y", "@henrikogard/auroradocs-mcp@0.2.0"],
|
|
102
115
|
"env": {
|
|
103
116
|
"AURORA_API_URL": "https://api.auroradocs.eu",
|
|
104
|
-
"AURORA_WORKSPACE_ID": "WORKSPACE_ID",
|
|
105
117
|
"AURORA_API_TOKEN": "REDACTED"
|
|
106
118
|
}
|
|
107
119
|
}
|
|
@@ -121,9 +133,8 @@ Options must appear before the server name:
|
|
|
121
133
|
```bash
|
|
122
134
|
claude mcp add --transport stdio --scope user \
|
|
123
135
|
--env AURORA_API_URL=https://api.auroradocs.eu \
|
|
124
|
-
--env AURORA_WORKSPACE_ID=WORKSPACE_ID \
|
|
125
136
|
--env AURORA_API_TOKEN=REDACTED \
|
|
126
|
-
auroradocs -- npx -y @henrikogard/auroradocs-mcp@0.
|
|
137
|
+
auroradocs -- npx -y @henrikogard/auroradocs-mcp@0.2.0
|
|
127
138
|
```
|
|
128
139
|
|
|
129
140
|
Run `claude mcp get auroradocs` to inspect the saved entry, then use `/mcp` in
|
|
@@ -137,9 +148,8 @@ The installed Codex CLI accepts `--env` for local stdio servers:
|
|
|
137
148
|
```bash
|
|
138
149
|
codex mcp add \
|
|
139
150
|
--env AURORA_API_URL=https://api.auroradocs.eu \
|
|
140
|
-
--env AURORA_WORKSPACE_ID=WORKSPACE_ID \
|
|
141
151
|
--env AURORA_API_TOKEN=REDACTED \
|
|
142
|
-
auroradocs -- npx -y @henrikogard/auroradocs-mcp@0.
|
|
152
|
+
auroradocs -- npx -y @henrikogard/auroradocs-mcp@0.2.0
|
|
143
153
|
```
|
|
144
154
|
|
|
145
155
|
Run `codex mcp get auroradocs` to inspect the saved entry.
|
|
@@ -151,10 +161,9 @@ Use this valid generic JSON shape when a client accepts an MCP server object:
|
|
|
151
161
|
```json
|
|
152
162
|
{
|
|
153
163
|
"command": "npx",
|
|
154
|
-
"args": ["-y", "@henrikogard/auroradocs-mcp@0.
|
|
164
|
+
"args": ["-y", "@henrikogard/auroradocs-mcp@0.2.0"],
|
|
155
165
|
"env": {
|
|
156
166
|
"AURORA_API_URL": "https://api.auroradocs.eu",
|
|
157
|
-
"AURORA_WORKSPACE_ID": "WORKSPACE_ID",
|
|
158
167
|
"AURORA_API_TOKEN": "REDACTED"
|
|
159
168
|
}
|
|
160
169
|
}
|
|
@@ -166,13 +175,13 @@ local server calls, not a hosted MCP endpoint.
|
|
|
166
175
|
|
|
167
176
|
## Verify read-only access first
|
|
168
177
|
|
|
169
|
-
1.
|
|
178
|
+
1. Grant the client one workspace with only `read:objects`.
|
|
170
179
|
2. Start or restart the client.
|
|
171
|
-
3. Ask the client to call `
|
|
172
|
-
|
|
173
|
-
4.
|
|
174
|
-
5. Only then
|
|
175
|
-
genuinely needs.
|
|
180
|
+
3. Ask the client to call `list_workspaces` and confirm only the expected grant
|
|
181
|
+
is visible.
|
|
182
|
+
4. Call `get_project_context` for one explicit workspace and project ID.
|
|
183
|
+
5. Only then extend that workspace grant with any optional read scopes the
|
|
184
|
+
workflow genuinely needs.
|
|
176
185
|
|
|
177
186
|
If the connection fails, see [Troubleshooting](docs/troubleshooting.md). Never
|
|
178
187
|
paste the raw token into logs or bug reports.
|
|
@@ -212,6 +221,8 @@ report a vulnerability, follow [SECURITY.md](SECURITY.md).
|
|
|
212
221
|
## Reference
|
|
213
222
|
|
|
214
223
|
- [Tools and scopes](docs/tools.md)
|
|
224
|
+
- [Hermes and OpenClaw agent profiles](docs/agent-profiles.md)
|
|
225
|
+
- [Agent planning and knowledge roadmap](docs/agent-planning-knowledge-roadmap.md)
|
|
215
226
|
- [Security boundaries](docs/security.md)
|
|
216
227
|
- [Troubleshooting](docs/troubleshooting.md)
|
|
217
228
|
- [Contributing](CONTRIBUTING.md)
|
|
@@ -226,13 +237,19 @@ pnpm check
|
|
|
226
237
|
```
|
|
227
238
|
|
|
228
239
|
The live AuroraCloud smoke test is intentionally separate because it requires a
|
|
229
|
-
real
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
240
|
+
real owner-approved workspace grant. Prefer `AURORA_API_TOKEN=aur_mcp_client_...`
|
|
241
|
+
with `AURORA_API_URL`; a legacy `aur_mcp_...` token additionally requires
|
|
242
|
+
`AURORA_WORKSPACE_ID`. Grant only `read:objects`; add `read:content` only when
|
|
243
|
+
the selected project's readable brief or citations must be included.
|
|
244
|
+
|
|
245
|
+
The smoke always calls `list_workspaces`. Set `AURORA_SMOKE_PROJECT_ID` to add
|
|
246
|
+
one bounded `get_project_context` request; omit it to verify discovery without
|
|
247
|
+
guessing a project. When a client credential has multiple grants, also set
|
|
248
|
+
`AURORA_SMOKE_WORKSPACE_ID` for that project check. The dispatcher verifies the
|
|
249
|
+
catalog's authoritative read-only classification and never dispatches a write
|
|
250
|
+
tool. Keep `AURORA_API_TOKEN` out of commands, logs, and committed files by
|
|
251
|
+
providing it through your local secret environment. See
|
|
252
|
+
[CONTRIBUTING.md](CONTRIBUTING.md) before using the smoke.
|
|
236
253
|
|
|
237
254
|
## License
|
|
238
255
|
|
package/dist/auroraClient.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* auroraClient.ts — AuroraCloud client helpers for the MCP server.
|
|
3
3
|
*
|
|
4
|
-
* SECURITY:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* SECURITY: Client credentials discover only independently granted workspaces.
|
|
5
|
+
* Legacy credentials verify membership in their configured default workspace.
|
|
6
|
+
* Tool execution resolves a granted or verified workspace before data access.
|
|
7
7
|
*/
|
|
8
|
+
import type { AuroraConnectionContext, ContentReadResult, GrantedWorkspace } from './contracts.js';
|
|
8
9
|
export type AuroraObjectRecord = {
|
|
9
10
|
id: string;
|
|
10
11
|
workspace_id: string;
|
|
@@ -44,11 +45,11 @@ export type AuroraTaskList = {
|
|
|
44
45
|
name: string;
|
|
45
46
|
default_status: string | null;
|
|
46
47
|
};
|
|
47
|
-
export declare const WORKSPACE_KNOWLEDGE_SOURCE_KINDS: readonly [
|
|
48
|
+
export declare const WORKSPACE_KNOWLEDGE_SOURCE_KINDS: readonly ['object', 'content_chunk', 'property', 'comment', 'attachment_metadata', 'relationship'];
|
|
48
49
|
export type WorkspaceKnowledgeSourceKind = (typeof WORKSPACE_KNOWLEDGE_SOURCE_KINDS)[number];
|
|
49
|
-
export declare const WORKSPACE_KNOWLEDGE_AVAILABILITY_STATES: readonly [
|
|
50
|
+
export declare const WORKSPACE_KNOWLEDGE_AVAILABILITY_STATES: readonly ['available', 'encrypted_locked', 'not_indexed', 'unsupported_type', 'permission_denied'];
|
|
50
51
|
export type WorkspaceKnowledgeAvailability = (typeof WORKSPACE_KNOWLEDGE_AVAILABILITY_STATES)[number];
|
|
51
|
-
export declare const WORKSPACE_KNOWLEDGE_RELATIONSHIP_TYPES: readonly [
|
|
52
|
+
export declare const WORKSPACE_KNOWLEDGE_RELATIONSHIP_TYPES: readonly ['parent', 'child', 'link', 'backlink', 'tag', 'task_project'];
|
|
52
53
|
export type WorkspaceKnowledgeRelationshipType = (typeof WORKSPACE_KNOWLEDGE_RELATIONSHIP_TYPES)[number];
|
|
53
54
|
export type WorkspaceKnowledgeRelationship = {
|
|
54
55
|
type: WorkspaceKnowledgeRelationshipType;
|
|
@@ -86,13 +87,21 @@ type BackendAuthStore = {
|
|
|
86
87
|
record: AuthRecord;
|
|
87
88
|
save(token: string, record: AuthRecord): void;
|
|
88
89
|
};
|
|
90
|
+
export type CollectionPage<T> = {
|
|
91
|
+
items: T[];
|
|
92
|
+
page: number;
|
|
93
|
+
perPage: number;
|
|
94
|
+
totalPages: number;
|
|
95
|
+
totalItems: number;
|
|
96
|
+
};
|
|
89
97
|
type BackendCollection = {
|
|
90
|
-
|
|
98
|
+
listPage(options: {
|
|
91
99
|
filter?: string;
|
|
92
100
|
sort?: string;
|
|
93
101
|
expand?: string;
|
|
94
|
-
|
|
95
|
-
|
|
102
|
+
page: number;
|
|
103
|
+
perPage: number;
|
|
104
|
+
}): Promise<CollectionPage<Record<string, unknown>>>;
|
|
96
105
|
get(id: string): Promise<Record<string, unknown>>;
|
|
97
106
|
create(data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
98
107
|
update(id: string, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
@@ -116,13 +125,21 @@ export declare function getAuroraClient(): BackendClient;
|
|
|
116
125
|
* Authenticate and verify workspace membership.
|
|
117
126
|
* Exits the process if the user is not a member of the target workspace.
|
|
118
127
|
*/
|
|
128
|
+
export type AuthenticateOptions = {
|
|
129
|
+
token?: string;
|
|
130
|
+
workspaceId?: string;
|
|
131
|
+
};
|
|
132
|
+
export declare function listGrantedWorkspaces(): Promise<GrantedWorkspace[]>;
|
|
119
133
|
export declare function authenticate(): Promise<void>;
|
|
134
|
+
export declare function authenticate(options: AuthenticateOptions): Promise<AuroraConnectionContext>;
|
|
120
135
|
export declare function listObjects(workspaceId: string, type?: string): Promise<AuroraObjectRecord[]>;
|
|
136
|
+
export declare function listObjectsPage(workspaceId: string, type: string | undefined, page: number, perPage: number): Promise<CollectionPage<AuroraObjectRecord>>;
|
|
137
|
+
export declare function searchObjectsPage(workspaceId: string, query: string, limit: number): Promise<WorkspaceKnowledgeSource[]>;
|
|
121
138
|
export declare function getObject(id: string, workspaceId: string): Promise<AuroraObjectRecord | null>;
|
|
122
139
|
export declare function createObject(workspaceId: string, type: string, title: string): Promise<AuroraObjectRecord>;
|
|
123
140
|
export declare function updateObjectTitle(id: string, title: string, workspaceId: string): Promise<void>;
|
|
124
141
|
export declare function deleteObject(id: string, workspaceId: string): Promise<void>;
|
|
125
|
-
export declare function getContent(objectId: string, workspaceId: string): Promise<
|
|
142
|
+
export declare function getContent(objectId: string, workspaceId: string): Promise<ContentReadResult>;
|
|
126
143
|
export declare function getContentJson(objectId: string, workspaceId: string): Promise<Record<string, unknown> | null>;
|
|
127
144
|
export declare function searchWorkspaceKnowledgeServer(workspaceId: string, query: string, limit?: number): Promise<WorkspaceKnowledgeSource[]>;
|
|
128
145
|
export declare function getWorkspaceKnowledgeObjectServer(workspaceId: string, objectId: string, includeFullText?: boolean): Promise<WorkspaceKnowledgeSource | null>;
|