Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions typescript/packages/cli/src/commands/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ async function createProjectFromScratch(
fs.writeJSONSync(path.join(targetDir, 'tsconfig.json'), tsconfig, { spaces: 2 });
fs.mkdirSync(path.join(targetDir, 'src'), { recursive: true });

const indexTs = `import { createServer, createTool, z } from '@nitrostack/core';
const indexTs = `import { createServer, Tool, z } from '@nitrostack/core';

const server = createServer({
name: '${projectName}',
Expand All @@ -361,7 +361,7 @@ const server = createServer({
});

server.tool(
createTool({
new Tool({
name: 'hello',
description: 'Say hello to someone',
inputSchema: z.object({
Expand Down Expand Up @@ -409,7 +409,7 @@ npm run build
npm start
\`\`\`

Built with [NitroStack](https://nitrostack.dev) ⚡
Built with [NitroStack](https://nitrostack.ai) ⚡
`;

fs.writeFileSync(path.join(targetDir, 'README.md'), readme);
Expand Down
3 changes: 2 additions & 1 deletion typescript/packages/core/src/core/logger.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import winston from 'winston';
import os from 'os';
import { Logger, LogMeta } from './types.js';
import { EventEmitterTransport } from './events/log-emitter.js';

Expand Down Expand Up @@ -53,7 +54,7 @@ export function createLogger(options: {
// Silent logger - logs nowhere (better than crashing)
transports.push(
new winston.transports.File({
filename: '/dev/null', // Discard logs
filename: os.devNull, // Cross-platform: works on Windows, macOS, Linux
silent: true,
})
);
Expand Down
7 changes: 4 additions & 3 deletions typescript/packages/core/src/core/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import {
ResourceTemplateDefinition,
} from './types.js';
import { createLogger } from './logger.js';
import { ToolExecutionError, ValidationError, ResourceNotFoundError } from './errors.js';
import { ToolExecutionError, ValidationError, ResourceNotFoundError, PromptNotFoundError } from './errors.js';
import { v4 as uuidv4 } from 'uuid';
import { isModule, getModuleMetadata } from './module.js';
import { buildController } from './builders.js';
Expand Down Expand Up @@ -773,6 +773,7 @@ export class NitroStackServer {
mimeType: resource.mimeType || 'application/json',
text: JSON.stringify(content.data, null, 2),
};
break;
default:
// Fallback: if content doesn't match ResourceContent shape, treat as JSON
responseContent = {
Expand Down Expand Up @@ -853,7 +854,7 @@ export class NitroStackServer {
const prompt = this.prompts.get(name);

if (!prompt) {
throw new Error(`Prompt not found: ${name}`);
throw new PromptNotFoundError(name);
}

const context = this.createContext();
Expand Down Expand Up @@ -914,7 +915,7 @@ export class NitroStackServer {
// Use explicit transport if set, otherwise infer from NODE_ENV
const transportType = explicitTransport || (isDevelopment ? 'stdio' : 'dual');
this._transportType = transportType;
console.error(`[DEBUG] NitroStackServer.start(): NODE_ENV=${process.env.NODE_ENV}, MCP_TRANSPORT_TYPE=${explicitTransport}, transportType=${transportType}`);
this.logger.debug(`NitroStackServer.start(): NODE_ENV=${process.env.NODE_ENV}, MCP_TRANSPORT_TYPE=${explicitTransport}, transportType=${transportType}`);

// Call onModuleInit for all modules
for (const moduleClass of this.modules) {
Expand Down
5 changes: 3 additions & 2 deletions typescript/packages/core/src/core/tool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -280,8 +280,9 @@ export class Tool<TInput = unknown, TOutput = unknown> {
$refStrategy: 'none',
target: 'jsonSchema7',
}) as JsonSchema;
} catch (error) {
console.error('Error converting Zod schema:', error);
} catch (_error) {
// Silently fall back to permissive schema — console output is
// disabled in MCP servers as it breaks the JSON-RPC stdio protocol.
return { type: 'object', properties: {}, additionalProperties: true };
}
}
Expand Down