mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-01-11 22:40:26 +01:00
Fix weird type errors
This commit is contained in:
4737
package-lock.json
generated
4737
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
|
import { StreamableHTTPTransport } from '@hono/mcp';
|
||||||
import { serve } from '@hono/node-server';
|
import { serve } from '@hono/node-server';
|
||||||
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
||||||
import { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';
|
|
||||||
import { Hono } from 'hono';
|
import { Hono } from 'hono';
|
||||||
import { registerFolderTools } from './tools/folder.js';
|
import { registerFolderTools } from './tools/folder.js';
|
||||||
import { registerHttpRequestTools } from './tools/httpRequest.js';
|
import { registerHttpRequestTools } from './tools/httpRequest.js';
|
||||||
@@ -10,49 +10,53 @@ import { registerWorkspaceTools } from './tools/workspace.js';
|
|||||||
import type { McpServerContext } from './types.js';
|
import type { McpServerContext } from './types.js';
|
||||||
|
|
||||||
export function createMcpServer(ctx: McpServerContext, port: number) {
|
export function createMcpServer(ctx: McpServerContext, port: number) {
|
||||||
const server = new McpServer({
|
const mcpServer = new McpServer({
|
||||||
name: 'yaak-mcp-server',
|
name: 'yaak-mcp-server',
|
||||||
version: '0.1.0',
|
version: '0.1.0',
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register all tools
|
// Register all tools
|
||||||
registerToastTools(server, ctx);
|
registerToastTools(mcpServer, ctx);
|
||||||
registerHttpRequestTools(server, ctx);
|
registerHttpRequestTools(mcpServer, ctx);
|
||||||
registerFolderTools(server, ctx);
|
registerFolderTools(mcpServer, ctx);
|
||||||
registerWindowTools(server, ctx);
|
registerWindowTools(mcpServer, ctx);
|
||||||
registerWorkspaceTools(server, ctx);
|
registerWorkspaceTools(mcpServer, ctx);
|
||||||
|
|
||||||
// Create a stateless transport
|
|
||||||
const transport = new WebStandardStreamableHTTPServerTransport();
|
|
||||||
|
|
||||||
// Create Hono app
|
|
||||||
const app = new Hono();
|
const app = new Hono();
|
||||||
|
const transport = new StreamableHTTPTransport();
|
||||||
|
|
||||||
// MCP endpoint - reuse the same transport for all requests
|
app.all('/mcp', async (c) => {
|
||||||
app.all('/mcp', (c) => transport.handleRequest(c.req.raw));
|
if (!mcpServer.isConnected()) {
|
||||||
|
// Connect the mcp with the transport
|
||||||
// Connect server to transport
|
await mcpServer.connect(transport);
|
||||||
server.connect(transport).then(() => {
|
ctx.yaak.toast.show({
|
||||||
console.log(`MCP Server running at http://127.0.0.1:${port}/mcp`);
|
message: `MCP Server connected`,
|
||||||
ctx.yaak.toast.show({
|
icon: 'info',
|
||||||
message: `MCP Server running on port ${port}`,
|
color: 'info',
|
||||||
icon: 'check_circle',
|
timeout: 5000,
|
||||||
color: 'success',
|
});
|
||||||
});
|
}
|
||||||
|
return transport.handleRequest(c);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Start the HTTP server
|
|
||||||
const honoServer = serve({
|
const honoServer = serve({
|
||||||
fetch: app.fetch,
|
|
||||||
port,
|
port,
|
||||||
hostname: '127.0.0.1',
|
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 {
|
return {
|
||||||
server,
|
server: mcpServer,
|
||||||
close: async () => {
|
close: async () => {
|
||||||
honoServer.close();
|
honoServer.close();
|
||||||
await server.close();
|
await mcpServer.close();
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,12 +31,12 @@ export function registerToastTools(server: McpServer, ctx: McpServerContext) {
|
|||||||
{
|
{
|
||||||
title: 'Show Toast',
|
title: 'Show Toast',
|
||||||
description: 'Show a toast notification in Yaak',
|
description: 'Show a toast notification in Yaak',
|
||||||
inputSchema: z.object({
|
inputSchema: {
|
||||||
message: z.string().describe('The message to display'),
|
message: z.string().describe('The message to display'),
|
||||||
icon: z.enum(ICON_VALUES).optional().describe('Icon name'),
|
icon: z.enum(ICON_VALUES).optional().describe('Icon name'),
|
||||||
color: z.enum(COLOR_VALUES).optional().describe('Toast color'),
|
color: z.enum(COLOR_VALUES).optional().describe('Toast color'),
|
||||||
timeout: z.number().optional().describe('Timeout in milliseconds'),
|
timeout: z.number().optional().describe('Timeout in milliseconds'),
|
||||||
}),
|
},
|
||||||
},
|
},
|
||||||
async ({ message, icon, color, timeout }) => {
|
async ({ message, icon, color, timeout }) => {
|
||||||
await ctx.yaak.toast.show({
|
await ctx.yaak.toast.show({
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
||||||
import * as z from 'zod';
|
|
||||||
import type { McpServerContext } from '../types.js';
|
import type { McpServerContext } from '../types.js';
|
||||||
import { getWorkspaceContext } from './helpers.js';
|
import { getWorkspaceContext } from './helpers.js';
|
||||||
|
|
||||||
@@ -9,7 +8,7 @@ export function registerWindowTools(server: McpServer, ctx: McpServerContext) {
|
|||||||
{
|
{
|
||||||
title: 'Get Workspace ID',
|
title: 'Get Workspace ID',
|
||||||
description: 'Get the current workspace ID',
|
description: 'Get the current workspace ID',
|
||||||
inputSchema: z.object({}),
|
inputSchema: {},
|
||||||
},
|
},
|
||||||
async () => {
|
async () => {
|
||||||
const workspaceCtx = await getWorkspaceContext(ctx);
|
const workspaceCtx = await getWorkspaceContext(ctx);
|
||||||
@@ -31,7 +30,7 @@ export function registerWindowTools(server: McpServer, ctx: McpServerContext) {
|
|||||||
{
|
{
|
||||||
title: 'Get Environment ID',
|
title: 'Get Environment ID',
|
||||||
description: 'Get the current environment ID',
|
description: 'Get the current environment ID',
|
||||||
inputSchema: z.object({}),
|
inputSchema: {},
|
||||||
},
|
},
|
||||||
async () => {
|
async () => {
|
||||||
const workspaceCtx = await getWorkspaceContext(ctx);
|
const workspaceCtx = await getWorkspaceContext(ctx);
|
||||||
|
|||||||
Reference in New Issue
Block a user