【MCP 实战1】基础概念
目录
1. 什么是 MCP (Model Context Protocol)
MCP 简介
Model Context Protocol (MCP) 是一个开放标准协议,旨在让 AI 助手能够安全地访问外部数据源和工具。它解决了 AI 模型需要与外部系统交互的核心问题。
MCP 的价值
- 标准化接口:为 AI 与外部系统的交互提供统一标准
- 安全性:提供受控的访问机制,确保数据安全
- 可扩展性:支持多种数据源和工具的集成
- 互操作性:不同的 AI 客户端可以使用同一个 MCP 服务器
MCP 的架构组件
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ │ │ │ │ │
│ Client │◄──►│ Transport │◄──►│ Server │
│ │ │ │ │ │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
│ │ │
v v v
Claude Desktop/Cursor SSE/Stdio Your MCP Server
│ │
│ │
v v
用户交互 外部系统集成 (数据库、API、文件等)
1. Client (客户端)
- 作用:AI agent 访问 MCP server,如 Claude Desktop、Cursor 等
- 职责:发送用户请求,处理服务器响应
2. Transport (传输层)
- 作用:客户端与服务器之间的通信机制
- 官方标准协议:
- Stdio:标准输入输出,适合本地应用和进程通信
- Streamable HTTP:使用 HTTP POST + 可选 SSE 流,适合 Web 应用和远程通信
- 自定义传输:
- MCP 官方支持自定义传输实现
- 需要遵循官方 Transport 接口规范
- 用于特殊网络协议、专用通信通道等场景
- 注意:SSE 作为独立传输在 2024-11-05 版本后已弃用
3. Server (服务器)
- 作用:实际执行工具调用和数据访问的后端服务
- 职责:
- 定义可用的工具 (Tools)
- 提供数据资源 (Resources)
- 处理客户端请求
- 与外部系统交互
2. MCP 的核心概念
Tools (工具)
# 示例:一个简单的计算器工具
@mcp.tool(description="Add two numbers")
async def add_numbers(a: int, b: int) -> list[TextContent]:
"""Add two numbers and return the result."""
result = a + b
return [TextContent(type="text", text=str(result))]
Resources (资源)
# 示例:文件资源
@mcp.resource("file://{path}")
async def read_file(path: str) -> str:
"""Read file content."""
with open(path, 'r') as f:
return f.read()
Prompts (提示)
# 示例:预定义提示模板
@mcp.prompt("analyze-data")
async def analyze_data_prompt(data_type: str) -> str:
"""Generate analysis prompt for specific data type."""
return f"Please analyze this {data_type} data and provide insights."
3. OpenSearch MCP Server 项目概览
我们将要学习的项目是一个完整的 OpenSearch MCP Server,通过 MCP tools 使它提供以下功能:
核心功能
- 索引管理:列出索引、获取索引映射和设置
- 集群管理:获取集群健康状态和统计信息
- 文档操作:搜索文档
项目结构
opensearch-mcp-server/
├── src/
│ └── opensearch_mcp_server/
│ ├── __init__.py
│ ├── server.py # 主服务器文件
│ ├── opensearch_client.py # OpenSearch 客户端
│ └── tools/ # 工具模块
│ ├── __init__.py
│ ├── cluster.py # 集群管理工具
│ ├── document.py # 文档操作工具
│ └── index.py # 索引管理工具
├── pyproject.toml # 项目配置
├── README.md # 项目说明
└── test_opensearch.py # 测试文件
4. MCP 的应用场景
数据库集成
- 让 AI 能够查询数据库
- 执行数据分析任务
- 生成报表和洞察
文件系统访问
- 读取和写入文件
- 搜索文件内容
- 管理文档和代码
API 集成
- 调用第三方 API
- 数据同步和转换
- 自动化工作流程
开发工具集成
- 代码分析和重构
- 项目管理
- CI/CD 流程集成
5. 为什么选择 OpenSearch 作为示例
OpenSearch 的优势
- 开源搜索引擎:免费且功能强大
- 丰富的 API:提供完整的 REST API
- 实用性强:企业级搜索和分析平台
- 学习价值高:涵盖了 MCP 的核心概念
6. 下一步
在接下来的教程中,我们将:
- 搭建开发环境
- 从简单的 Hello World 开始
- 逐步构建完整的 OpenSearch MCP Server
- 学习测试、部署和最佳实践
让我们开始这个激动人心的 MCP 开发之旅!
提示:建议你先阅读 MCP 官方文档 来获得更深入的理解。