想象一下:只需几分钟,你就能为自己的大模型(LLM)应用构建出强大、灵活且易于维护的服务器,轻松提供数据和工具支持。这一切都要归功于ModelContextProtocol(MCP)和它强大的TypeScriptSDK。🚀MCP到底是什么?ModelContextProt
想象一下:只需几分钟,你就能为自己的大模型(LLM)应用构建出强大、灵活且易于维护的服务器,轻松提供数据和工具支持。这一切都要归功于Model Context Protocol (MCP) 和它强大的TypeScript SDK。
Model Context Protocol (MCP) 是一种专为LLM设计的上下文协议,让你能以标准化、安全、高效的方式,为大模型提供数据(资源)、功能(工具)以及交互模式(提示模板)。简单来说,它就像专为LLM打造的专属Web API。
MCP特别适合需要频繁更改数据、调用外部服务或者构建模块化、可扩展的大模型应用场景。它的设计初衷是为了最大化地降低LLM开发的复杂性,提高应用的可维护性和安全性。
MCP TypeScript SDK完整实现了MCP协议规范,支持你:
安装极其简单:
npm install @modelcontextprotocol/sdk
搭建一个简单的计算器MCP服务器,代码量少到令人难以置信:
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "Demo", version: "1.0.0" });
// 添加计算工具
server.tool("add", { a: z.number(), b: z.number() }, async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }]
}));
// 动态资源示例
server.resource("greeting", new ResourceTemplate("greeting://{name}", { list: undefined }), async (uri, { name }) => ({
contents: [{ uri: uri.href, text: `你好,${name}!` }]
}));
// 启动服务器,通过标准输入输出与客户端通信
const transport = new StdioServerTransport();
await server.connect(transport);
像REST API的GET请求一样提供数据,无副作用。
执行具体计算或操作,类似POST请求,有明确副作用。
可重复使用的标准化交互模板,提高交互一致性。
你可以搭建远程服务器,允许多个客户端同时访问,并实时更新数据:
import express from "express";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
const server = new McpServer({ name: "RemoteServer", version: "1.0.0" });
const app = express();
app.get("/sse", async (req, res) => {
const transport = new SSEServerTransport("/messages", res);
await server.connect(transport);
});
app.listen(3001);
import sqlite3 from "sqlite3";
import { promisify } from "util";
server.tool("query", { sql: z.string() }, async ({ sql }) => {
const db = new sqlite3.Database("db.sqlite");
const allAsync = promisify(db.all.bind(db));
try {
const data = await allAsync(sql);
return { content: [{ type: "text", text: JSON.stringify(data) }] };
} catch (error) {
return { content: [{ type: "text", text: error.message }], isError: true };
} finally {
db.close();
}
});
利用官方提供的MCP Inspector,轻松测试和调试你的服务器。它提供直观的界面,让你实时监控并调试MCP服务器的行为。
欢迎开发者积极参与到MCP的开源贡献中,帮助MCP不断成长!
📌 MIT协议开源,开箱即用,全面提高你的开发效率,拥抱未来大模型时代!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!