> ## Documentation Index
> Fetch the complete documentation index at: https://mcp.wiki/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP 核心概念

> 理解 Model Context Protocol 的基本概念和工作原理

## MCP 是什么？

Model Context Protocol (MCP) 是一个开放标准，用于**连接 AI 应用与数据源**。就像 USB-C 为设备连接提供了通用接口一样，MCP 为 AI 模型提供了访问外部数据和工具的标准化方式。

<CardGroup cols={1}>
  <Card title="核心价值" icon="star">
    MCP 解决了 AI 模型被困在"信息孤岛"中的问题，让它们能够安全、标准化地访问实时数据和执行外部操作。
  </Card>
</CardGroup>

## 三大核心功能

MCP 协议定义了三种主要的交互模式，每种都解决特定的使用场景：

### 1. 资源 (Resources) 📄

**定义**: 资源是服务器向客户端暴露的数据内容，可以是文件、数据库记录、API 响应等任何形式的信息。

**特点**:

* **只读访问**: 资源通常用于数据检索
* **URI 标识**: 每个资源都有唯一的 URI 标识符
* **类型多样**: 支持文本、二进制、JSON 等多种数据格式

**实际应用**:

```python theme={null}
# 示例：访问文件系统资源
@server.resource("file://{path}")
async def get_file_content(path: str):
    return {
        "uri": f"file://{path}",
        "name": os.path.basename(path),
        "mimeType": "text/plain",
        "content": await read_file(path)
    }
```

**使用场景**:

* 文档内容检索
* 数据库查询结果
* API 数据获取
* 配置文件读取

### 2. 工具 (Tools) 🔧

**定义**: 工具是服务器向客户端暴露的可执行功能，允许 AI 模型执行操作、修改数据或触发外部系统的行为。

**特点**:

* **可执行**: 工具会执行具体的操作
* **参数化**: 支持输入参数来定制行为
* **副作用**: 可能会修改外部状态

**实际应用**:

```python theme={null}
# 示例：文件操作工具
@server.tool("create_file")
async def create_file(path: str, content: str):
    await write_file(path, content)
    return f"文件 {path} 创建成功"

@server.tool("send_email")
async def send_email(to: str, subject: str, body: str):
    await email_service.send(to, subject, body)
    return "邮件发送成功"
```

**使用场景**:

* 文件和数据操作
* API 调用
* 系统命令执行
* 业务流程触发

### 3. 提示 (Prompts) 💭

**定义**: 提示是服务器预定义的提示模板，可以被客户端调用来生成特定类型的 AI 交互。

**特点**:

* **模板化**: 预定义的提示结构
* **参数支持**: 可以接受参数来定制提示内容
* **工作流**: 支持复杂的多步骤操作

**实际应用**:

```python theme={null}
# 示例：代码审查提示
@server.prompt("code_review")
async def code_review_prompt(file_path: str, language: str):
    code_content = await read_file(file_path)
    return {
        "messages": [
            {
                "role": "user",
                "content": f"请审查这段 {language} 代码并提供改进建议：\n\n{code_content}"
            }
        ]
    }
```

**使用场景**:

* 代码审查工作流
* 文档生成模板
* 数据分析提示
* 创意写作助手

## 架构模式

### 客户端-服务器模型

<div style={{ display: 'flex', alignItems: 'center', gap: '1rem', margin: '1rem 0' }}>
  <div style={{ padding: '1rem', border: '2px solid #e2e8f0', borderRadius: '0.5rem', flex: 1 }}>
    <strong>MCP 客户端</strong><br />
    <small>连接和管理服务器</small>
  </div>

  <div style={{ fontSize: '1.5rem' }}>↔️</div>

  <div style={{ padding: '1rem', border: '2px solid #e2e8f0', borderRadius: '0.5rem', flex: 1 }}>
    <strong>MCP 服务器</strong><br />
    <small>提供资源、工具和提示</small>
  </div>
</div>

### 通信协议

**JSON-RPC 2.0**: MCP 使用经过验证的 JSON-RPC 2.0 协议，确保可靠的通信：

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_file",
    "arguments": {
      "path": "/tmp/test.txt",
      "content": "Hello, MCP!"
    }
  }
}
```

### 传输方式

<Tabs>
  <Tab title="stdio">
    **本地进程通信**

    * 通过标准输入/输出流通信
    * 适用于本地服务和工具
    * 简单可靠，易于调试
  </Tab>

  <Tab title="HTTP">
    **网络通信**

    * 标准的 HTTP 请求/响应
    * 适用于远程服务
    * 支持负载均衡和分布式部署
  </Tab>

  <Tab title="SSE">
    **流式通信**

    * Server-Sent Events
    * 适用于实时数据流
    * 单向推送，低延迟
  </Tab>
</Tabs>

## 数据流示例

让我们通过一个具体的例子来理解 MCP 的工作流程：

### 场景：AI 助手帮助处理 GitHub Issues

1. **用户请求**: "帮我查看最新的 GitHub Issues 并创建一个总结报告"

2. **资源访问**:
   ```
   客户端 → 服务器: 获取资源 "github://issues/latest"
   服务器 → 客户端: 返回最新 Issues 列表
   ```

3. **工具调用**:
   ```
   客户端 → 服务器: 调用工具 "create_report"
   服务器 → 客户端: 返回生成的报告
   ```

4. **结果呈现**: AI 助手向用户展示处理结果

## 安全和权限

### 权限控制

* **资源级权限**: 控制可访问的数据范围
* **工具级权限**: 限制可执行的操作类型
* **用户上下文**: 基于用户身份的权限管理

### 安全最佳实践

* **输入验证**: 严格验证所有输入参数
* **权限最小化**: 只授予必要的最小权限
* **审计日志**: 记录所有关键操作
* **加密传输**: 使用 TLS 加密敏感数据

## 与现有技术的对比

| 特性    | MCP        | REST API | GraphQL | WebSocket |
| ----- | ---------- | -------- | ------- | --------- |
| 标准化   | ✅ 统一协议     | ❌ 各自实现   | ✅ 有规范   | ❌ 自定义协议   |
| AI 优化 | ✅ 专为 AI 设计 | ❌ 通用 API | ❌ 通用查询  | ❌ 通用通信    |
| 工具集成  | ✅ 原生支持     | ❌ 需额外开发  | ❌ 仅数据查询 | ❌ 需自定义    |
| 学习成本  | 🟡 中等      | 🟢 低     | 🟡 中等   | 🔴 高      |

## 开发者生态

### 官方 SDK

* **Python**: `pip install mcp`
* **TypeScript**: `npm install @modelcontextprotocol/sdk`
* **Kotlin**: JetBrains 合作维护
* **Go**: Google 合作维护

### 社区工具

* **MCP Inspector**: 调试和测试工具
* **服务器模板**: 快速启动项目
* **示例集合**: 最佳实践参考

### 企业采用

* **Block**: 金融服务集成
* **Apollo**: GraphQL 数据访问
* **Replit**: 开发环境集成
* **Sourcegraph**: 代码搜索和分析

## 未来发展

### 路线图

* **协议扩展**: 支持更多数据类型和操作
* **性能优化**: 提升大规模部署的性能
* **工具生态**: 更丰富的预构建服务器
* **标准认证**: 企业级安全认证机制

### 社区参与

* **开源贡献**: 参与核心协议开发
* **服务器开发**: 构建特定领域的服务器
* **最佳实践**: 分享使用经验和模式
* **文档改进**: 完善社区文档

<Note>
  MCP 代表了 AI 应用架构的重要演进，从孤立的模型转向连接的智能系统。理解这些核心概念是掌握 MCP 的第一步。
</Note>

## 下一步

现在您已经了解了 MCP 的核心概念，可以继续学习：

<CardGroup cols={2}>
  <Card title="客户端-服务器架构" href="/concepts/client-server">
    深入了解 MCP 的架构设计和通信模式
  </Card>

  <Card title="快速开始教程" href="/quickstart">
    动手构建您的第一个 MCP 服务器
  </Card>
</CardGroup>
