
MCP服务器开发指南
学习如何构建和部署模型上下文协议(MCP)服务器,将AI模型与外部工具和数据源连接起来。为初学者和高级开发者提供的分步指南。...
模型上下文协议(MCP) 是一种开放标准接口,使大型语言模型(LLM)能够安全、一致地访问外部数据源、工具和能力。它在 AI 应用与多种上下文提供者之间建立了标准化的通信层,相当于 AI 系统的“USB-C”。
MCP 遵循客户端-服务器架构:
MCP 定义了三种构建协议的基础原语:
资源 代表 MCP 服务器向 LLM 提供的数据与内容。
用例示例:MCP 服务器将日志文件以 file:///logs/app.log
作为资源对外暴露
提示 是服务器提供的预定义模板或工作流,用于引导 LLM 交互。
用例示例:一个 git 提交信息生成器提示,接受代码变更作为输入
工具 暴露可由 LLM 调用(通常需用户批准)的可执行函数,用于执行操作。
用例示例:一个计算器工具,对模型提供的输入执行数学运算
// 服务器将单个日志文件作为资源暴露
const server = new Server({ /* config */ }, { capabilities: { resources: {} } });
// 列出可用资源
server.setRequestHandler(ListResourcesRequestSchema, async () => {
return {
resources: [
{
uri: "file:///logs/app.log",
name: "Application Logs",
mimeType: "text/plain"
}
]
};
});
// 提供资源内容
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
if (request.params.uri === "file:///logs/app.log") {
const logContents = await readLogFile();
return {
contents: [{
uri: request.params.uri,
mimeType: "text/plain",
text: logContents
}]
};
}
throw new Error("Resource not found");
});
const server = new Server({ /* config */ }, { capabilities: { tools: {} } });
// 列出可用工具
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [{
name: "calculate_sum",
description: "Add two numbers together",
inputSchema: {
type: "object",
properties: {
a: { type: "number", description: "First number" },
b: { type: "number", description: "Second number" }
},
required: ["a", "b"]
},
annotations: {
title: "Calculate Sum",
readOnlyHint: true,
openWorldHint: false
}
}]
};
});
// 处理工具调用
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "calculate_sum") {
try {
const { a, b } = request.params.arguments;
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error("Invalid input: 'a' and 'b' must be numbers.");
}
const sum = a + b;
return {
content: [{ type: "text", text: String(sum) }]
};
} catch (error: any) {
return {
isError: true,
content: [{ type: "text", text: `Error calculating sum: ${error.message}` }]
};
}
}
throw new Error("Tool not found");
});
MCP 是一种开放标准接口,允许 LLM 安全、一致地访问外部数据源、工具和能力,为 AI 应用与上下文提供者之间创建了标准化的通信层。
MCP 由主机、客户端、服务器和数据源组成。它使用核心原语——资源、提示和工具——实现 LLM 与外部系统之间灵活且安全的交互。
MCP 简化了 AI 集成、增强了安全性、减少了厂商锁定,并使开发者和组织能够无缝访问多样的信息和工具。
MCP 可通过服务器实现,这些服务器通过标准化接口暴露资源或工具(如日志文件访问、计算器工具),简化与 AI 模型的连接。
MCP 标准化了 LLM 调用外部函数或工具的过程,类似于插件扩展浏览器或软件的能力。
学习如何构建和部署模型上下文协议(MCP)服务器,将AI模型与外部工具和数据源连接起来。为初学者和高级开发者提供的分步指南。...
快速示例,演示如何使用 Python 开发你自己的 MCP 服务器。
代理型 AI 正在通过模型上下文协议(MCP)重新定义工作流自动化,使 AI 代理能够与多样化资源进行可扩展、动态集成。了解 MCP 如何标准化上下文与工具访问,赋能强大的代理型 AI 应用。...