mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-24 18:31:38 +01:00
Better MCP server lifecycle
This commit is contained in:
@@ -10,6 +10,7 @@ import { registerWorkspaceTools } from './tools/workspace.js';
|
||||
import type { McpServerContext } from './types.js';
|
||||
|
||||
export function createMcpServer(ctx: McpServerContext, port: number) {
|
||||
console.log('Creating MCP server on port', port);
|
||||
const mcpServer = new McpServer({
|
||||
name: 'yaak-mcp-server',
|
||||
version: '0.1.0',
|
||||
@@ -39,23 +40,32 @@ export function createMcpServer(ctx: McpServerContext, port: number) {
|
||||
return transport.handleRequest(c);
|
||||
});
|
||||
|
||||
const honoServer = serve({
|
||||
port,
|
||||
hostname: '127.0.0.1',
|
||||
fetch: app.fetch,
|
||||
});
|
||||
|
||||
ctx.yaak.toast.show({
|
||||
message: `MCP Server running on port ${honoServer.address}`,
|
||||
icon: 'info',
|
||||
color: 'info',
|
||||
timeout: 30000,
|
||||
});
|
||||
const honoServer = serve(
|
||||
{
|
||||
port,
|
||||
hostname: '127.0.0.1',
|
||||
fetch: app.fetch,
|
||||
},
|
||||
(info) => {
|
||||
console.log('Started MCP server on ', info.address);
|
||||
ctx.yaak.toast.show({
|
||||
message: `MCP Server running on http://127.0.0.1:${info.port}`,
|
||||
icon: 'info',
|
||||
color: 'secondary',
|
||||
timeout: 10000,
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
return {
|
||||
server: mcpServer,
|
||||
close: async () => {
|
||||
honoServer.close();
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
honoServer.close((err) => {
|
||||
if (err) reject(err);
|
||||
else resolve();
|
||||
});
|
||||
});
|
||||
await mcpServer.close();
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user