开发者召集令:如何使用Cline构建MCP插件

980 阅读8分钟

英文原文

译文:

我还记得过去几十年科技繁荣的故事。在1990年代末,网络革命开始了。懂HTML的青少年每个项目就能赚取数千美元,为当地企业构建网站。在2000年代末,移动应用程序出现了类似的趋势。年轻开发者通过为智能手机创建应用程序获利。

"这就是未来,"人们常说。许多人对这些基础网站或简单应用如何改变任何事情持怀疑态度。我们都知道这些预测最终如何。

现在,在2025年,我对MCP插件有同样的感觉。但这次,我不再怀疑。我相信我们正处于一个重要变革的开始,这种变革在其影响力上将超越网络和移动革命。

原因如下:MCP(模型上下文协议)是AI连接我们数字世界的方式。

什么是MCP插件?

将Cline等AI助手想象成非常聪明但孤立的存在。没有MCP,它们被困在纯文本框中,无法直接与你的文件、API或应用程序交互。

MCP插件打破了这一障碍。它们赋予AI助手以下能力:

  • 访问外部API和服务
  • 检索实时数据
  • 控制应用程序和本地系统
  • 执行超出纯文本提示能力的操作

我已经构建这些插件几个月了,我将我的流程提炼为一个简单的.clinerules协议,这使我的开发效率提高了10倍。

.clinerules协议:我的秘密武器

高效MCP插件开发的核心是遵循结构化协议。我将其封装到一个.clinerules文件中,该文件位于MCP工作目录的根目录。

以下是它的作用:

  1. 配置Cline的行为并强制执行最佳实践
  2. 将Cline切换到专门的MCP开发模式
  3. 提供构建插件的逐步协议
  4. 指导你完成规划、实施和测试阶段

当此文件在你的目录中时,Cline确切地了解如何帮助你正确构建MCP插件。就像拥有第二个大脑,完全专注于使你的开发过程顺畅。而且速度很快 - 我在7分钟内构建了这个AlphaAdvantage MCP。

我如何构建MCP插件(以及你也可以如何构建)

让我带你了解我的确切流程,这个协议将其正式化:

第1步:规划(PLAN模式)

Cline将帮助你定义MCP插件的需求并为你创建实施计划。

我总是通过与Cline一起思考我要构建的内容开始。这不仅仅是头脑风暴;这是Cline引导的结构化规划:

  • 这个工具解决什么问题?
  • 我想要什么输出?
  • 它将使用什么API/服务(如果有的话 - MCP不一定需要API)?

当你开始时,.clinerules文件将Cline置于PLAN模式,因此你可以在编写任何代码之前专注于这些关键问题。

例如,当我(Cline)构建我的AlphaAdvantage股票分析插件时,我以以下内容开始聊天:

我想构建一个利用AlphaAdvantage API生成股票报告和简报的MCP插件

从这里开始,Cline将帮助我定义MCP插件的明确需求,当它满足我的期望时,我将批准它。

第2步:实施(ACT模式)

根据你们一起创建的计划,Cline将构建MCP插件。

一旦计划确定,我使用聊天底部的切换按钮将Cline切换到ACT模式。这是我们开始构建的地方:

  1. 引导项目

对于Web服务或JS/TS环境:

npx @modelcontextprotocol/create-server my-server
cd my-server
npm install

对于Python环境:

pip install mcp
# 或使用uv(推荐)
uv add "mcp[cli]"

2. 构建核心实现

我遵循以下关键实践,这些实践由协议强制执行:

  • 正确使用MCP SDK
  • 实现全面的日志记录
  • 添加类型定义
  • 处理带有上下文的错误
  • 如果需要,实现速率限制

以下是Cline如何在我的AlphaAdvantage插件中实现速率限制的示例:

/**
 * 基于免费层(每分钟5次调用)管理速率限制
 */
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); // 添加100ms缓冲
    });
  }
  
  this.requestsThisMinute++;
  return Promise.resolve();
}

3. 配置插件

我将MCP服务器添加到我的设置中:

{
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["path/to/build/index.js"],
      "env": {
        "API_KEY": "key"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

第3步:测试(阻止器 ⛔️)

.clinerules要求Cline在完成任务之前测试为MCP插件创建的每个工具。

这一点至关重要 - 如果不小心,大多数开发者会在这里出错。该协议在完成之前强制进行彻底测试:

  1. 使用有效输入测试每个工具
  2. 验证输出格式是否正确
  3. 记录测试结果

.clinerules要求Cline永远不会错过这一步。对于我的股票分析插件,Cline单独测试了每个工具:

  • get_stock_overview:检索AAPL股票概览
  • get_technical_analysis:获取价格走势和RSI数据
  • get_earnings_report:检索MSFT收益历史

.clinerules协议实际上阻止Cline在你验证每个工具正常工作之前尝试完成项目。

为什么现在开始构建MCP插件?

我们正处于AI开发新时代的开始。MCP是连接AI助手与我们数字世界中其他一切的桥梁。

现在掌握这项技能的开发者将在AI越来越融入我们的工作流程和应用程序时拥有巨大优势。

就像早期的网络开发者和应用创建者一样,现在加入的人将:

  1. 在大多数人甚至认识到这个机会之前发展专业知识
  2. 构建其他人将依赖的基础工具
  3. 将自己定位为新兴领域的领导者

今天开始

以下是如何使用.clinerules协议开始

  1. 为你的MCP项目创建一个新目录
  2. 添加.clinerules文件(从下面的gist获取)
  3. 开始与Cline聊天,描述你想要构建的内容
  4. 遵循指导过程,完成规划、实施和测试

.clinerules文件将指导你完成整个过程,确保你构建的MCP插件健壮、经过良好测试且实际可用。

以下是完整的.clinerules文件,帮助你开始:

# MCP插件开发协议

⚠️ 重要:在测试前不要使用attempt_completion ⚠️

## 第1步:规划(PLAN模式)
- 这个工具解决什么问题?
- 它将使用什么API/服务?
- 认证要求是什么?
  □ 标准API密钥
  □ OAuth(需要单独的设置脚本)
  □ 其他凭证

## 第2步:实施(ACT模式)
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
- ✓ 必须有全面的日志记录
- ✓ 必须单独测试每个工具
- ✓ 必须优雅地处理错误
- ⛔️ 在完成前绝不跳过测试

MCP的未来

模型上下文协议代表了我们与AI交互方式的根本转变。AI助手不再是只响应文本的孤立实体,而是成为连接我们整个数字生态系统的连接器。

我坚信在不久的将来,每个重要的应用程序、服务和API都将有MCP插件可用,创建一个丰富的AI可访问工具生态系统。

构建这些桥梁的开发者将成为这个新格局的架构师。

如果你对AI的未来感到兴奋,并希望站在这场革命的前沿,今天就开始构建MCP插件。我分享的.clinerules协议使开始比以往任何时候都更容易。

不要只是观看AI革命的发生—成为构建其基础设施的一部分。


cline系列文章:

构建MCP经济:从21st.dev中学习的经验与插件货币化的未来

使用 Cline 构建高级软件:结构化方法

Cline上线了MCP marketpalce

忘记MCP——把这些当作Cline的额外工具吧