返回市场
克劳德代码MCP服务器

克劳德代码MCP服务器

作者:auchenberg177 星标更新:2025-04-08

项目介绍

Claude Code MCP

Claude Code MCP 是 Claude CodeModel Context Protocol (MCP) 服务器上的实现。此项目允许您通过标准化的 MCP 接口使用 Claude Code 强大的软件工程能力。

⚠️ 免责声明 ⚠️

Claude Code MCP 是由 DevinAI 自动生成的项目,DevinAI 被提示分析 Claude Code 的代码库,并生成一个 MCP 服务器。

这是一个概念验证项目,我不建议任何人使用。

什么是 Claude Code?

Claude Code 是 Anthropic 的用于软件工程任务的 CLI 工具,由 Claude 提供支持。它提供了一组工具和能力,帮助开发者进行:

  • 代码生成和编辑
  • 代码审查和分析
  • 调试和故障排除
  • 文件系统操作
  • 命令执行
  • 项目探索和理解

原始实现是一个定义了与 Claude API 交互的提示和工具的 JavaScript 模块。

什么是 MCP?

Model Context Protocol (MCP) 是一种标准化接口,适用于 AI 模型,使不同模型和提供商之间可以有一致的交互模式。MCP 定义了:

  • 工具:模型可以调用以执行操作的函数
  • 资源:模型可以访问的外部数据
  • 提示:预定义的对话模板

通过将 Claude Code 实现为 MCP 服务器,我们使其功能可供任何兼容 MCP 的客户端使用,从而提高了互操作性和灵活性。

功能

  • 完整实现了作为 MCP 服务器的 Claude Code 功能
  • 提供文件操作、命令执行和代码分析工具
  • 暴露资源以访问文件系统和环境信息
  • 包含通用 CLI 交互和代码审查的提示
  • 与任何 MCP 客户端兼容
  • 使用 TypeScript 实现,具有完整的类型安全性

安装

# 克隆仓库
git clone https://github.com/auchenberg/claude-code-mcp.git
cd claude-code-mcp

# 安装依赖
npm install

# 构建项目
npm run build

使用

作为独立服务器运行

# 启动服务器
npm start

与 MCP 客户端一起使用

Claude Code MCP 可以与任何 MCP 客户端一起使用。以下是如何使用 MCP TypeScript SDK 连接到它的示例:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "node",
  args: ["dist/index.js"]
});

const client = new Client(
  {
    name: "example-client",
    version: "1.0.0"
  },
  {
    capabilities: {
      prompts: {},
      resources: {},
      tools: {}
    }
  }
);

await client.connect(transport);

// 通过 MCP 使用 Claude Code
const result = await client.callTool({
  name: "bash",
  arguments: {
    command: "ls -la"
  }
});

console.log(result);

可用工具

Claude Code MCP 提供以下工具:

  • bash:在安全限制和超时选项下执行 shell 命令
  • readFile:从文件系统读取文件,带有行偏移量和限制选项
  • listFiles:列出文件和目录及其详细元数据
  • searchGlob:搜索匹配 glob 模式的文件
  • grep:在文件中搜索文本,支持正则表达式模式
  • think:一个无操作工具,用于思考复杂问题
  • codeReview:分析和审查代码中的错误、安全问题和最佳实践
  • editFile:创建或编辑指定内容的文件

工具详情

bash

{
  command: string;  // 要执行的 shell 命令
  timeout?: number; // 可选超时时间(最大 600000 毫秒)
}

bash 工具包括安全限制,防止执行潜在危险的命令如 curlwget 等。

readFile

{
  file_path: string; // 要读取的文件的绝对路径
  offset?: number;   // 开始读取的行号
  limit?: number;    // 要读取的行数
}

searchGlob

{
  pattern: string;  // 要匹配文件的 glob 模式
  path?: string;    // 要搜索的目录(默认为当前工作目录)
}

grep

{
  pattern: string;   // 要搜索的正则表达式模式
  path?: string;     // 要搜索的目录(默认为当前工作目录)
  include?: string;  // 要包含在搜索中的文件模式(例如 "*.js","*.{ts,tsx}")
}

可用资源

  • file:访问文件内容 (file://{path})

    • 提供对文件内容的直接访问并具有适当的错误处理
    • 返回指定文件的全文内容
  • directory:列出目录内容 (dir://{path})

    • 返回一个包含文件信息对象的 JSON 数组
    • 每个对象包括名称、路径、是否为目录、大小和修改日期
  • environment:获取系统环境信息 (env://info)

    • 返回关于系统环境的信息
    • 包括 Node.js 版本、npm 版本、操作系统信息和环境变量

可用提示

  • generalCLI:Claude Code 的通用 CLI 提示

    • 提供一个全面的系统提示,让 Claude 作为一个 CLI 工具
    • 包括语气、风格、主动性以及遵循惯例的指南
    • 自动包含环境细节
  • codeReview:代码审查提示

    • 专门用于代码审查任务的提示
    • 分析代码中的错误、安全漏洞、性能问题和最佳实践
  • prReview:审查拉取请求的提示

    • 专门用于 PR 审查任务的提示
    • 分析 PR 更改并提供全面反馈
  • initCodebase:初始化包含代码库文档的新 CLAUDE.md 文件

    • 创建构建/检查/测试命令和代码样式指南的文档
    • 对于使用 Claude Code 设置新项目非常有用

开发

# 在开发模式下运行,自动重新加载
npm run dev

架构

Claude Code MCP 使用模块化架构构建:

claude-code-mcp/
├── src/
│   ├── server/
│   │   ├── claude-code-server.ts  # 主服务器设置
│   │   ├── tools.ts               # 工具实现
│   │   ├── prompts.ts             # 提示定义
│   │   └── resources.ts           # 资源实现
│   ├── utils/
│   │   ├── bash.ts                # 命令行工具
│   │   └── file.ts                # 文件系统工具
│   └── index.ts                   # 入口点
├── package.json
├── tsconfig.json
└── README.md

实现遵循以下关键原则:

  1. 模块化:每个组件(工具、提示、资源)都在单独的模块中实现
  2. 类型安全性:所有组件都有完整的 TypeScript 类型定义
  3. 错误处理:所有操作都有全面的错误处理
  4. 安全性:对潜在危险的操作有安全限制

实现细节

MCP 服务器设置

主服务器在 claude-code-server.ts 中设置:

export async function setupClaudeCodeServer(server: McpServer): Promise<void> {
  // 设置 Claude Code 工具
  setupTools(server);
  
  // 设置 Claude Code 提示
  setupPrompts(server);
  
  // 设置 Claude Code 资源
  setupResources(server);
}

工具实现

工具使用 MCP SDK 的工具注册方法实现:

server.tool(
  "toolName",
  "工具描述",
  {
    // Zod 模式工具参数
    param1: z.string().describe("参数描述"),
    param2: z.number().optional().describe("可选参数描述")
  },
  async ({ param1, param2 }) => {
    // 工具实现
    return {
      content: [{ type: "text", text: "结果" }]
    };
  }
);

资源实现

资源使用 MCP SDK 的资源注册方法实现:

server.resource(
  "resourceName",
  new ResourceTemplate("resource://{variable}", { list: undefined }),
  async (uri, variables) => {
    // 资源实现
    return {
      contents: [{
        uri: uri.href,
        text: "资源内容"
      }]
    };
  }
);

许可证

MIT

致谢

贡献

欢迎贡献!请随时提交 Pull Request。

免责声明

本项目未得到 Anthropic 的正式认可。Claude Code 是 Anthropic 的产品,而本项目是作为 MCP 服务器的独立实现。