MCP(Model Context Protocol)是一个开放协议,用于AI助手(如Claude)与外部工具和数据源之间的连接。它允许AI助手访问和操作外部系统,扩展其能力。
MCP的主要特点:
- 标准化接口:提供统一的协议来连接AI助手与外部系统
- 双向通信:支持AI助手向外部系统发送请求和接收响应
- 可扩展性:可以连接各种类型的服务器(文件系统、数据库、API等)
- 安全性:包含身份验证和授权机制
使用MCP
1. MCP服务器类型
MCP服务器可以分为两类:
本地服务器(Local MCP Servers):
- 在同一台机器上运行
- 通过进程间通信(如stdio)连接
- 适合访问本地资源(文件系统、本地数据库等)
远程服务器(Remote MCP Servers):
- 在远程机器上运行
- 通过WebSocket等网络协议连接
- 适合访问云服务和远程API
2. 基本使用步骤
步骤1:安装MCP服务器
bash
# 例如安装文件系统服务器
npm install -g @modelcontextprotocol/server-filesystem
步骤2:配置MCP客户端
在Claude Desktop的配置文件中添加服务器配置:
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/directory"]
}
}
}
步骤3:启动并使用
配置完成后,AI助手就可以通过MCP协议访问相应的服务。
3. 常见MCP服务器示例
文件系统服务器:
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./workspace"]
}
}
}
数据库服务器:
json
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost/db"]
}
}
}
GitHub服务器:
json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
},
"env": {
"GITHUB_TOKEN": "your-github-token"
}
}
}
4. 开发自定义MCP服务器
您可以创建自己的MCP服务器:
typescript
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-custom-server",
version: "1.0.0"
});
// 注册工具
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "my_tool",
description: "My custom tool",
inputSchema: {
type: "object",
properties: {},
required: []
}
}]
}));
// 启动服务器
const transport = new StdioServerTransport();
await server.connect(transport);
5. MCP的优势
- 统一标准:所有工具使用相同的协议
- 易于集成:简化AI助手与外部系统的集成
- 安全性:内置权限控制和验证机制
- 灵活性:支持各种类型的连接和数据源
- 社区支持:丰富的开源MCP服务器生态
MCP协议让AI助手能够安全、标准化地访问外部世界,大大扩展了AI的应用场景和能力边界。