Claude 代码助手
STDIO用于软件工程任务的Claude代码MCP实现
用于软件工程任务的Claude代码MCP实现
Claude Code MCP is an implementation of Claude Code as a Model Context Protocol (MCP) server. This project allows you to use Claude Code's powerful software engineering capabilities through the standardized MCP interface.
Claude Code MCP is a auto-generated project by DevinAI, who was prompted to analyse the Claude Code codebase, and generate an MCP server.
This is a proof of concept that I don't advise anyone to use.
Claude Code is Anthropic's CLI tool for software engineering tasks, powered by Claude. It provides a set of tools and capabilities that help developers with:
The original implementation is available as a JavaScript module that defines prompts and tools for interacting with Claude's API.
The Model Context Protocol (MCP) is a standardized interface for AI models that enables consistent interaction patterns across different models and providers. MCP defines:
By implementing Claude Code as an MCP server, we make its capabilities available to any MCP-compatible client, allowing for greater interoperability and flexibility.
# Clone the repository git clone https://github.com/auchenberg/claude-code-mcp.git cd claude-code-mcp # Install dependencies npm install # Build the project npm run build
# Start the server npm start
Claude Code MCP can be used with any MCP client. Here's an example of how to connect to it using the 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); // Use Claude Code through MCP const result = await client.callTool({ name: "bash", arguments: { command: "ls -la" } }); console.log(result);
Claude Code MCP provides the following tools:
{ command: string; // The shell command to execute timeout?: number; // Optional timeout in milliseconds (max 600000) }
The bash tool includes security restrictions that prevent execution of potentially dangerous commands like curl
, wget
, and others.
{ file_path: string; // The absolute path to the file to read offset?: number; // The line number to start reading from limit?: number; // The number of lines to read }
{ pattern: string; // The glob pattern to match files against path?: string; // The directory to search in (defaults to current working directory) }
{ pattern: string; // The regular expression pattern to search for path?: string; // The directory to search in (defaults to current working directory) include?: string; // File pattern to include in the search (e.g. "*.js", "*.{ts,tsx}") }
file: Access file contents (file://{path}
)
directory: List directory contents (dir://{path}
)
environment: Get system environment information (env://info
)
generalCLI: General CLI prompt for Claude Code
codeReview: Prompt for reviewing code
prReview: Prompt for reviewing pull requests
initCodebase: Initialize a new CLAUDE.md file with codebase documentation
# Run in development mode with auto-reload npm run dev
Claude Code MCP is built with a modular architecture:
claude-code-mcp/
├── src/
│ ├── server/
│ │ ├── claude-code-server.ts # Main server setup
│ │ ├── tools.ts # Tool implementations
│ │ ├── prompts.ts # Prompt definitions
│ │ └── resources.ts # Resource implementations
│ ├── utils/
│ │ ├── bash.ts # Shell command utilities
│ │ └── file.ts # File system utilities
│ └── index.ts # Entry point
├── package.json
├── tsconfig.json
└── README.md
The implementation follows these key principles:
The main server is set up in claude-code-server.ts
:
export async function setupClaudeCodeServer(server: McpServer): Promise<void> { // Set up Claude Code tools setupTools(server); // Set up Claude Code prompts setupPrompts(server); // Set up Claude Code resources setupResources(server); }
Tools are implemented using the MCP SDK's tool registration method:
server.tool( "toolName", "Tool description", { // Zod schema for tool arguments param1: z.string().describe("Parameter description"), param2: z.number().optional().describe("Optional parameter description") }, async ({ param1, param2 }) => { // Tool implementation return { content: [{ type: "text", text: "Result" }] }; } );
Resources are implemented using the MCP SDK's resource registration method:
server.resource( "resourceName", new ResourceTemplate("resource://{variable}", { list: undefined }), async (uri, variables) => { // Resource implementation return { contents: [{ uri: uri.href, text: "Resource content" }] }; } );
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
This project is not officially affiliated with Anthropic. Claude Code is a product of Anthropic, and this project is an independent implementation of Claude Code as an MCP server.