
楔子
- 折腾 最近一直
Ai agent
开发,最近还遇到一个新的东西了。MCP(Model Context Protocol)协议了。这玩意到底是一个什么呢?感觉一天天要学东西太多了。so!so!直接记录一笔。
学习
- 定义 MCP(Model Context Protocol)提供了一种统一的客户端—服务器架构,借助
JSON-RPC
等标准通信方式,实现了 AI 模型与多种数据源(如文件、数据库、API、第三方工具等)之间的无缝集成。通过 MCP,AI 应用不再需要为每个数据源编写单独的集成代码,而是可以利用一个标准接口来安全、高效地访问各种资源,从而提升整体的上下文感知和任务执行能力。也就是算是一种联系上下文的规范协议。
- 发展历史 MCP 协议于2024年11月由 Anthropic 推出开源,从最初发布后便迅速获得开发者和企业的关注。随着生态的不断扩展,越来越多的 MCP服务器陆续上线,包括对 GitHub、GitLab、SQLite等常用工具和平台的支持,不仅有官方实现,还涌现出社区贡献的多样化扩展。这种开放模式为 AI 应用构建起了一个丰富的、跨平台的工具和数据连接生态。才去年出来的玩意,发展成现在这个规模挺快的!
解决什么问题?
- 数据孤岛问题 在传统的AI应用通常只能访问有限的内置数据,面对各个分散的数据源时需要重复编写连接代码;MCP 通过标准化接口打破这种壁垒。重复开发难题 开发者不必为每个外部系统单独定制接口,只需实现一次 MCP 协议,即可对接多个数据源和工具,从而大大降低开发和维护成本。
- 方便的场景
ai agent
和代码生成AI模型可以通过 MCP 快速访问本地或远程代码仓库、文档等,提升编程辅助效率。可实现自动化,例如在企业知识库、数据库查询、文件管理、消息系统等场景中,MCP 使得 AI 应用能够安全地调取和处理各种业务数据。完成跨平台集成,无论是前端应用、IDE 还是企业内部系统,都可以利用MCP统一连接外部资源,推动 AI 与现实世界的深度融合。
简单例子代码
import express from 'express';
import bodyParser from 'body-parser';
import axios from 'axios';
import { MCPServer } from 'mcp-server'; // 引入 MCP 服务器库
const app = express();
app.use(bodyParser.json());
const mcp = new MCPServer();
// 注册 echo 方法
mcp.register('echo', async (params) => {
return params;
});
// 注册 callAI 方法,调用 OpenAI API
mcp.register('callAI', async (params) => {
try {
const aiResponse = await axios.post('https://api.openai.com/v1/chat/completions', {
model: 'gpt-4',
messages: [{ role: 'user', content: params.message }]
}, {
headers: {
'Authorization': `Bearer YOUR_OPENAI_API_KEY`,
'Content-Type': 'application/json'
}
});
return aiResponse.data;
} catch (error) {
throw new Error('OpenAI API request failed: ' + error.response?.data?.error?.message || error.message);
}
});
// 处理 MCP 请求
app.post('/mcp', async (req, res) => {
try {
const response = await mcp.handleRequest(req.body);
res.json(response);
} catch (error) {
res.status(500).json({ jsonrpc: '2.0', id: req.body.id, error: error.message });
}
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`MCP Server is running on http://localhost:${PORT}/mcp`);
});
END
- 学习记录 学习记录完成。感觉还是挺简单一个协议。只要涉及多方调动,这玩意还是比较方便的。