Bun Elysia
HTTP-SSE基于Bun和Elysia的MCP服务器实现
基于Bun和Elysia的MCP服务器实现
An implementation of the Model Context Protocol (MCP) server using Bun and the Elysia web framework. This project enables you to create high-performance MCP servers that expose resources, tools, and prompts to LLMs through a standardized interface.
# Clone the repository git clone <your-repo-url> cd mcp-server # Install dependencies bun install
# Start the server bun start # Start with hot reloading for development bun dev
# Build for production bun run build
This will create a minified Node.js-compatible build in the dist directory.
src/index.ts - Main entry point for the serversrc/SSEElysiaTransport.ts - SSE transport implementation for Bun and Elysiaimport { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod"; import { SSEElysiaTransport } from "./SSEElysiaTransport"; import { Elysia } from "elysia"; // Create MCP server const server = new McpServer({ name: "my-mcp-server", version: "1.0.0" }); // Add resources, tools, and prompts server.resource( "example", "example://resource", async (uri) => ({ contents: [{ uri: uri.href, text: "Example resource content" }] }) ); // Create Elysia app const app = new Elysia() .get("/", () => "MCP Server") .get("/sse", async (context) => { try { // Create transport const transport = new SSEElysiaTransport("/messages", context); // Store transport const sessionId = transport.sessionId; // ... store transport in a map // Connect to MCP server await server.connect(transport); return; } catch (error) { // Handle error } }) .post("/messages", async (context) => { // Handle incoming messages }); // Start server app.listen(3001, () => { console.log("MCP Server running at http://localhost:3001"); });
You can debug your MCP server using the MCP Inspector tool and connect through sse
npx @modelcontextprotocol/inspector
This will open a web interface where you can:
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.