Commit Inicial
This commit is contained in:
Generated
Vendored
+49
@@ -0,0 +1,49 @@
|
||||
"use strict";
|
||||
/**
|
||||
* Example: Progress notifications over stdio.
|
||||
*
|
||||
* Demonstrates a tool that reports progress to the client while processing.
|
||||
*
|
||||
* Run:
|
||||
* npx tsx src/examples/server/progressExample.ts
|
||||
*
|
||||
* Then connect a client with an `onprogress` callback (see docs/protocol.md).
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const mcp_js_1 = require("../../server/mcp.js");
|
||||
const stdio_js_1 = require("../../server/stdio.js");
|
||||
const zod_1 = require("zod");
|
||||
const server = new mcp_js_1.McpServer({ name: 'progress-example', version: '1.0.0' }, { capabilities: { logging: {} } });
|
||||
server.registerTool('count', {
|
||||
description: 'Count to N with progress updates',
|
||||
inputSchema: { n: zod_1.z.number().int().min(1).max(100) }
|
||||
}, async ({ n }, extra) => {
|
||||
for (let i = 1; i <= n; i++) {
|
||||
if (extra.signal.aborted) {
|
||||
return { content: [{ type: 'text', text: `Cancelled at ${i}` }], isError: true };
|
||||
}
|
||||
if (extra._meta?.progressToken !== undefined) {
|
||||
await extra.sendNotification({
|
||||
method: 'notifications/progress',
|
||||
params: {
|
||||
progressToken: extra._meta.progressToken,
|
||||
progress: i,
|
||||
total: n,
|
||||
message: `Counting: ${i}/${n}`
|
||||
}
|
||||
});
|
||||
}
|
||||
// Simulate work
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
}
|
||||
return { content: [{ type: 'text', text: `Counted to ${n}` }] };
|
||||
});
|
||||
async function main() {
|
||||
const transport = new stdio_js_1.StdioServerTransport();
|
||||
await server.connect(transport);
|
||||
}
|
||||
main().catch(error => {
|
||||
console.error('Server error:', error);
|
||||
process.exit(1);
|
||||
});
|
||||
//# sourceMappingURL=progressExample.js.map
|
||||
Reference in New Issue
Block a user