MCP协议服务器

一个基于Bun和Elysia的高性能MCP协议服务器,用于向LLM提供标准化接口的资源、工具和提示。

  • by keithagroves
  • TypeScript
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 keithagroves/Elysia-mcp

使用说明

Bun and Elysia的MCP服务器

使用Bun和Elysia web框架实现模型上下文协议(MCP)服务器。该项目使您能够创建高性能的MCP服务器,通过标准化的接口向LLM公开资源、工具和提示。

特性

  • Bun和Elysia的服务器发送事件(SSE)传输实现
  • 通过资源、工具和提示完成MCP协议支持
  • 得益于Bun的JavaScript运行时,性能很高
  • TypeScript支持正确的类型定义
  • 易于使用的API创建MCP兼容服务器

先决条件

  • 包子 安装在您的系统上
  • 基本熟悉TypeScript和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

这将在 dist 目录。

发展

项目结构

  • src/index.ts -服务器的主要入口点
  • src/SSEElysiaTransport.ts -Bun和Elysia的SSE运输实施

创建MCP服务器

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");
});

调试

您可以使用MCP检查器工具调试MCP服务器,并通过sse连接

npx @modelcontextprotocol/inspector

这将打开一个web界面,您可以在其中:

  • 列出可用资源、工具和提示
  • 测试调用工具和检索资源
  • 检查客户端和服务器之间的通信

贡献

欢迎投稿!请随时提交拉取请求。

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。