@aithr-ai/mcp-server 1.0.5 → 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.
Files changed (3) hide show
  1. package/README.md +49 -117
  2. package/index.js +105 -12
  3. package/package.json +6 -12
package/README.md CHANGED
@@ -1,137 +1,69 @@
1
- # Aether MCP Server
1
+ # @aithr-ai/mcp-server
2
2
 
3
- Connect [Claude Code](https://claude.com/claude-code) to [Aether](https://www.aithr.ai) - the AI-powered team workspace for software development.
3
+ MCP (Model Context Protocol) server to connect Claude Code to the Aether canvas.
4
4
 
5
5
  ## Quick Install
6
6
 
7
- ### One-Line Setup (Recommended)
8
-
9
- **Mac/Linux:**
7
+ ### Mac/Linux
10
8
  ```bash
11
9
  claude mcp add --transport stdio aether \
12
- --env AETHER_API_KEY=YOUR_API_KEY \
13
- --env AETHER_WORKSPACE_ID=your-workspace-slug \
14
- --env AETHER_PROJECT_ID=your-project-uuid \
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
- **Windows:**
20
- ```bash
16
+ ### Windows
17
+ ```cmd
21
18
  claude mcp add --transport stdio aether ^
22
- --env AETHER_API_KEY=YOUR_API_KEY ^
23
- --env AETHER_WORKSPACE_ID=your-workspace-slug ^
24
- --env AETHER_PROJECT_ID=your-project-uuid ^
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
- ### Get Your Credentials
25
+ ## Get Your Credentials
30
26
 
31
- 1. **API Key**: Go to Aether Settings > API Keys > Create Key
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 & Agent Tools
38
- | Tool | Description |
39
- |------|-------------|
40
- | `aether_canvas_state` | Get current canvas nodes, edges, and status |
41
- | `aether_add_agent` | Add an AI agent to the canvas |
42
- | `aether_remove_node` | Remove a node from the canvas |
43
- | `aether_connect_nodes` | Create connections between nodes |
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 Tools
48
- | Tool | Description |
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
- | Tool | Description |
58
- |------|-------------|
59
- | `aether_automation_status` | Check what's ready to push |
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
- | Tool | Description |
66
- |------|-------------|
67
- | `aether_start_orchestra` | Start an orchestra session |
68
- | `aether_set_orchestra_plan` | Set the development plan |
69
- | `aether_orchestra_approve` | Approve and begin execution |
70
- | `aether_orchestra_status` | Get current progress |
71
- | `aether_orchestra_next` | Get next ready tasks |
72
- | `aether_orchestra_trigger_task` | Execute a specific task |
73
- | `aether_report_to_orchestrator` | Report task completion/blockers |
74
- | `aether_orchestra_pause` | Pause execution |
75
- | `aether_orchestra_resume` | Resume execution |
76
- | `aether_complete_orchestra` | Complete the session |
77
-
78
- ### Project & Workspace
79
- | Tool | Description |
80
- |------|-------------|
81
- | `aether_list_projects` | List your projects |
82
- | `aether_list_workspaces` | List your workspaces |
83
- | `aether_switch_project` | Switch active project |
84
-
85
- ### Canvas Folders
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). Use this to determine what to trigger next.',
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
- const data = await this.apiCall(`/workspaces/${config.workspaceSlug}/projects/${projectId}/canvas`);
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,7 +1240,7 @@ 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) {
@@ -1225,6 +1259,8 @@ class MCPServer {
1225
1259
  {
1226
1260
  nodeId,
1227
1261
  context: context || undefined,
1262
+ // Pass orchestraContext from orchestra_next (includes upstreamArtifacts)
1263
+ orchestraContext: orchestraContext || undefined,
1228
1264
  previewLength: 500,
1229
1265
  }
1230
1266
  );
@@ -1272,7 +1308,8 @@ class MCPServer {
1272
1308
  }
1273
1309
 
1274
1310
  try {
1275
- const data = await this.apiCall(`/workspaces/${config.workspaceSlug}/projects/${projectId}/canvas`);
1311
+ // Use MCP endpoint which supports API key auth
1312
+ const data = await this.mcpApiCall(`/mcp/projects/${projectId}/canvas`);
1276
1313
  // Canvas API returns nodes directly - they have agentId, agentType, status, customConfig
1277
1314
  const nodes = data.nodes || [];
1278
1315
 
@@ -1990,7 +2027,7 @@ class MCPServer {
1990
2027
  return { error: 'No project ID configured. Set AETHER_PROJECT_ID environment variable.' };
1991
2028
  }
1992
2029
 
1993
- const { sessionId, maxTasks = 5 } = args;
2030
+ const { sessionId, maxTasks = 5, createNodes = true } = args;
1994
2031
 
1995
2032
  if (!sessionId) {
1996
2033
  return { error: 'sessionId is required' };
@@ -2000,15 +2037,32 @@ class MCPServer {
2000
2037
  const data = await this.mcpApiCall(
2001
2038
  `/mcp/projects/${projectId}/orchestra/next`,
2002
2039
  'POST',
2003
- { sessionId, maxTasks }
2040
+ { sessionId, maxTasks, createNodes }
2004
2041
  );
2005
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
+
2006
2057
  return {
2007
- readyTasks: data.tasks || [],
2058
+ tasks,
2008
2059
  count: data.count || 0,
2009
- hint: data.count > 0
2010
- ? 'Use aether_orchestra_trigger_task with each taskId to start execution'
2011
- : 'No tasks ready. Check aether_orchestra_status for blockers or completion.',
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,
2012
2066
  };
2013
2067
  } catch (e) {
2014
2068
  return { error: e.message };
@@ -2201,6 +2255,45 @@ class MCPServer {
2201
2255
  }
2202
2256
  }
2203
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
+
2204
2297
  async run() {
2205
2298
  const rl = readline.createInterface({
2206
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.5",
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/your-org/aether"
27
+ "url": "https://github.com/aithr-ai/mcp-server"
30
28
  },
31
29
  "homepage": "https://www.aithr.ai",
32
- "bugs": {
33
- "url": "https://github.com/your-org/aether/issues"
34
- },
35
- "files": [
36
- "index.js",
37
- "README.md"
38
- ]
30
+ "engines": {
31
+ "node": ">=18.0.0"
32
+ }
39
33
  }