- StdioServerTransport(stdin/stdout标准MCP协议) - Zod schema注册(file_list/read/write/move/exec/process_list/sysinfo) - pnpm install完成+SDK依赖解析 - 添加zod依赖
35 lines
2.3 KiB
TypeScript
35 lines
2.3 KiB
TypeScript
/**
|
|
* C-001: MCP Server Framework — stdio transport for Gateway compatibility.
|
|
*/
|
|
|
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
import { z } from "zod";
|
|
import * as tools from "./tools.js";
|
|
|
|
export function createServer(): McpServer {
|
|
const server = new McpServer({ name: "yuzu-gca-device", version: "0.1.0" });
|
|
|
|
server.tool("file_list", "List directory contents", { path: z.string(), recursive: z.boolean().optional() }, async a => ({ content: [{ type: "text" as const, text: JSON.stringify(await tools.file_list(a)) }] }));
|
|
server.tool("file_read", "Read file content", { path: z.string(), encoding: z.string().optional(), offset: z.number().optional(), limit: z.number().optional() }, async a => ({ content: [{ type: "text" as const, text: (await tools.file_read(a)).content }] }));
|
|
server.tool("file_write", "Write file content", { path: z.string(), content: z.string(), encoding: z.string().optional() }, async a => ({ content: [{ type: "text" as const, text: JSON.stringify(await tools.file_write(a)) }] }));
|
|
server.tool("file_move", "Move/rename file", { from: z.string(), to: z.string() }, async a => ({ content: [{ type: "text" as const, text: JSON.stringify(await tools.file_move(a)) }] }));
|
|
server.tool("exec", "Execute shell command", { command: z.string(), cwd: z.string().optional(), timeout: z.number().optional() }, async a => ({ content: [{ type: "text" as const, text: JSON.stringify(await tools.exec(a)) }] }));
|
|
server.tool("process_list","List running processes", { filter: z.string().optional() }, async a => ({ content: [{ type: "text" as const, text: JSON.stringify(await tools.process_list(a)) }] }));
|
|
server.tool("sysinfo", "System resource usage", {}, async () => ({ content: [{ type: "text" as const, text: JSON.stringify(await tools.sysinfo({})) }] }));
|
|
|
|
return server;
|
|
}
|
|
|
|
export async function startServer(server: McpServer): Promise<void> {
|
|
const transport = new StdioServerTransport();
|
|
await server.connect(transport);
|
|
console.error("[Yuzu-GCA] MCP Server ready (stdio)");
|
|
}
|
|
|
|
export async function bootstrap(): Promise<McpServer> {
|
|
const server = createServer();
|
|
await startServer(server);
|
|
return server;
|
|
}
|