MCP到底是什么,原理是啥?
MCP (Model Context Protocol)
文末有视频教程链接
MCP 协议概述
MCP(Model Context Protocol)是一种用于 AI 模型上下文通信的协议,它允许开发环境与外部服务进行标准化交互。
以下是 MCP 配置文件示例:
{
// Node.js MCP server
"mcpServers": {
"demo": {
"command": "cmd", // 在 Windows 上使用 cmd
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-application"
],
"env": {
"API_KEY": "this is a example API key"
}
},
// Python MCP server
"time": {
"command": "python",
"args": [
"-m",
"mcp_server_time",
"TimeZone"
]
}
}
}
在这个示例中,mcpServers 定义了两个 MCP 服务器:demo 和 time。每个服务器都有自己的命令、参数和环境变量。
你可以在支持MCP服务的软件(例如:cursor)上导入这个配置文件,就会自动识别MCP服务
MCP Server 工作原理
MCP 服务器可以提供三种标准能力,每个服务器可以同时提供这三种能力或其中的任意组合:
- Resources:提供资源访问,如文件读取或 API 响应内容
/* MCP 服务器的资源访问示例
* https://github.com/modelcontextprotocol/typescript-sdk
* https://github.com/modelcontextprotocol/python-sdk
* Static resource
*/
server.resource(
"config",
"config://app",
async (uri) => ({
contents: [{
uri: uri.href,
text: "App configuration here"
}]
})
);
// Dynamic resource with parameters
server.resource(
"user-profile",
new ResourceTemplate("users://{userId}/profile", { list: undefined }),
async (uri, { userId }) => ({
contents: [{
uri: uri.href,
text: `Profile data for user ${userId}`
}]
})
);
- Tools:提供工具功能,允许 LLM 调用特定函数或第三方服务
// Simple tool with parameters
server.tool(
"calculate-bmi",
{
weightKg: z.number(),
heightM: z.number()
},
async ({ weightKg, heightM }) => ({
content: [{
type: "text",
text: String(weightKg / (heightM * heightM))
}]
})
);
// Async tool with external API call
server.tool(
"fetch-weather",
{ city: z.string() },
async ({ city }) => {
const response = await fetch(`https://api.weather.com/${city}`);
const data = await response.text();
return {
content: [{ type: "text", text: data }]
};
}
);
- Prompts:提供预定义的提示词模板,用于完成特定任务
server.prompt(
"review-code",
{ code: z.string() },
({ code }) => ({
messages: [{
role: "user",
content: {
type: "text",
text: `Please review this code:\n\n${code}`
}
}]
})
);
工作流程
flowchart LR
Client[客户端应用] <--> Protocol{MCP 协议}
Protocol <--> Server[MCP 服务器]
Server --> Resources[资源访问]
Server --> Tools[工具功能]
Server --> Prompts[提示词模板]
Resources --> Files[(文件系统)]
Resources --> APIs[(外部 API)]
Tools --> Functions[函数执行]
Tools --> Services[第三方服务]
Prompts --> Templates[(任务模板)]
支持 MCP Client 的软件
一般来说,MCP服务器需要node.js(指令:npx)和python环境,并且需要安装一些依赖包,如
mcp_server_time和@modelcontextprotocol/server-application等。
具体的安装和使用方法可以参考各个软件的文档或 GitHub 仓库。
参考资源
更多信息请访问
B站视频教程:
-
有兴趣可以了解一下我自己写的AI Agent,小型MCP轮子: GitHub仓库

浙公网安备 33010602011771号