Skip to content

Commit 09e1385

Browse files
feat(mcp): allow setting logging level
1 parent 328471e commit 09e1385

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

packages/mcp-server/src/server.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
55
import { Endpoint, endpoints, HandlerFunction, query } from './tools';
66
import {
77
CallToolRequestSchema,
8-
Implementation,
98
ListToolsRequestSchema,
9+
SetLevelRequestSchema,
10+
Implementation,
1011
Tool,
1112
} from '@modelcontextprotocol/sdk/types.js';
1213
import { ClientOptions } from 'cas-parser-node';
@@ -85,7 +86,7 @@ export function initMcpServer(params: {
8586
error: logAtLevel('error'),
8687
};
8788

88-
const client = new CasParser({
89+
let client = new CasParser({
8990
logger,
9091
...params.clientOptions,
9192
defaultHeaders: {
@@ -115,6 +116,29 @@ export function initMcpServer(params: {
115116

116117
return executeHandler(endpoint.tool, endpoint.handler, client, args, mcpOptions.capabilities);
117118
});
119+
120+
server.setRequestHandler(SetLevelRequestSchema, async (request) => {
121+
const { level } = request.params;
122+
switch (level) {
123+
case 'debug':
124+
client = client.withOptions({ logLevel: 'debug' });
125+
break;
126+
case 'info':
127+
client = client.withOptions({ logLevel: 'info' });
128+
break;
129+
case 'notice':
130+
case 'warning':
131+
client = client.withOptions({ logLevel: 'warn' });
132+
break;
133+
case 'error':
134+
client = client.withOptions({ logLevel: 'error' });
135+
break;
136+
default:
137+
client = client.withOptions({ logLevel: 'off' });
138+
break;
139+
}
140+
return {};
141+
});
118142
}
119143

120144
/**

0 commit comments

Comments
 (0)