agentscope-sift / node_modules /@modelcontextprotocol /sdk /dist /cjs /examples /server /progressExample.js
| ; | |
| /** | |
| * 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 |