# MCP（模型上下文协议）全面指南与操作手册

## MCP简介

模型上下文协议（Model Context Protocol，MCP） 是由Anthropic公司提出并开源的一项开放标准协议，旨在标准化大型语言模型与外部数据源和工具之间的交互方式。MCP被誉为AI应用的"USB-C接口"，正如USB-C为设备连接外设提供了标准化方式一样，MCP为AI模型连接不同的数据源和工具提供了统一的标准接口。

MCP的核心价值在于解决AI模型与外部系统集成的标准化挑战。在MCP出现之前，若有M个AI应用和N个工具/数据源，可能需要M×N个定制集成，而MCP通过引入中间的标准接口，将这种复杂的集成关系简化为M+N个实现。这种协议使每个团队都能把自己的专属工具（如内部的发布系统、日志平台）接入进来，让AI真正成为团队里"无所不能"的一员。

MCP采用模块化的客户端-服务器架构，主要包含三个核心组件：
- MCP主机（Host）：运行大模型的应用程序，如Claude desktop、Cursor、火山方舟等，负责协调用户、LLM与外部资源之间的交互
- MCP客户端（Client）：主机内部的连接器，负责管理与MCP服务器的通信，处理协议转换和安全认证
- MCP服务器（Server）：通过MCP标准暴露特定功能的服务，提供数据访问和工具执行能力

MCP服务器提供三种核心能力类型：
- 资源（Resources）：提供静态或可查询的数据集，如文件、文档、数据库等只读数据
- 工具（Tools）：暴露可调用的函数或API，使AI能够执行外部操作（如API调用、脚本执行）
- 提示（Prompts）：预定义的提示模板，用于引导模型生成特定格式的响应

## MCP运行指南
### 运行环境与通信方式
MCP支持多种通信机制，适应不同部署场景：
- STDIO模式（本地通信）：通过标准输入输出传输数据，适用于同一台机器上运行的客户端和服务器之间的通信。此模式下MCP客户端会创建MCP服务器子进程，二者通过stdin/stdout进行JSON-RPC通信
- Streamable HTTP模式（远程通信）：MCP服务器部署在远程服务器并通过端口暴露，客户端通过指定端口连接。这是当前推荐的远程通信方式
- SSE模式（已不推荐）：使用Server-Sent Events的HTTP通信，官方现已转向Streamable HTTP

### MCP运行工作流程
MCP的完整运行流程包括以下步骤：

1. 请求解析：主机进程识别用户意图，将请求传递给MCP客户端
2. 能力匹配：客户端查询可用MCP服务器，确定能处理请求的资源或工具
3. 工具发现：客户端通过list_tools()获取服务器提供的工具列表和描述
4. 任务执行：客户端向选定服务器发送请求，服务器执行相应操作（查询数据库、调用API等）
5. 结果返回：服务器将结构化结果返回给客户端，客户端传递给主机进程
6. 响应生成：主机进程整合上下文信息，生成自然语言响应

以下是针对 MCP Server 的完整操作提示词，涵盖了服务器启动、关键信息获取和客户端验证的全流程。

### MCP Server 启动流程

**本地启动 MCP Server**
如果您使用 TypeScript/JavaScript 开发 MCP 服务器，可以通过以下命令启动：

```bash
# 安装依赖
npm install

# 构建项目
npm run build

# 启动服务器
npm start
```

启动成功后，终端将显示服务器状态信息，包括已注册的工具列表和启动确认消息。

**Python MCP Server 启动**
对于使用 Python FastMCP 的服务器：

```bash
# 激活虚拟环境（如有）
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows

# 运行服务器
python server.py
```

服务器启动后应显示确认消息，如"Weather-Server 已启动"。

### 获取关键连接信息

**本地服务器连接信息**
- **URL/端点**：本地服务器通常运行在 `http://localhost:端口号`（如 `http://localhost:3000`）
- **SSE端点**：若使用Server-Sent Events，端点通常为 `/sse`（完整路径：`http://localhost:3000/sse`）
- **消息接收端点**：通常为 `/messages`

### 验证MCP服务是否成功
编写最精简的python代码验证MCP是否运行成功

### 故障排除提示词

**连接失败排查**
```
我的MCP服务器连接失败，可能是什么原因？请检查：
1. 服务器进程是否正在运行
2. 配置文件和路径是否正确
3. 环境变量和令牌是否有效
4. 端口是否被占用或防火墙设置
```

**功能异常排查**
```
工具调用失败，请协助诊断：
1. 确认工具是否在列表中可见
2. 检查参数格式是否正确
3. 查看服务器日志中的错误信息
4. 验证API权限和配额
```

# 你需要做的
1. 查看根目录，判断语言，阅读readme、package.json等
2. 运行命令安装依赖
3. 启动mcp
4. 验证：编写适当代码验证MCP是否启动成功