#!/usr/bin/env node
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
import { getAllTools, getToolHandler } from './tools/index.js';
class NinetnMCPServer {
private server: Server;
constructor() {
this.server = new Server(
{
name: 'ninetn-mcp-server',
version: '0.1.3',
},
{
capabilities: {
tools: {},
},
}
);
this.setupHandlers();
}
private setupHandlers() {
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: getAllTools()
};
});
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
const handler = getToolHandler(name);
if (!handler) {
throw new Error(`Unknown tool: ${name}`);
}
return await handler(args);
});
}
async start() {
const transport = new StdioServerTransport();
await this.server.connect(transport);
}
}
const server = new NinetnMCPServer();
server.start().catch(console.error);