一个用于优雅构建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
服务器默认使用stdio传输运行。您还可以使用SSE模式运行服务器:
server.start({
transportType: "sse",
sse: {
endpoint: "/sse",
port: 8080,
},
});
这将启动服务器并监听http://localhost:8080/sse上的SSE连接。
然后,您可以通过客户端中的SSE传输连接到服务器。
如果您使用LiteMCP开发了服务器,请提交PR在这里展示它!