agent-planner-mcp 0.3.1 → 0.5.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/src/index.js CHANGED
@@ -1,12 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
3
3
  const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
4
+ const { MCPHTTPServer } = require('./server-http');
4
5
  const { setupTools } = require('./tools');
6
+ const { version } = require('../package.json');
5
7
  require('dotenv').config();
6
8
 
7
9
  /**
8
10
  * Initialize the Planning System MCP Server
9
- *
11
+ *
12
+ * Supports two transport modes:
13
+ * - stdio: For local use with Claude Desktop, Claude Code, etc.
14
+ * - http: For remote access via Anthropic's MCP Connector
15
+ *
16
+ * Set MCP_TRANSPORT=http to use HTTP mode
17
+ *
10
18
  * Features:
11
19
  * - Simplified architecture with tools-only interface
12
20
  * - Full CRUD operations on all entities
@@ -17,47 +25,72 @@ require('dotenv').config();
17
25
  */
18
26
  async function main() {
19
27
  const isDev = process.env.NODE_ENV === 'development';
20
-
28
+ const transport = process.env.MCP_TRANSPORT || 'stdio';
29
+
21
30
  if (isDev) {
22
31
  console.error('Initializing Planning System MCP Server...');
32
+ console.error(`Transport mode: ${transport}`);
23
33
  }
24
-
34
+
25
35
  try {
26
36
  // Log environment settings
27
37
  console.error(`API URL: ${process.env.API_URL || 'http://localhost:3000'}`);
28
-
38
+
29
39
  // Check for token
30
40
  const userApiToken = process.env.USER_API_TOKEN || process.env.API_TOKEN;
31
41
  console.error(`User API Token: ${userApiToken ? '***' + userApiToken.slice(-4) : 'NOT SET'}`);
32
42
  console.error(`MCP Server Name: ${process.env.MCP_SERVER_NAME || 'planning-system-mcp'}`);
33
- console.error(`MCP Server Version: ${process.env.MCP_SERVER_VERSION || '0.2.0'}`);
34
-
43
+ console.error(`MCP Server Version: ${process.env.MCP_SERVER_VERSION || version}`);
44
+
35
45
  // Validate required environment variables
36
46
  if (!userApiToken) {
37
47
  throw new Error('USER_API_TOKEN environment variable is required. Please generate one from the Agent Planner UI and set it in .env file.');
38
48
  }
39
-
40
- // Create MCP server instance
41
- const server = new Server({
42
- name: process.env.MCP_SERVER_NAME || "planning-system-mcp",
43
- version: process.env.MCP_SERVER_VERSION || "0.2.0"
44
- }, {
45
- capabilities: {
46
- tools: {}
47
- }
48
- });
49
49
 
50
- console.error('MCP Server created');
51
-
52
- // Setup tools
53
- setupTools(server);
54
-
55
- // Connect transport
56
- const transport = new StdioServerTransport();
57
- await server.connect(transport);
58
-
59
- console.error('MCP Server running on stdio transport');
60
- console.error('Ready to accept connections from agents');
50
+ if (transport === 'http') {
51
+ // HTTP/SSE transport mode
52
+ const httpServer = new MCPHTTPServer({
53
+ port: process.env.PORT || 3100,
54
+ host: process.env.HOST || '127.0.0.1'
55
+ });
56
+
57
+ await httpServer.start();
58
+
59
+ // Handle graceful shutdown
60
+ process.on('SIGINT', async () => {
61
+ console.error('\nShutting down MCP HTTP Server...');
62
+ await httpServer.stop();
63
+ process.exit(0);
64
+ });
65
+
66
+ process.on('SIGTERM', async () => {
67
+ console.error('\nShutting down MCP HTTP Server...');
68
+ await httpServer.stop();
69
+ process.exit(0);
70
+ });
71
+ } else {
72
+ // Stdio transport mode (default)
73
+ const server = new Server({
74
+ name: process.env.MCP_SERVER_NAME || "planning-system-mcp",
75
+ version: process.env.MCP_SERVER_VERSION || version
76
+ }, {
77
+ capabilities: {
78
+ tools: {}
79
+ }
80
+ });
81
+
82
+ console.error('MCP Server created');
83
+
84
+ // Setup tools
85
+ setupTools(server);
86
+
87
+ // Connect transport
88
+ const stdioTransport = new StdioServerTransport();
89
+ await server.connect(stdioTransport);
90
+
91
+ console.error('MCP Server running on stdio transport');
92
+ console.error('Ready to accept connections from agents');
93
+ }
61
94
  } catch (error) {
62
95
  console.error('Failed to initialize MCP server:', error);
63
96
  process.exit(1);
@@ -49,8 +49,7 @@ async function findContentInPlan(planId, query) {
49
49
  nodes: results.filter(r => r.type === 'node'),
50
50
  comments: results.filter(r => r.type === 'comment'),
51
51
  logs: results.filter(r => r.type === 'log'),
52
- artifacts: results.filter(r => r.type === 'artifact'),
53
- other: results.filter(r => !['node', 'comment', 'log', 'artifact'].includes(r.type))
52
+ other: results.filter(r => !['node', 'comment', 'log'].includes(r.type))
54
53
  };
55
54
 
56
55
  // Add summary information
@@ -62,7 +61,6 @@ async function findContentInPlan(planId, query) {
62
61
  nodes: organizedResults.nodes.length,
63
62
  comments: organizedResults.comments.length,
64
63
  logs: organizedResults.logs.length,
65
- artifacts: organizedResults.artifacts.length,
66
64
  other: organizedResults.other.length
67
65
  },
68
66
  results: organizedResults
@@ -73,8 +71,8 @@ async function findContentInPlan(planId, query) {
73
71
  query,
74
72
  planId,
75
73
  resultCount: 0,
76
- typeBreakdown: { nodes: 0, comments: 0, logs: 0, artifacts: 0, other: 0 },
77
- results: { nodes: [], comments: [], logs: [], artifacts: [], other: [] }
74
+ typeBreakdown: { nodes: 0, comments: 0, logs: 0, other: 0 },
75
+ results: { nodes: [], comments: [], logs: [], other: [] }
78
76
  };
79
77
  }
80
78
  }