Bun Elysia
HTTP-SSEMCP server implementation using Bun and Elysia for LLM resource and tool access.
MCP server implementation using Bun and Elysia for LLM resource and tool access.
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.