关于 LiteMCP
LiteMCP 是一个用于构建 MCP 服务的 TypeScript 框架,以简洁的 API 定义工具、资源和提示词。它内置日志、错误处理、命令行调试工具和 SSE 传输。项目作者已声明不再维护,因为官方 SDK 提供了类似的高层 API。
主要功能
- 01简洁的工具、资源与提示词定义方式
- 02完整的 TypeScript 类型支持
- 03内置日志与错误处理
- 04内置命令行调试与 Inspector 启动
- 05支持 stdio 与 SSE 传输
适用场景
- 01使用 TypeScript 快速搭建 MCP 服务原型
- 02在终端中测试和调试 MCP 服务
- 03为 MCP 服务添加 SSE 传输方式
MCP 相关
用于开发 MCP 服务,可定义向 MCP 客户端暴露的工具、资源和提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
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 库,也是本项目的灵感来源
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。