
致所有开发者:如何使用 Cline 构建 MCP 插件
我记得关于过去几十年技术繁荣的故事。在 1990 年代末,互联网革命开始了。懂 HTML 的青少年通过为本地企业建网站,每个项目能赚取数千美元。在 2000 年代末,类似的趋势出现在移动应用领域。年轻开发者通过为智能手机创建应用程序获利。
人们会说:“这就是未来。”许多人对这些基本的网站或简单的应用能带来什么改变持怀疑态度。我们都知道这些预言最终的结果。
现在,在 2025 年,我对 MCP 插件有同样的感觉。但这次,我不再怀疑。我相信我们正处于一个重大变革的开端,其影响将超越互联网和移动革命。
原因如下:MCP(模型上下文协议)是 AI 连接我们数字世界的方式。
什么是 MCP 插件?
把像 Cline 这样的 AI 助手想象成极其聪明但孤立的个体。没有 MCP,它们被困在一个只能处理文本的框中,无法直接与你的文件、API 或应用程序互动。
MCP 插件打破了这一障碍。它们赋予 AI 助手以下能力:
- 访问外部 API 和服务
- 检索实时数据
- 控制应用程序和本地系统
- 执行仅凭文本提示无法完成的操作
我已经构建这些插件好几个月了,并且将我的流程提炼成了一个简单的 .clinerules 协议,这让我的开发效率提高了 10 倍。
.clinerules 协议:我的秘密武器
高效的 MCP 插件开发核心是遵循结构化的协议。我将它封装在一个 .clinerules 文件中,该文件位于你的 MCP 工作目录的根目录下。
它的作用如下:
- 配置 Cline 的行为并强制执行最佳实践
- 将 Cline 切换到专门的 MCP 开发模式
- 提供构建插件的分步协议
- 指导你完成规划、实施和测试阶段
当这个文件存在于你的目录中时,Cline 就知道如何正确地帮助你构建 MCP 插件。这就像拥有第二个大脑,完全专注于使你的开发过程顺畅。而且速度也很快——我用 7 分钟就构建了这个 AlphaAdvantage MCP。
我如何构建 MCP 插件(以及你如何也能做到)
让我带你了解我的确切流程,这个协议将使其形式化
第 1 步:规划 (PLAN MODE)
Cline 将帮助你定义 MCP 插件的需求,并为你创建一个实施计划。
我总是从思考我要用 Cline 构建什么开始。这不仅仅是头脑风暴;这是 Cline 主导的结构化规划:
- 这个工具解决了什么问题?
- 我想要什么输出?
- 它将使用什么 API/服务(如果需要——MCP 不一定需要 API)?
当你开始时,.clinerules 文件会将 Cline 置于 PLAN MODE,这样你在编写任何一行代码之前就能专注于这些关键问题。
例如,当我(Cline)构建我的 AlphaAdvantage 股票分析插件时,我是这样开始对话的:
I want to build an MCP Plugin that leverages the AlphaAdvantage API to generate stock reports and briefings从这里开始,Cline 将帮助我定义我的 MCP 插件的明确需求,当它达到我的期望时,我将批准它。
第 2 步:实施 (ACT MODE)
根据你们共同创建的计划,Cline 将构建 MCP 插件。
一旦计划确定,我就会使用聊天底部的切换按钮将 Cline 切换到 ACT MODE。这是我们开始构建的地方:
- 引导项目
对于 web 服务或 JS/TS 环境
npx @modelcontextprotocol/create-server my-server
cd my-server
npm install
对于 Python 环境
pip install mcp
# Or with uv (recommended)
uv add "mcp[cli]"
- 构建核心实现
我遵循这些关键实践,协议会强制执行它们:
- 正确使用 MCP SDK
- 实施全面的日志记录
- 添加类型定义
- 处理带上下文的错误
- 如果需要,实施速率限制
这是 Cline 如何在我的 AlphaAdvantage 插件中实现速率限制的一个示例:
/**
* Manage rate limiting based on free tier (5 calls per minute)
*/
private async enforceRateLimit() {
if (this.requestsThisMinute >= 5) {
console.error("[Rate Limit] Rate limit reached. Waiting for next minute...");
return new Promise<void>((resolve) => {
const remainingMs = 60 * 1000 - (Date.now() % (60 * 1000));
setTimeout(resolve, remainingMs + 100); // Add 100ms buffer
});
}
this.requestsThisMinute++;
return Promise.resolve();
}
- 配置插件
我将 MCP 服务器添加到我的设置中
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["path/to/build/index.js"],
"env": {
"API_KEY": "key"
},
"disabled": false,
"autoApprove": []
}
}
}
第 3 步:测试 (BLOCKER ⛔️)
.clinerules 规定 Cline 必须在完成任务之前测试为 MCP 插件创建的每个工具。
这至关重要——也是大多数开发者如果不小心就容易出错的地方。协议在完成之前强制进行彻底的测试:
- 用有效输入测试每个工具
- 验证输出格式是否正确
- 记录测试结果
.clinerules 规定 Cline 绝不能跳过这一步。对于我的股票分析插件,Cline 单独测试了每个工具:
get_stock_overview: 检索 AAPL 股票概览get_technical_analysis: 获取价格走势和 RSI 数据get_earnings_report: 检索 MSFT 盈利历史记录
在您验证每个工具都正常工作之前,.clinerules 协议实际上会阻止 Cline 尝试完成项目。
为什么现在开始构建 MCP 插件?
我们正处于 AI 开发新纪元的开端。MCP 是连接 AI 助手与我们数字世界中所有其他事物的桥梁。
现在掌握这项技能的开发者将在 AI 日益融入我们的工作流程和应用程序时拥有巨大的优势。
就像早期的网络开发者和应用创作者一样,现在就加入的人将:
- 在大多数人甚至还没认识到机会之前就积累专业知识
- 构建其他人将依赖的基础工具
- 将自己定位为新兴领域的领导者
立即开始
- 为你的 MCP 项目创建一个新目录
- 添加
.clinerules文件(从下面的 gist 中获取) - 与 Cline 开始聊天,描述你想构建什么
- 遵循规划、实施和测试的指导流程
.clinerules 文件将指导你完成整个过程,确保你构建出健壮、经过充分测试且真正有效的 MCP 插件。
这里是完整的 .clinerules 文件,助你开始:
# MCP Plugin Development Protocol
⚠️ CRITICAL: DO NOT USE attempt_completion BEFORE TESTING ⚠️
## Step 1: Planning (PLAN MODE)
- What problem does this tool solve?
- What API/service will it use?
- What are the authentication requirements?
□ Standard API key
□ OAuth (requires separate setup script)
□ Other credentials
## Step 2: Implementation (ACT MODE)
1. Bootstrap
- For web services, JavaScript integration, or Node.js environments:
```bash
npx @modelcontextprotocol/create-server my-server
cd my-server
npm install
```
- For data science, ML workflows, or Python environments:
```bash
pip install mcp
# Or with uv (recommended)
uv add "mcp[cli]"
```
2. Core Implementation
- Use MCP SDK
- Implement comprehensive logging
- TypeScript (for web/JS projects):
```typescript
console.error('[Setup] Initializing server...');
console.error('[API] Request to endpoint:', endpoint);
console.error('[Error] Failed with:', error);
```
- Python (for data science/ML projects):
```python
import logging
logging.error('[Setup] Initializing server...')
logging.error(f'[API] Request to endpoint: {endpoint}')
logging.error(f'[Error] Failed with: {str(error)}')
```
- Add type definitions
- Handle errors with context
- Implement rate limiting if needed
3. Configuration
- Get credentials from user if needed
- Add to MCP settings:
- For TypeScript projects:
```json
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["path/to/build/index.js"],
"env": {
"API_KEY": "key"
},
"disabled": false,
"autoApprove": []
}
}
}
```
- For Python projects:
```bash
# Directly with command line
mcp install server.py -v API_KEY=key
# Or in settings.json
{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["server.py"],
"env": {
"API_KEY": "key"
},
"disabled": false,
"autoApprove": []
}
}
}
```
## Step 3: Testing (BLOCKER ⛔️)
<thinking>
BEFORE using attempt_completion, I MUST verify:
□ Have I tested EVERY tool?
□ Have I confirmed success from the user for each test?
□ Have I documented the test results?
If ANY answer is "no", I MUST NOT use attempt_completion.
</thinking>
1. Test Each Tool (REQUIRED)
□ Test each tool with valid inputs
□ Verify output format is correct
⚠️ DO NOT PROCEED UNTIL ALL TOOLS TESTED
## Step 4: Completion
❗ STOP AND VERIFY:
□ Every tool has been tested with valid inputs
□ Output format is correct for each tool
Only after ALL tools have been tested can attempt_completion be used.
## Key Requirements
- ✓ Must use MCP SDK
- ✓ Must have comprehensive logging
- ✓ Must test each tool individually
- ✓ Must handle errors gracefully
- ⛔️ NEVER skip testing before completion
MCP 的未来
模型上下文协议代表着我们与 AI 互动方式的根本性转变。AI 助手不再是只响应文本的孤立实体,而是成为连接我们整个数字生态系统的连接器。
我坚信在不久的将来,每一个重要的应用程序、服务和 API 都将提供 MCP 插件,从而创建一个丰富的、可供 AI 访问的工具生态系统。
构建这些桥梁的开发者将是这个新格局的建筑师。
如果你对 AI 的未来感到兴奋,并希望站在这场革命的最前沿,请立即开始构建 MCP 插件。我分享的 .clinerules 协议使入门变得前所未有的容易。
不要只是看着 AI 革命发生——要成为构建其基础设施的一部分。
本博客由 Cline 产品营销部的 Nick Baumann 撰写。请关注我们 @cline 以获取有关开发未来的更多见解。
