Merge branch 'main' into patch-1
This commit is contained in:
commit
49659de9c6
2 changed files with 53 additions and 10 deletions
|
|
@ -96,6 +96,20 @@ Resource features:
|
||||||
- `style` (string): Output style preference
|
- `style` (string): Output style preference
|
||||||
- Returns: Multi-turn conversation with images
|
- Returns: Multi-turn conversation with images
|
||||||
|
|
||||||
|
### Logging
|
||||||
|
|
||||||
|
The server sends random-leveled log messages every 15 seconds, e.g.:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"method": "notifications/message",
|
||||||
|
"params": {
|
||||||
|
"level": "info",
|
||||||
|
"data": "Info-level message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Usage with Claude Desktop
|
## Usage with Claude Desktop
|
||||||
|
|
||||||
Add to your `claude_desktop_config.json`:
|
Add to your `claude_desktop_config.json`:
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import {
|
||||||
ListResourcesRequestSchema,
|
ListResourcesRequestSchema,
|
||||||
ListResourceTemplatesRequestSchema,
|
ListResourceTemplatesRequestSchema,
|
||||||
ListToolsRequestSchema,
|
ListToolsRequestSchema,
|
||||||
|
LoggingLevel,
|
||||||
ReadResourceRequestSchema,
|
ReadResourceRequestSchema,
|
||||||
Resource,
|
Resource,
|
||||||
SetLevelRequestSchema,
|
SetLevelRequestSchema,
|
||||||
|
|
@ -99,10 +100,10 @@ export const createServer = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
let subscriptions: Set<string> = new Set();
|
let subscriptions: Set<string> = new Set();
|
||||||
let updateInterval: NodeJS.Timeout | undefined;
|
let subsUpdateInterval: NodeJS.Timeout | undefined;
|
||||||
|
|
||||||
// Set up update interval for subscribed resources
|
// Set up update interval for subscribed resources
|
||||||
updateInterval = setInterval(() => {
|
|
||||||
|
subsUpdateInterval = setInterval(() => {
|
||||||
for (const uri of subscriptions) {
|
for (const uri of subscriptions) {
|
||||||
server.notification({
|
server.notification({
|
||||||
method: "notifications/resources/updated",
|
method: "notifications/resources/updated",
|
||||||
|
|
@ -111,6 +112,34 @@ export const createServer = () => {
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
|
||||||
|
let logLevel: LoggingLevel = "debug";
|
||||||
|
let logsUpdateInterval: NodeJS.Timeout | undefined;
|
||||||
|
const messages = [
|
||||||
|
{level: "debug", data: "Debug-level message"},
|
||||||
|
{level: "info", data: "Info-level message"},
|
||||||
|
{level: "notice", data: "Notice-level message"},
|
||||||
|
{level: "warning", data: "Warning-level message"},
|
||||||
|
{level: "error", data: "Error-level message"},
|
||||||
|
{level: "critical", data: "Critical-level message"},
|
||||||
|
{level: "alert", data: "Alert level-message"},
|
||||||
|
{level: "emergency", data: "Emergency-level message"}
|
||||||
|
]
|
||||||
|
|
||||||
|
const isMessageIgnored = (level:LoggingLevel):boolean => {
|
||||||
|
const currentLevel = messages.findIndex((msg) => logLevel === msg.level);
|
||||||
|
const messageLevel = messages.findIndex((msg) => level === msg.level);
|
||||||
|
return messageLevel < currentLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up update interval for random log messages
|
||||||
|
logsUpdateInterval = setInterval(() => {
|
||||||
|
let message = {
|
||||||
|
method: "notifications/message",
|
||||||
|
params: messages[Math.floor(Math.random() * messages.length)],
|
||||||
|
}
|
||||||
|
if (!isMessageIgnored(message.params.level as LoggingLevel)) server.notification(message);
|
||||||
|
}, 15000);
|
||||||
|
|
||||||
// Helper method to request sampling from client
|
// Helper method to request sampling from client
|
||||||
const requestSampling = async (
|
const requestSampling = async (
|
||||||
context: string,
|
context: string,
|
||||||
|
|
@ -533,6 +562,7 @@ export const createServer = () => {
|
||||||
|
|
||||||
server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
||||||
const { level } = request.params;
|
const { level } = request.params;
|
||||||
|
logLevel = level;
|
||||||
|
|
||||||
// Demonstrate different log levels
|
// Demonstrate different log levels
|
||||||
await server.notification({
|
await server.notification({
|
||||||
|
|
@ -540,7 +570,7 @@ export const createServer = () => {
|
||||||
params: {
|
params: {
|
||||||
level: "debug",
|
level: "debug",
|
||||||
logger: "test-server",
|
logger: "test-server",
|
||||||
data: `Logging level set to: ${level}`,
|
data: `Logging level set to: ${logLevel}`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -548,9 +578,8 @@ export const createServer = () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
const cleanup = async () => {
|
const cleanup = async () => {
|
||||||
if (updateInterval) {
|
if (subsUpdateInterval) clearInterval(subsUpdateInterval);
|
||||||
clearInterval(updateInterval);
|
if (logsUpdateInterval) clearInterval(logsUpdateInterval);
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return { server, cleanup };
|
return { server, cleanup };
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue