返回市场
轻量mcp

轻量mcp

作者:wong2180 星标更新:2025-04-27

项目介绍

LiteMCP

一个用于优雅构建MCP(模型上下文协议)服务器的TypeScript框架

弃用通知

由于官方SDK已经提供了一个与本项目类似的高级API,因此本项目将不再维护。

如果你喜欢本项目中的CLI命令,可以独立使用它们:https://github.com/wong2/mcp-cli

特性

安装

npm install litemcp zod

快速开始

import { LiteMCP } from "litemcp";
import { z } from "zod";

const server = new LiteMCP("demo", "1.0.0");

server.addTool({
  name: "add",
  description: "添加两个数字",
  parameters: z.object({
    a: z.number(),
    b: z.number(),
  }),
  execute: async (args) => {
    return args.a + args.b;
  },
});

server.addResource({
  uri: "file:///logs/app.log",
  name: "应用程序日志",
  mimeType: "text/plain",
  async load() {
    return {
      text: "示例日志内容",
    };
  },
});

server.start();

您可以在终端中通过以下方式测试服务器:

npx litemcp dev server.js

核心概念

工具

MCP中的工具允许服务器暴露可执行函数,这些函数可以由客户端调用,并且LLMs可以使用它们来执行操作。

server.addTool({
  name: "fetch",
  description: "获取URL的内容",
  parameters: z.object({
    url: z.string(),
  }),
  execute: async (args) => {
    const content = await fetchWebpageContent(args.url);
    return content;
  },
});

资源

资源代表MCP服务器希望向客户端提供的任何类型的数据。这可能包括:

  • 文件内容
  • 截图和图像
  • 日志文件
  • 更多

每个资源都由唯一的URI标识,并且可以包含文本或二进制数据。

server.addResource({
  uri: "file:///logs/app.log",
  name: "应用程序日志",
  mimeType: "text/plain",
  async load() {
    return {
      text: await readLogFile(),
    };
  },
});

您也可以在load中返回二进制内容:

async load() {
  return {
    blob: 'base64-encoded-data'
  }
}

提示

提示使服务器能够定义可重用的提示模板和工作流,客户端可以轻松地将这些模板和工作流呈现给用户和LLMs。它们提供了一种强大的方法来标准化和共享常见的LLM交互。

server.addPrompt({
  name: "git-commit",
  description: "生成Git提交消息",
  arguments: [
    {
      name: "changes",
      description: "Git diff或更改描述",
      required: true,
    },
  ],
  load: async (args) => {
    return `为这些更改生成简洁但描述性的提交消息:\n\n${args.changes}`;
  },
});

日志记录

您可以使用server.logger向客户端发送日志消息

server.addTool({
  name: "download",
  description: "从URL下载文件",
  parameters: z.object({
    url: z.string(),
  }),
  execute: async (args) => {
    server.logger.info("正在下载文件", { url: args.url });
    // ...
    server.logger.info("已下载文件", { url: args.url });
    return response;
  },
});

logger对象具有以下方法:

  • debug(message: string, context?: JsonValue)
  • info(message: string, context?: JsonValue)
  • warn(message: string, context?: JsonValue)
  • error(message: string, context?: JsonValue)

运行您的服务器

使用mcp-cli进行调试

测试和调试服务器最快的方法是使用mcp-cli

npx litemcp dev server.js
npx l
lite
mcp dev server.ts # 支持ts文件

这将在终端中使用mcp-cli运行您的服务器以进行测试和调试。

使用MCP Inspector进行检查

另一种方法是使用官方的MCP Inspector通过Web UI检查您的服务器:

npx litemcp inspect server.js

SSE传输

服务器默认使用stdio传输运行。您还可以使用SSE模式运行服务器:

server.start({
  transportType: "sse",
  sse: {
    endpoint: "/sse",
    port: 8080,
  },
});

这将启动服务器并监听http://localhost:8080/sse上的SSE连接。

然后,您可以通过客户端中的SSE传输连接到服务器。

展示

如果您使用LiteMCP开发了服务器,请提交PR在这里展示它!

发展路线图

  • 添加对资源模板的支持

相关

  • mcp-cli - 用于测试和调试MCP服务器的CLI
  • mcpservers.org - 一份精选的MCP服务器列表
  • FastMCP - 一个用于MCP服务器开发的Python库,本项目的灵感来源