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.
- Server-Sent Events (SSE) transport implementation for Bun and Elysia
- Complete MCP protocol support with resources, tools, and prompts
- High-performance thanks to Bun's JavaScript runtime
- TypeScript support with proper type definitions
- Easy-to-use API for creating MCP-compatible servers
- Bun installed on your system
- Basic familiarity with TypeScript and Elysia
# 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 Elysia
import { 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:
- List available resources, tools, and prompts
- Test calling tools and retrieving resources
- Inspect the communication between the client and server
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.