mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-18 23:44:12 +01:00
Fix weird type errors
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { StreamableHTTPTransport } from '@hono/mcp';
|
||||
import { serve } from '@hono/node-server';
|
||||
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
||||
import { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';
|
||||
import { Hono } from 'hono';
|
||||
import { registerFolderTools } from './tools/folder.js';
|
||||
import { registerHttpRequestTools } from './tools/httpRequest.js';
|
||||
@@ -10,49 +10,53 @@ import { registerWorkspaceTools } from './tools/workspace.js';
|
||||
import type { McpServerContext } from './types.js';
|
||||
|
||||
export function createMcpServer(ctx: McpServerContext, port: number) {
|
||||
const server = new McpServer({
|
||||
const mcpServer = new McpServer({
|
||||
name: 'yaak-mcp-server',
|
||||
version: '0.1.0',
|
||||
});
|
||||
|
||||
// Register all tools
|
||||
registerToastTools(server, ctx);
|
||||
registerHttpRequestTools(server, ctx);
|
||||
registerFolderTools(server, ctx);
|
||||
registerWindowTools(server, ctx);
|
||||
registerWorkspaceTools(server, ctx);
|
||||
registerToastTools(mcpServer, ctx);
|
||||
registerHttpRequestTools(mcpServer, ctx);
|
||||
registerFolderTools(mcpServer, ctx);
|
||||
registerWindowTools(mcpServer, ctx);
|
||||
registerWorkspaceTools(mcpServer, ctx);
|
||||
|
||||
// Create a stateless transport
|
||||
const transport = new WebStandardStreamableHTTPServerTransport();
|
||||
|
||||
// Create Hono app
|
||||
const app = new Hono();
|
||||
const transport = new StreamableHTTPTransport();
|
||||
|
||||
// MCP endpoint - reuse the same transport for all requests
|
||||
app.all('/mcp', (c) => transport.handleRequest(c.req.raw));
|
||||
|
||||
// Connect server to transport
|
||||
server.connect(transport).then(() => {
|
||||
console.log(`MCP Server running at http://127.0.0.1:${port}/mcp`);
|
||||
ctx.yaak.toast.show({
|
||||
message: `MCP Server running on port ${port}`,
|
||||
icon: 'check_circle',
|
||||
color: 'success',
|
||||
});
|
||||
app.all('/mcp', async (c) => {
|
||||
if (!mcpServer.isConnected()) {
|
||||
// Connect the mcp with the transport
|
||||
await mcpServer.connect(transport);
|
||||
ctx.yaak.toast.show({
|
||||
message: `MCP Server connected`,
|
||||
icon: 'info',
|
||||
color: 'info',
|
||||
timeout: 5000,
|
||||
});
|
||||
}
|
||||
return transport.handleRequest(c);
|
||||
});
|
||||
|
||||
// Start the HTTP server
|
||||
const honoServer = serve({
|
||||
fetch: app.fetch,
|
||||
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,
|
||||
});
|
||||
|
||||
return {
|
||||
server,
|
||||
server: mcpServer,
|
||||
close: async () => {
|
||||
honoServer.close();
|
||||
await server.close();
|
||||
await mcpServer.close();
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user