@aithr-ai/mcp-server 1.0.4 → 1.0.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 +49 -117
- package/index.js +134 -77
- package/package.json +6 -12
package/README.md
CHANGED
|
@@ -1,137 +1,69 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @aithr-ai/mcp-server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MCP (Model Context Protocol) server to connect Claude Code to the Aether canvas.
|
|
4
4
|
|
|
5
5
|
## Quick Install
|
|
6
6
|
|
|
7
|
-
###
|
|
8
|
-
|
|
9
|
-
**Mac/Linux:**
|
|
7
|
+
### Mac/Linux
|
|
10
8
|
```bash
|
|
11
9
|
claude mcp add --transport stdio aether \
|
|
12
|
-
--env AETHER_API_KEY=
|
|
13
|
-
--env AETHER_WORKSPACE_ID=your-workspace
|
|
14
|
-
--env AETHER_PROJECT_ID=your-project-
|
|
15
|
-
-s user
|
|
16
|
-
-- npx -y @aithr-ai/mcp-server
|
|
10
|
+
--env AETHER_API_KEY=YOUR_KEY \
|
|
11
|
+
--env AETHER_WORKSPACE_ID=your-workspace \
|
|
12
|
+
--env AETHER_PROJECT_ID=your-project-id \
|
|
13
|
+
-s user -- npx -y @aithr-ai/mcp-server
|
|
17
14
|
```
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
```
|
|
16
|
+
### Windows
|
|
17
|
+
```cmd
|
|
21
18
|
claude mcp add --transport stdio aether ^
|
|
22
|
-
--env AETHER_API_KEY=
|
|
23
|
-
--env AETHER_WORKSPACE_ID=your-workspace
|
|
24
|
-
--env AETHER_PROJECT_ID=your-project-
|
|
25
|
-
-s user
|
|
26
|
-
-- cmd /c npx -y @aithr-ai/mcp-server
|
|
19
|
+
--env AETHER_API_KEY=YOUR_KEY ^
|
|
20
|
+
--env AETHER_WORKSPACE_ID=your-workspace ^
|
|
21
|
+
--env AETHER_PROJECT_ID=your-project-id ^
|
|
22
|
+
-s user -- cmd /c npx -y @aithr-ai/mcp-server
|
|
27
23
|
```
|
|
28
24
|
|
|
29
|
-
|
|
25
|
+
## Get Your Credentials
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
2. **Workspace ID**: Your workspace slug from the URL (e.g., `my-team`)
|
|
33
|
-
3. **Project ID**: The UUID from your project URL
|
|
27
|
+
Visit [https://www.aithr.ai/settings/mcp-install](https://www.aithr.ai/settings/mcp-install) for personalized install commands with your API key and project ID.
|
|
34
28
|
|
|
35
29
|
## Available Tools
|
|
36
30
|
|
|
37
|
-
### Canvas
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
| `aether_list_agents` | List available agent types |
|
|
45
|
-
| `aether_get_agent_context` | Get context for an agent |
|
|
31
|
+
### Canvas Management
|
|
32
|
+
- `aether_canvas_state` - Get current canvas state
|
|
33
|
+
- `aether_clear_canvas` - Clear all nodes from canvas
|
|
34
|
+
- `aether_add_agent` - Add an AI agent to the canvas
|
|
35
|
+
- `aether_remove_node` - Remove a node
|
|
36
|
+
- `aether_connect_nodes` - Create connections between nodes
|
|
37
|
+
- `aether_list_agents` - List all agents on canvas
|
|
46
38
|
|
|
47
|
-
### Generation
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
| `aether_trigger_generation` | Start AI generation for a node |
|
|
51
|
-
| `aether_get_artifacts` | List generated artifacts |
|
|
52
|
-
| `aether_get_artifact_content` | Get full artifact content |
|
|
53
|
-
| `aether_create_artifact` | Create a new artifact |
|
|
54
|
-
| `aether_extract_files` | Extract code files from artifact |
|
|
39
|
+
### Generation
|
|
40
|
+
- `aether_trigger_generation` - Trigger AI generation for an agent
|
|
41
|
+
- `aether_get_artifacts` - Get generated artifacts
|
|
55
42
|
|
|
56
43
|
### GitHub Automation
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
| `aether_push_artifacts` | Push artifacts to GitHub (branch + commit + PR) |
|
|
61
|
-
| `aether_list_repositories` | List synced repositories |
|
|
62
|
-
| `aether_read_repo_file` | Read a file from a repository |
|
|
44
|
+
- `aether_automation_status` - Check what's ready to push
|
|
45
|
+
- `aether_extract_files` - Extract code from artifacts
|
|
46
|
+
- `aether_push_artifacts` - Push to GitHub (branch + commit + PR)
|
|
63
47
|
|
|
64
48
|
### Orchestra (Autonomous Development)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
| Tool | Description |
|
|
87
|
-
|------|-------------|
|
|
88
|
-
| `aether_list_folders` | List folders in project |
|
|
89
|
-
| `aether_create_folder` | Create a new folder |
|
|
90
|
-
| `aether_delete_folder` | Delete a folder |
|
|
91
|
-
| `aether_add_file_to_folder` | Add file/artifact to folder |
|
|
92
|
-
|
|
93
|
-
### Utility
|
|
94
|
-
| Tool | Description |
|
|
95
|
-
|------|-------------|
|
|
96
|
-
| `aether_shell` | Execute shell commands locally |
|
|
97
|
-
|
|
98
|
-
## Management Commands
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
# Check MCP server status
|
|
102
|
-
/mcp
|
|
103
|
-
|
|
104
|
-
# List all MCP servers
|
|
105
|
-
claude mcp list
|
|
106
|
-
|
|
107
|
-
# Remove Aether MCP
|
|
108
|
-
claude mcp remove aether
|
|
109
|
-
|
|
110
|
-
# Update to latest version
|
|
111
|
-
claude mcp remove aether && claude mcp add ...
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Troubleshooting
|
|
115
|
-
|
|
116
|
-
### "Unauthorized" errors
|
|
117
|
-
- Check your API key is correct
|
|
118
|
-
- Ensure the workspace ID matches your workspace slug
|
|
119
|
-
- Verify the project ID is a valid UUID
|
|
120
|
-
|
|
121
|
-
### "Project not found" errors
|
|
122
|
-
- Confirm you have access to the project
|
|
123
|
-
- Check the project ID in the URL
|
|
124
|
-
|
|
125
|
-
### Windows-specific issues
|
|
126
|
-
- Always use `cmd /c` before `npx` commands
|
|
127
|
-
- Use `^` for line continuation instead of `\`
|
|
128
|
-
|
|
129
|
-
## Links
|
|
130
|
-
|
|
131
|
-
- [Aether App](https://www.aithr.ai)
|
|
132
|
-
- [Claude Code](https://claude.com/claude-code)
|
|
133
|
-
- [MCP Documentation](https://modelcontextprotocol.io)
|
|
134
|
-
|
|
135
|
-
## License
|
|
136
|
-
|
|
137
|
-
MIT
|
|
49
|
+
- `aether_start_orchestra` - Start orchestration session
|
|
50
|
+
- `aether_set_orchestra_plan` - Define development plan
|
|
51
|
+
- `aether_orchestra_approve` - Approve and start execution
|
|
52
|
+
- `aether_orchestra_status` - Get progress and status
|
|
53
|
+
- `aether_orchestra_next` - Get next ready tasks
|
|
54
|
+
- `aether_orchestra_trigger_task` - Execute a specific task
|
|
55
|
+
- `aether_report_to_orchestrator` - Report completion/blockers
|
|
56
|
+
- `aether_orchestra_pause` / `aether_orchestra_resume` - Control execution
|
|
57
|
+
- `aether_complete_orchestra` - Mark session complete
|
|
58
|
+
- `aether_orchestra_set_autonomous` - Enable/disable autonomous mode
|
|
59
|
+
|
|
60
|
+
### Folders & Artifacts
|
|
61
|
+
- `aether_list_folders` - List project folders
|
|
62
|
+
- `aether_create_folder` - Create a folder
|
|
63
|
+
- `aether_delete_folder` - Delete a folder
|
|
64
|
+
- `aether_add_file_to_folder` - Add files to folders
|
|
65
|
+
- `aether_create_artifact` - Create and place artifacts
|
|
66
|
+
|
|
67
|
+
## Documentation
|
|
68
|
+
|
|
69
|
+
Full documentation at [https://www.aithr.ai/docs/orchestra](https://www.aithr.ai/docs/orchestra)
|
package/index.js
CHANGED
|
@@ -208,7 +208,7 @@ class MCPServer {
|
|
|
208
208
|
},
|
|
209
209
|
{
|
|
210
210
|
name: 'aether_trigger_generation',
|
|
211
|
-
description: 'Trigger AI generation for an agent on the canvas',
|
|
211
|
+
description: 'Trigger AI generation for an agent on the canvas. For orchestra mode, pass the orchestraContext from aether_orchestra_next to inject full context including upstream artifacts.',
|
|
212
212
|
inputSchema: {
|
|
213
213
|
type: 'object',
|
|
214
214
|
properties: {
|
|
@@ -218,7 +218,11 @@ class MCPServer {
|
|
|
218
218
|
},
|
|
219
219
|
context: {
|
|
220
220
|
type: 'string',
|
|
221
|
-
description: 'Additional context for generation',
|
|
221
|
+
description: 'Additional context for generation (runtime override)',
|
|
222
|
+
},
|
|
223
|
+
orchestraContext: {
|
|
224
|
+
type: 'object',
|
|
225
|
+
description: 'Orchestra context from aether_orchestra_next - includes sessionId, taskId, phase info, upstream artifacts, and plan excerpt. Pass this directly from the task object returned by orchestra_next.',
|
|
222
226
|
},
|
|
223
227
|
},
|
|
224
228
|
required: ['nodeId'],
|
|
@@ -665,7 +669,7 @@ class MCPServer {
|
|
|
665
669
|
},
|
|
666
670
|
{
|
|
667
671
|
name: 'aether_orchestra_next',
|
|
668
|
-
description: 'Get the next tasks that are ready to execute (dependencies satisfied).
|
|
672
|
+
description: 'Get the next tasks that are ready to execute (dependencies satisfied). Returns tasks with pre-assembled orchestraContext including upstream artifacts. Pass orchestraContext directly to aether_trigger_generation.',
|
|
669
673
|
inputSchema: {
|
|
670
674
|
type: 'object',
|
|
671
675
|
properties: {
|
|
@@ -677,6 +681,10 @@ class MCPServer {
|
|
|
677
681
|
type: 'number',
|
|
678
682
|
description: 'Maximum number of ready tasks to return (default: 5)',
|
|
679
683
|
},
|
|
684
|
+
createNodes: {
|
|
685
|
+
type: 'boolean',
|
|
686
|
+
description: 'Auto-create canvas nodes for ready tasks (default: true)',
|
|
687
|
+
},
|
|
680
688
|
},
|
|
681
689
|
required: ['sessionId'],
|
|
682
690
|
},
|
|
@@ -797,6 +805,28 @@ class MCPServer {
|
|
|
797
805
|
required: ['sessionId', 'completionReason'],
|
|
798
806
|
},
|
|
799
807
|
},
|
|
808
|
+
{
|
|
809
|
+
name: 'aether_orchestra_set_autonomous',
|
|
810
|
+
description: 'Enable or disable autonomous mode for an orchestra session. When enabled, a background worker automatically advances the session without manual intervention. CAUTION: The system will execute tasks until stopped or completion criteria are met.',
|
|
811
|
+
inputSchema: {
|
|
812
|
+
type: 'object',
|
|
813
|
+
properties: {
|
|
814
|
+
sessionId: {
|
|
815
|
+
type: 'string',
|
|
816
|
+
description: 'Orchestra session ID',
|
|
817
|
+
},
|
|
818
|
+
enabled: {
|
|
819
|
+
type: 'boolean',
|
|
820
|
+
description: 'Enable (true) or disable (false) autonomous mode',
|
|
821
|
+
},
|
|
822
|
+
maxConcurrent: {
|
|
823
|
+
type: 'number',
|
|
824
|
+
description: 'Maximum number of agents to run in parallel (default: 3)',
|
|
825
|
+
},
|
|
826
|
+
},
|
|
827
|
+
required: ['sessionId', 'enabled'],
|
|
828
|
+
},
|
|
829
|
+
},
|
|
800
830
|
];
|
|
801
831
|
}
|
|
802
832
|
|
|
@@ -951,6 +981,9 @@ class MCPServer {
|
|
|
951
981
|
case 'aether_complete_orchestra':
|
|
952
982
|
result = await this.completeOrchestra(args);
|
|
953
983
|
break;
|
|
984
|
+
case 'aether_orchestra_set_autonomous':
|
|
985
|
+
result = await this.orchestraSetAutonomous(args);
|
|
986
|
+
break;
|
|
954
987
|
default:
|
|
955
988
|
return this.errorResponse(id, -32602, `Unknown tool: ${name}`);
|
|
956
989
|
}
|
|
@@ -1024,7 +1057,8 @@ class MCPServer {
|
|
|
1024
1057
|
}
|
|
1025
1058
|
|
|
1026
1059
|
try {
|
|
1027
|
-
|
|
1060
|
+
// Use MCP endpoint which supports API key auth
|
|
1061
|
+
const data = await this.mcpApiCall(`/mcp/projects/${projectId}/canvas`);
|
|
1028
1062
|
|
|
1029
1063
|
// If summary mode, return only essential info (much smaller response)
|
|
1030
1064
|
if (summary) {
|
|
@@ -1206,84 +1240,50 @@ class MCPServer {
|
|
|
1206
1240
|
}
|
|
1207
1241
|
|
|
1208
1242
|
async triggerGeneration(args) {
|
|
1209
|
-
const { nodeId, context } = args;
|
|
1243
|
+
const { nodeId, context, orchestraContext } = args;
|
|
1210
1244
|
const projectId = config.projectId;
|
|
1211
1245
|
|
|
1212
1246
|
if (!projectId) {
|
|
1213
1247
|
return { error: 'No project ID configured. Set AETHER_PROJECT_ID environment variable.' };
|
|
1214
1248
|
}
|
|
1215
1249
|
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
const headers = {
|
|
1220
|
-
'Content-Type': 'application/json',
|
|
1221
|
-
};
|
|
1222
|
-
|
|
1223
|
-
if (config.apiKey) {
|
|
1224
|
-
headers['Authorization'] = `Bearer ${config.apiKey}`;
|
|
1225
|
-
}
|
|
1226
|
-
|
|
1227
|
-
const response = await fetch(url, {
|
|
1228
|
-
method: 'POST',
|
|
1229
|
-
headers,
|
|
1230
|
-
body: JSON.stringify({ context }),
|
|
1231
|
-
});
|
|
1232
|
-
|
|
1233
|
-
if (!response.ok) {
|
|
1234
|
-
const errorText = await response.text();
|
|
1235
|
-
throw new Error(`API error: ${response.status} - ${errorText}`);
|
|
1236
|
-
}
|
|
1250
|
+
if (!nodeId) {
|
|
1251
|
+
return { error: 'nodeId is required' };
|
|
1252
|
+
}
|
|
1237
1253
|
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
const
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
if (done) break;
|
|
1250
|
-
|
|
1251
|
-
buffer += decoder.decode(value, { stream: true });
|
|
1252
|
-
|
|
1253
|
-
// Parse SSE events from buffer
|
|
1254
|
-
const lines = buffer.split('\n');
|
|
1255
|
-
buffer = lines.pop() || ''; // Keep incomplete line in buffer
|
|
1256
|
-
|
|
1257
|
-
for (const line of lines) {
|
|
1258
|
-
if (line.startsWith('event: ')) {
|
|
1259
|
-
lastEvent = line.slice(7).trim();
|
|
1260
|
-
} else if (line.startsWith('data: ')) {
|
|
1261
|
-
try {
|
|
1262
|
-
const data = JSON.parse(line.slice(6));
|
|
1263
|
-
|
|
1264
|
-
if (lastEvent === 'generation_complete') {
|
|
1265
|
-
artifactId = data.artifactId;
|
|
1266
|
-
sessionId = data.sessionId;
|
|
1267
|
-
} else if (lastEvent === 'error') {
|
|
1268
|
-
error = data.error || 'Generation failed';
|
|
1269
|
-
}
|
|
1270
|
-
} catch {
|
|
1271
|
-
// Ignore JSON parse errors for partial data
|
|
1272
|
-
}
|
|
1273
|
-
}
|
|
1254
|
+
try {
|
|
1255
|
+
// Use MCP endpoint with API key auth (non-streaming, waits for completion)
|
|
1256
|
+
const result = await this.mcpApiCall(
|
|
1257
|
+
`/mcp/projects/${projectId}/generate`,
|
|
1258
|
+
'POST',
|
|
1259
|
+
{
|
|
1260
|
+
nodeId,
|
|
1261
|
+
context: context || undefined,
|
|
1262
|
+
// Pass orchestraContext from orchestra_next (includes upstreamArtifacts)
|
|
1263
|
+
orchestraContext: orchestraContext || undefined,
|
|
1264
|
+
previewLength: 500,
|
|
1274
1265
|
}
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
if (error) {
|
|
1278
|
-
return { success: false, error };
|
|
1279
|
-
}
|
|
1266
|
+
);
|
|
1280
1267
|
|
|
1281
1268
|
return {
|
|
1282
1269
|
success: true,
|
|
1283
1270
|
message: 'Generation completed',
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1271
|
+
node: result.node,
|
|
1272
|
+
generation: {
|
|
1273
|
+
status: result.generation?.status,
|
|
1274
|
+
preview: result.generation?.preview,
|
|
1275
|
+
hasMore: result.generation?.hasMore,
|
|
1276
|
+
duration: result.generation?.duration,
|
|
1277
|
+
},
|
|
1278
|
+
artifact: result.artifact
|
|
1279
|
+
? {
|
|
1280
|
+
id: result.artifact.id,
|
|
1281
|
+
title: result.artifact.title,
|
|
1282
|
+
type: result.artifact.type,
|
|
1283
|
+
}
|
|
1284
|
+
: null,
|
|
1285
|
+
usage: result.usage,
|
|
1286
|
+
hint: result.artifact?.id
|
|
1287
1287
|
? 'Use aether_extract_files to extract code from the artifact, then aether_push_artifacts to push to GitHub.'
|
|
1288
1288
|
: undefined,
|
|
1289
1289
|
};
|
|
@@ -1308,7 +1308,8 @@ class MCPServer {
|
|
|
1308
1308
|
}
|
|
1309
1309
|
|
|
1310
1310
|
try {
|
|
1311
|
-
|
|
1311
|
+
// Use MCP endpoint which supports API key auth
|
|
1312
|
+
const data = await this.mcpApiCall(`/mcp/projects/${projectId}/canvas`);
|
|
1312
1313
|
// Canvas API returns nodes directly - they have agentId, agentType, status, customConfig
|
|
1313
1314
|
const nodes = data.nodes || [];
|
|
1314
1315
|
|
|
@@ -2026,7 +2027,7 @@ class MCPServer {
|
|
|
2026
2027
|
return { error: 'No project ID configured. Set AETHER_PROJECT_ID environment variable.' };
|
|
2027
2028
|
}
|
|
2028
2029
|
|
|
2029
|
-
const { sessionId, maxTasks = 5 } = args;
|
|
2030
|
+
const { sessionId, maxTasks = 5, createNodes = true } = args;
|
|
2030
2031
|
|
|
2031
2032
|
if (!sessionId) {
|
|
2032
2033
|
return { error: 'sessionId is required' };
|
|
@@ -2036,15 +2037,32 @@ class MCPServer {
|
|
|
2036
2037
|
const data = await this.mcpApiCall(
|
|
2037
2038
|
`/mcp/projects/${projectId}/orchestra/next`,
|
|
2038
2039
|
'POST',
|
|
2039
|
-
{ sessionId, maxTasks }
|
|
2040
|
+
{ sessionId, maxTasks, createNodes }
|
|
2040
2041
|
);
|
|
2041
2042
|
|
|
2043
|
+
// Enhanced response with orchestraContext for each task
|
|
2044
|
+
// Tasks now include pre-assembled context and are ready to trigger directly
|
|
2045
|
+
const tasks = (data.tasks || []).map((t) => ({
|
|
2046
|
+
id: t.id,
|
|
2047
|
+
taskNumber: t.taskNumber,
|
|
2048
|
+
title: t.title,
|
|
2049
|
+
agentId: t.agentId,
|
|
2050
|
+
nodeId: t.nodeId,
|
|
2051
|
+
// Pre-assembled orchestraContext - pass this to aether_trigger_generation
|
|
2052
|
+
orchestraContext: t.orchestraContext,
|
|
2053
|
+
readyToTrigger: t.readyToTrigger,
|
|
2054
|
+
resolvedArtifactCount: t.resolvedArtifactCount,
|
|
2055
|
+
}));
|
|
2056
|
+
|
|
2042
2057
|
return {
|
|
2043
|
-
|
|
2058
|
+
tasks,
|
|
2044
2059
|
count: data.count || 0,
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2060
|
+
totalReady: data.totalReady || data.count || 0,
|
|
2061
|
+
phase: data.phase,
|
|
2062
|
+
hint: tasks.length > 0
|
|
2063
|
+
? 'Each task includes nodeId and orchestraContext. Call aether_trigger_generation(nodeId, orchestraContext) to execute.'
|
|
2064
|
+
: data.message || 'No tasks ready. Check aether_orchestra_status for blockers or completion.',
|
|
2065
|
+
sessionStatus: data.sessionStatus,
|
|
2048
2066
|
};
|
|
2049
2067
|
} catch (e) {
|
|
2050
2068
|
return { error: e.message };
|
|
@@ -2237,6 +2255,45 @@ class MCPServer {
|
|
|
2237
2255
|
}
|
|
2238
2256
|
}
|
|
2239
2257
|
|
|
2258
|
+
async orchestraSetAutonomous(args) {
|
|
2259
|
+
const projectId = config.projectId;
|
|
2260
|
+
|
|
2261
|
+
if (!projectId) {
|
|
2262
|
+
return { error: 'No project ID configured. Set AETHER_PROJECT_ID environment variable.' };
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
const { sessionId, enabled, maxConcurrent } = args;
|
|
2266
|
+
|
|
2267
|
+
if (!sessionId || enabled === undefined) {
|
|
2268
|
+
return { error: 'sessionId and enabled are required' };
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
try {
|
|
2272
|
+
const data = await this.mcpApiCall(
|
|
2273
|
+
`/mcp/projects/${projectId}/orchestra`,
|
|
2274
|
+
'POST',
|
|
2275
|
+
{
|
|
2276
|
+
action: 'set_autonomous',
|
|
2277
|
+
sessionId,
|
|
2278
|
+
enabled,
|
|
2279
|
+
maxConcurrent: maxConcurrent || 3,
|
|
2280
|
+
}
|
|
2281
|
+
);
|
|
2282
|
+
|
|
2283
|
+
return {
|
|
2284
|
+
success: true,
|
|
2285
|
+
sessionId,
|
|
2286
|
+
autoAdvance: data.autoAdvance,
|
|
2287
|
+
maxConcurrentAgents: data.maxConcurrentAgents,
|
|
2288
|
+
message: enabled
|
|
2289
|
+
? '⚠️ AUTONOMOUS MODE ENABLED: The system will automatically execute tasks every minute. Use aether_orchestra_status to monitor progress or aether_orchestra_set_autonomous(enabled: false) to stop.'
|
|
2290
|
+
: 'Autonomous mode disabled. Use aether_orchestra_next and aether_trigger_generation for manual control.',
|
|
2291
|
+
};
|
|
2292
|
+
} catch (e) {
|
|
2293
|
+
return { success: false, error: e.message };
|
|
2294
|
+
}
|
|
2295
|
+
}
|
|
2296
|
+
|
|
2240
2297
|
async run() {
|
|
2241
2298
|
const rl = readline.createInterface({
|
|
2242
2299
|
input: process.stdin,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aithr-ai/mcp-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "MCP server to connect Claude Code to Aether canvas - AI-powered team workspace for software development",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -20,20 +20,14 @@
|
|
|
20
20
|
"orchestration",
|
|
21
21
|
"anthropic"
|
|
22
22
|
],
|
|
23
|
+
"author": "Aether AI",
|
|
23
24
|
"license": "MIT",
|
|
24
|
-
"engines": {
|
|
25
|
-
"node": ">=18.0.0"
|
|
26
|
-
},
|
|
27
25
|
"repository": {
|
|
28
26
|
"type": "git",
|
|
29
|
-
"url": "https://github.com/
|
|
27
|
+
"url": "https://github.com/aithr-ai/mcp-server"
|
|
30
28
|
},
|
|
31
29
|
"homepage": "https://www.aithr.ai",
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
}
|
|
35
|
-
"files": [
|
|
36
|
-
"index.js",
|
|
37
|
-
"README.md"
|
|
38
|
-
]
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=18.0.0"
|
|
32
|
+
}
|
|
39
33
|
}
|