AI 编程工具实战:Cursor、Claude Code 与 MCP Server 开发全流程

AI 编程工具实战:Cursor、Claude Code 与 MCP Server 开发全流程

Ethan
2025-11-20 发布 / 正在检测是否收录...

2025 年,AI 编程工具已从"辅助补全"进化到"自主开发"。一个熟练使用 AI 工具的开发者,产出效率可达传统方式的 3-5 倍。本文深入 Cursor、Claude Code 和 GitHub Copilot 的高级用法,并教你开发发布 MCP Server 和 Agent Skills。

Cursor:不只是智能补全

Composer Agent 模式

Cursor 的 Composer(Ctrl+I)已支持 Agent 模式——你描述需求,AI 自主完成:读文件 → 写代码 → 执行命令 → 修复错误。

// 使用 Composer 的最佳 Prompt 格式:

# Context
- 项目使用 Spring Boot 3.2 + MyBatis-Plus
- 包结构:controller/service/mapper/entity

# Task
为 UserController 添加:
1. GET /api/users - 分页查询,支持 keyword 模糊搜索
2. GET /api/users/{id} - 根据 ID 查询
3. PUT /api/users/{id} - 更新用户

# Requirements
- 统一返回 Result<T> 格式
- 参数校验使用 @Valid
- 异常使用全局异常处理器

# Files to modify
- src/main/java/.../controller/UserController.java

.cursorrules:项目级 AI 规则

# .cursorrules 文件 - 项目根目录

## 技术栈
- Spring Boot 3.2 + Java 21
- MyBatis-Plus 3.5
- PostgreSQL 16 + Redis 7

## 代码规范
- 所有 API 统一使用 Result<T> 包装返回
- 异常统一在 GlobalExceptionHandler 中处理
- Controller 层只做参数校验和结果返回
- Mapper 层复杂查询使用 XML 而非注解

## 测试规范
- 单元测试覆盖所有 Service 层公有方法
- 集成测试使用 Testcontainers
- Mock 外部依赖(MQ、第三方 API)

Claude Code:终端里的全栈工程师

# Claude Code 常用命令
$ claude                    # 启动交互式会话
$ claude "修复所有 ESLint 错误"  # 单次任务
$ claude --resume           # 恢复上次会话

# CLAUDE.md 文件(类似 .cursorrules)
# 项目:博客系统
# 技术栈:Typecho + PHP 7.4 + MySQL 8.0
# 主题:Joe 主题
# 数据库表前缀:typecho_
# 文章分类:后端开发(mid=4)、AI应用(mid=2)

上下文管理:Claude Code 自动维护项目记忆(Project Memory),但会话太长会导致上下文污染——累计修改超过 15 个文件时建议开新会话。

GitHub Copilot:内联补全之王

// 1. 用注释驱动代码生成
/**
 * 分页查询用户列表
 * @param keyword 模糊搜索关键词(用户名/邮箱),可为 null
 * @param page 页码,从 1 开始
 * @param size 每页大小,默认 20,最大 100
 * @return 分页结果,空结果返回空列表而非 null
 */
public PageResult<User> listUsers(String keyword, int page, int size) {
    // Copilot 根据注释自动生成实现
}

// 2. 善用 Copilot Chat(Ctrl+Shift+I)
// 选中代码 → "Explain This" / "Fix This" / "Generate Docs"

MCP Server 开发与发布

MCP(Model Context Protocol)是 AI 应用的标准接口协议。

最小 MCP Server 实现

// package.json
{
  "name": "myblog-mcp-server",
  "version": "1.0.0",
  "type": "module",
  "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" }
}

// index.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({ name: "myblog-mcp", version: "1.0.0" }, {
  capabilities: { tools: {} }
});

server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "get_recent_posts",
    description: "获取博客最新文章列表",
    inputSchema: {
      type: "object",
      properties: { limit: { type: "number", description: "返回数量" } }
    }
  }]
}));

server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;
  if (name === "get_recent_posts") {
    return { content: [{ type: "text", text: JSON.stringify(await fetchRecentPosts(args.limit)) }] };
  }
});

const transport = new StdioServerTransport();
await server.connect(transport);

发布流程

  1. 本地调试:npx @modelcontextprotocol/inspector
  2. 发布 npm:npm publish
  3. 注册市场:在 modelcontextprotocol/servers 仓库提交 PR
  4. 用户安装:Cursor 的 mcp.json 中添加一行配置

Agent Skills 开发

# skill-name.md(保存在 ~/.claude/skills/)

# Skill: Spring Boot Project Generator
## When to use
- User asks to create a new Spring Boot project

## Workflow
1. Ask for groupId, artifactId, Java version
2. Use Spring Initializr API to generate project
3. Add common dependencies
4. Create standard package structure

## Rules
- Always use Java 21 LTS
- Always include Spring Boot Actuator
- Use Maven wrapper (mvnw) for portability

工具对比与选型

场景推荐工具原因
日常编码补全GitHub Copilot响应最快,内联最自然
跨文件重构Cursor ComposerAgent 模式改多文件
终端/CI 环境Claude Code纯命令行
复杂架构设计Claude + Cursor方案+实现分工
自定义工具MCP Server跨平台标准

总结

AI 编程工具的核心价值不是"写代码更快",而是"降低实现想法的门槛"。代价是——你需要更强的代码审查能力和系统设计思维。AI 生产代码,你来把关质量,这才是 AI 时代的核心竞争力。

© 版权声明
THE END
喜欢就支持一下吧
点赞 1 分享 收藏

评论 (0)

取消

Warning: file_put_contents(/var/www/html/usr/cache/pagecache/69/69f38248db97cfbf94efe8eb24bf454f.cache): failed to open stream: No such file or directory in /var/www/html/usr/plugins/PageCache/Plugin.php on line 188