mirror of
https://github.com/codeaashu/claude-code.git
synced 2026-04-08 22:28:48 +03:00
114 lines
3.4 KiB
Markdown
114 lines
3.4 KiB
Markdown
# Prompt 11: MCP Client/Server Integration
|
|
|
|
## Context
|
|
|
|
You are working in `/workspaces/claude-code`. The CLI has built-in MCP (Model Context Protocol) support:
|
|
- **MCP Client** — connects to external MCP servers (tools, resources)
|
|
- **MCP Server** — exposes Claude Code itself as an MCP server
|
|
|
|
MCP lets the CLI use tools provided by external servers and lets other clients use Claude Code as a tool provider.
|
|
|
|
## Key Files
|
|
|
|
- `src/services/mcp/` — MCP client implementation
|
|
- `src/services/mcp/types.ts` — MCP config types
|
|
- `src/entrypoints/mcp.ts` — MCP server mode entrypoint
|
|
- `src/tools/MCPTool/` — Tool that calls MCP servers
|
|
- `src/tools/ListMcpResourcesTool/` — Lists MCP resources
|
|
- `src/tools/ReadMcpResourceTool/` — Reads MCP resources
|
|
- `src/tools/McpAuthTool/` — MCP server authentication
|
|
- `mcp-server/` — Standalone MCP server sub-project (from Prompt 04)
|
|
|
|
## Task
|
|
|
|
### Part A: Understand MCP client architecture
|
|
|
|
Read `src/services/mcp/` directory:
|
|
1. How are MCP servers discovered? (`.mcp.json` config file?)
|
|
2. How are MCP server connections established? (stdio, HTTP, SSE?)
|
|
3. How are MCP tools registered and made available?
|
|
4. What is the `ScopedMcpServerConfig` type?
|
|
|
|
### Part B: Understand MCP config format
|
|
|
|
Search for `.mcp.json` or MCP config loading code. Document:
|
|
1. Where does the config file live? (`~/.claude/.mcp.json`? project root?)
|
|
2. What's the config schema? (server name, command, args, env?)
|
|
3. How are multiple servers configured?
|
|
|
|
Example config you might find:
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"my-server": {
|
|
"command": "node",
|
|
"args": ["path/to/server.js"],
|
|
"env": {}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Part C: Verify MCP SDK integration
|
|
|
|
The project uses `@modelcontextprotocol/sdk` (^1.12.1). Check:
|
|
1. Is it installed in `node_modules/`?
|
|
2. Does the import work: `import { Client } from '@modelcontextprotocol/sdk/client/index.js'`
|
|
3. Are there version compatibility issues?
|
|
|
|
### Part D: Test MCP client with our own server
|
|
|
|
Create a test that:
|
|
1. Starts the `mcp-server/` we fixed in Prompt 04 as a child process
|
|
2. Connects to it via stdio using the MCP client from `src/services/mcp/`
|
|
3. Lists available tools
|
|
4. Calls one tool (e.g., `list_files` or `search_code`)
|
|
|
|
Create `scripts/test-mcp.ts`:
|
|
```ts
|
|
// scripts/test-mcp.ts
|
|
// Test MCP client/server roundtrip
|
|
// Usage: bun scripts/test-mcp.ts
|
|
|
|
import './src/shims/preload.js'
|
|
|
|
// TODO:
|
|
// 1. Spawn mcp-server as a child process (stdio transport)
|
|
// 2. Create MCP client from src/services/mcp/
|
|
// 3. Connect client to server
|
|
// 4. List tools
|
|
// 5. Call a tool
|
|
// 6. Print results
|
|
```
|
|
|
|
### Part E: Test MCP server mode
|
|
|
|
The CLI can run as an MCP server itself (`src/entrypoints/mcp.ts`). Read this file and verify:
|
|
1. What tools does it expose?
|
|
2. What resources does it provide?
|
|
3. Can it be started with `bun src/entrypoints/mcp.ts`?
|
|
|
|
### Part F: Create sample MCP config
|
|
|
|
Create a `.mcp.json` in the project root (or wherever the app looks for it) that configures the local MCP server:
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"claude-code-explorer": {
|
|
"command": "node",
|
|
"args": ["mcp-server/dist/index.js"],
|
|
"env": {
|
|
"CLAUDE_CODE_SRC_ROOT": "./src"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Verification
|
|
|
|
1. MCP client code in `src/services/mcp/` loads without errors
|
|
2. MCP server mode (`src/entrypoints/mcp.ts`) starts without crashing
|
|
3. A roundtrip test (client → server → response) works
|
|
4. `.mcp.json` config file is created and parseable
|