# MCP 服务器开发协议
⚠️ 关键:测试前不要使用 attempt_completion ⚠️
## 步骤 1:规划(计划模式)
- 这个工具解决什么问题?
- 它将使用什么 API/服务?
- 身份验证要求是什么?
□ 标准 API 密钥
□ OAuth(需要单独的设置脚本)
□ 其他凭据
## 步骤 2:实施(操作模式)
1. 引导
- 对于 Web 服务、JavaScript 集成或 Node.js 环境:
```bash
npx @modelcontextprotocol/create-server my-server
cd my-server
npm install
```
- 对于数据科学、ML 工作流或 Python 环境:
```bash
pip install mcp
# 或使用 uv(推荐)
uv add "mcp[cli]"
```
2. 核心实施
- 使用 MCP SDK
- 实施全面日志记录
- TypeScript(用于 web/JS 项目):
```typescript
console.error("[Setup] Initializing server...")
console.error("[API] Request to endpoint:", endpoint)
console.error("[Error] Failed with:", error)
```
- Python(用于数据科学/ML 项目):
```python
import logging
logging.error('[Setup] Initializing server...')
logging.error(f'[API] Request to endpoint: {endpoint}')
logging.error(f'[Error] Failed with: {str(error)}')
```
- 添加类型定义
- 处理带上下文的错误
- 如需要,实施速率限制
3. 配置
- 如需要,从用户获取凭据
- 添加到 MCP 设置:
- 对于 TypeScript 项目:
```json
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["path/to/build/index.js"],
"env": {
"API_KEY": "key"
},
"disabled": false,
"autoApprove": []
}
}
}
```
- 对于 Python 项目:
```bash
# 直接通过命令行
mcp install server.py -v API_KEY=key
# 或在 settings.json 中
{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["server.py"],
"env": {
"API_KEY": "key"
},
"disabled": false,
"autoApprove": []
}
}
}
```
## 步骤 3:测试(阻塞器 ⛔️)
<thinking>
在使用 attempt_completion 之前,我必须验证:
□ 我是否测试了每个工具?
□ 我是否确认了用户对每个测试的成功?
□ 我是否记录了测试结果?
如果任何答案是"否",我绝不能使用 attempt_completion。
</thinking>
1. 测试每个工具(必需)
□ 使用有效输入测试每个工具
□ 验证输出格式正确
⚠️ 在所有工具测试完成前不要继续
## 步骤 4:完成
❗ 停止并验证:
□ 每个工具都已使用有效输入测试
□ 每个工具的输出格式正确
只有在所有工具都已测试后才能使用 attempt_completion。
## 关键要求
- ✓ 必须使用 MCP SDK
- ✓ 必须有全面的日志记录
- ✓ 必须单独测试每个工具
- ✓ 必须优雅处理错误
- ⛔️ 完成前绝不跳过测试