mcpField
L
LiteMCP

LiteMCP

本地服务
github.com/wong2开发工具18679 周前更新

关于 LiteMCP

LiteMCP 是一个用于构建 MCP 服务的 TypeScript 框架,以简洁的 API 定义工具、资源和提示词。它内置日志、错误处理、命令行调试工具和 SSE 传输。项目作者已声明不再维护,因为官方 SDK 提供了类似的高层 API。

主要功能

  1. 01简洁的工具、资源与提示词定义方式
  2. 02完整的 TypeScript 类型支持
  3. 03内置日志与错误处理
  4. 04内置命令行调试与 Inspector 启动
  5. 05支持 stdio 与 SSE 传输

适用场景

  1. 01使用 TypeScript 快速搭建 MCP 服务原型
  2. 02在终端中测试和调试 MCP 服务
  3. 03为 MCP 服务添加 SSE 传输方式

MCP 相关

用于开发 MCP 服务,可定义向 MCP 客户端暴露的工具、资源和提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"litemcp": {
"command": "npx",
"args": [
"-y",
"litemcp"
]
}
}
}
启动命令npx -y litemcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmlitemcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

LiteMCP

一个用于优雅构建 MCP(Model Context Protocol)服务的 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: "Add two numbers",
  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: "Application Logs",
  mimeType: "text/plain",
  async load() {
    return {
      text: "Example log content",
    };
  },
});

server.start();

你可以在终端中测试该服务:

npx litemcp dev server.js

核心概念

工具

MCP 中的工具允许服务向客户端提供可执行函数,客户端可以调用这些函数,供大模型执行操作。

server.addTool({
  name: "fetch",
  description: "Fetch the content of a 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: "Application Logs",
  mimeType: "text/plain",
  async load() {
    return {
      text: await readLogFile(),
    };
  },
});

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

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

提示词使服务能够定义可复用的提示词模板和工作流,客户端可以轻松地向用户和大模型展示这些内容。它们提供了一种强大的方式,用于规范和共享常见的大模型交互。

server.addPrompt({
  name: "git-commit",
  description: "Generate a Git commit message",
  arguments: [
    {
      name: "changes",
      description: "Git diff or description of changes",
      required: true,
    },
  ],
  load: async (args) => {
    return `Generate a concise but descriptive commit message for these changes:\n\n${args.changes}`;
  },
});
日志记录

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

server.addTool({
  name: "download",
  description: "Download a file from a url",
  parameters: z.object({
    url: z.string(),
  }),
  execute: async (args) => {
    server.logger.info("Downloading file", { url: args.url });
    // ...
    server.logger.info("Downloaded file", { 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 litemcp dev server.ts // ts files are also supported

这会通过 mcp-cli 在终端中运行你的服务,以便测试和调试 MCP 服务。

使用 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 库,也是本项目的灵感来源

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。