Fastify MCP集成插件

一个用于将Model Context Protocol服务器集成到Fastify应用中的插件,支持流式HTTP和HTTP+SSE传输协议。

  • by haroldadmin
  • TypeScript
  • 本地部署
  • 27 星标
  • 更新于
在 GitHub 查看 haroldadmin/fastify-mcp

使用说明

加快mcp

整合 模型上下文协议 服务器与您 禁食 应用程序。

支持 可流式HTTP传输 以及遗产 HTTP+SSE传输.

用法

首先,定义您的MCP服务器。

function createServer() {
  const mcpServer = new McpServer({
    name: "...",
    version: "...",
  });

  mcpServer.tool("...");
  mcpServer.resource("...");

  return mcpServer.server;
}

创建一个Fastify应用程序并注册插件。

import { fastify } from "fastify";
import { streamableHttp } from "fastify-mcp";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const app = fastify();

app.register(streamableHttp, {
  // Set to `true` if you want a stateful server
  stateful: false,
  mcpEndpoint: "/mcp",
  sessions: new Sessions<StreamableHTTPServerTransport>()
  createServer,
});

app.listen({ port: 8080 });

请参阅 示例 目录以获取更详细的示例。

安装

# npm
npm install fastify-mcp

# yarn
yarn add fastify-mcp

会话管理

官方的 MCP TypeScript SDK 不支持开箱即用管理多个会话,因此这是主机服务器的责任。

此包使用每个活动会话与其会话ID的内存映射来管理多个会话,如MCP SDK示例所建议的。

会议活动

这 Sessions 类发出以下事件:

  • connected:添加新会话时触发。
  • terminated:删除会话时触发。
  • error:当异步事件处理程序抛出错误时触发。
const sessions = new Sessions<StreamableHTTPServerTransport>();

sessions.on("connected", (sessionId) => {
  console.log(`Session ${sessionId} connected`);
});

sessions.on("terminated", (sessionId) => {
  console.log(`Session ${sessionId} terminated`);
});

贡献

如果您在使用此软件包时遇到问题,请提交问题。也欢迎对新功能或错误修复的拉取请求。