Skip to content

Commit 57ffd50

Browse files
committed
use tui logging, process port input
file-logging to not pollute stdio pipe w/ non-mcp messages
1 parent b4dee1c commit 57ffd50

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

packages/cli/src/commands/studio.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1246,7 +1246,7 @@ function getMCPConnectionInfo(
12461246
const couchDetails = couchDBManager.getConnectionDetails();
12471247

12481248
return {
1249-
command: `node ${mcpServerPath} ${unpackResult.courseId}`,
1249+
command: `node ${mcpServerPath} ${unpackResult.databaseName} ${couchDetails.port}`,
12501250
env: {
12511251
COUCHDB_SERVER_URL: couchDetails.url.replace(/^https?:\/\//, ''),
12521252
COUCHDB_SERVER_PROTOCOL: couchDetails.url.startsWith('https') ? 'https' : 'http',

packages/cli/src/mcp-server.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
#!/usr/bin/env node
22

3-
import { initializeDataLayer, getDataLayer } from '@vue-skuilder/db';
3+
import { initializeDataLayer, getDataLayer, initializeTuiLogging } from '@vue-skuilder/db';
44
import { MCPServer } from '@vue-skuilder/mcp';
55
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
66

7+
initializeTuiLogging();
8+
79
async function main() {
810
try {
911
// Get course ID from command line arguments
@@ -13,18 +15,22 @@ async function main() {
1315
console.error('Example: node mcp-server.js 2aeb8315ef78f3e89ca386992d00825b');
1416
process.exit(1);
1517
}
18+
const port = process.argv[3] ? parseInt(process.argv[3], 10) : 5984;
1619

1720
console.error('Starting Vue-Skuilder MCP Server...');
1821
console.error(`Using course: ${courseId}`);
1922

2023
// Get CouchDB configuration from environment variables
24+
// MCP server runs in a headless Node.js environment, so we skip user DB initialization
2125
const couchdbConfig = {
2226
type: 'couch' as const,
2327
options: {
24-
COUCHDB_SERVER_URL: process.env.COUCHDB_SERVER_URL || 'localhost:5985',
28+
COUCHDB_SERVER_URL: process.env.COUCHDB_SERVER_URL || `localhost:${port}`,
2529
COUCHDB_SERVER_PROTOCOL: process.env.COUCHDB_SERVER_PROTOCOL || 'http',
26-
COUCHDB_USERNAME: process.env.COUCHDB_USERNAME || 'admin',
27-
COUCHDB_PASSWORD: process.env.COUCHDB_PASSWORD || 'password',
30+
COUCHDB_USERNAME: 'admin',
31+
COUCHDB_PASSWORD: 'password',
32+
COURSE_IDS: [courseId], // Limit to specific course
33+
localStoragePrefix: 'mcp-server',
2834
},
2935
};
3036

@@ -34,11 +40,7 @@ async function main() {
3440

3541
// Initialize data layer and get course DB
3642
await initializeDataLayer(couchdbConfig);
37-
38-
const dataLayer = getDataLayer();
39-
await dataLayer.initialize();
40-
41-
const courseDB = dataLayer.getCourseDB(courseId);
43+
const courseDB = getDataLayer().getCourseDB(courseId);
4244

4345
// Create and start MCP server
4446
const server = new MCPServer(courseDB, {
@@ -63,5 +65,5 @@ async function main() {
6365

6466
main().catch((error) => {
6567
console.error('Unhandled error:', error);
66-
process.exit(1);
68+
// process.exit(1);
6769
});

0 commit comments

Comments
 (0)