CodeGraph supports the Agent Client Protocol (ACP) for seamless IDE integration with Zed, JetBrains IDEs, VS Code, and other ACP-compatible editors.
Overview¶
ACP is a standardized protocol for communication between code editors and AI coding agents. CodeGraph implements ACP to provide intelligent code analysis directly within your IDE.
Transports¶
CodeGraph supports three transport mechanisms:
| Transport | Use Case | Endpoint |
|---|---|---|
| stdio | Local subprocess (IDE spawned) | codegraph-acp command |
| HTTP | Remote REST API | POST /api/v1/acp/rpc |
| WebSocket | Real-time streaming | WS /api/v1/acp/ws |
Supported Methods¶
Baseline Methods (Required)¶
| Method | Description |
|---|---|
initialize |
Capability negotiation |
authenticate |
JWT token authentication |
session/new |
Create new session |
session/prompt |
Send user message |
session/cancel |
Cancel ongoing operation |
Optional Methods¶
| Method | Description |
|---|---|
session/load |
Resume existing session |
fs/read_text_file |
Read file from filesystem |
fs/write_text_file |
Write file to filesystem |
terminal/create |
Create terminal session |
terminal/output |
Get terminal output |
terminal/wait_for_exit |
Wait for command completion |
terminal/kill |
Kill running command |
terminal/release |
Release terminal resources |
Thread Management Methods¶
| Method | Description |
|---|---|
thread/start |
Start a new conversation thread |
thread/resume |
Resume an existing thread |
thread/fork |
Fork a thread into a new branch |
thread/list |
List all active threads |
thread/archive |
Archive a completed thread |
thread/compact |
Compact thread history |
Turn Control Methods¶
| Method | Description |
|---|---|
turn/start |
Begin a new agent turn |
turn/interrupt |
Interrupt current turn |
Diagnostics Methods¶
| Method | Description |
|---|---|
diagnostics/subscribe |
Subscribe to diagnostic events |
diagnostics/unsubscribe |
Unsubscribe from diagnostics |
IDE Integration Methods¶
| Method | Description |
|---|---|
hover/request |
Request hover information for symbol |
item/fileChange/respondApproval |
Respond to file change approval request |
Agent Capabilities¶
CodeGraph advertises the following capabilities:
{
"loadSession": true,
"setMode": false,
"promptCapabilities": {
"image": false,
"audio": false,
"embeddedContext": true
},
"mcp": {
"stdio": true,
"http": true,
"sse": false
},
"authMethods": ["bearer"]
}
Session Lifecycle¶
1. Initialize
Client -> initialize -> Agent
Agent -> capabilities -> Client
2. Create Session
Client -> session/new {cwd} -> Agent
Agent -> {sessionId} -> Client
3. Send Prompt
Client -> session/prompt {sessionId, prompt} -> Agent
Agent -> session/update (plan) -> Client
Agent -> session/update (tool_call) -> Client
Agent -> session/update (agent_message_chunk) -> Client
Agent -> {stopReason} -> Client
4. Close
Client -> session/cancel -> Agent
API Endpoints¶
HTTP Transport¶
POST /api/v1/acp/rpc
Single JSON-RPC endpoint for all ACP method calls.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": 1,
"clientCapabilities": {},
"clientInfo": {"name": "my-ide", "version": "1.0"}
}
}
Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": 1,
"agentCapabilities": {...},
"agentInfo": {
"name": "codegraph",
"version": "0.1.0",
"title": "CodeGraph AI-native Code Analysis Agent"
}
}
}
WebSocket Transport¶
WS /api/v1/acp/ws?token=
Streaming endpoint with real-time session updates.
Supports bidirectional messaging: - Client -> Agent: JSON-RPC requests - Agent -> Client: JSON-RPC responses + notifications
Health Check¶
GET /api/v1/acp/health
Returns agent status and capabilities.
GET /api/v1/acp/info
Returns agent metadata for discovery.
Session Management and Stats¶
GET /api/v1/acp/sessions
Returns active ACP sessions for the current user. Authentication required.
DELETE /api/v1/acp/sessions/{session_id}
Deletes an ACP session owned by the current user.
Authentication required.
Returns 404 if the session does not exist, 403 if the user is not the owner.
GET /api/v1/acp/stats
Returns ACP runtime statistics: - Session stats - WebSocket connection count - Active terminal count
Authentication required.
Session Updates¶
During prompt processing, CodeGraph sends session/update notifications:
Plan Update¶
{
"sessionUpdate": "plan",
"plan": {
"entries": [
{"id": "1", "title": "Classifying intent", "status": "completed"},
{"id": "2", "title": "Querying code graph", "status": "in_progress"},
{"id": "3", "title": "Generating response", "status": "pending"}
]
}
}
Tool Call Update¶
{
"sessionUpdate": "tool_call",
"toolCallId": "tc_abc123",
"title": "Security Analysis",
"kind": "search",
"status": "in_progress"
}
Message Chunk¶
{
"sessionUpdate": "agent_message_chunk",
"chunk": "Based on my analysis..."
}
Tool Call Kinds¶
CodeGraph maps its scenarios to ACP tool kinds:
| Scenario | Tool Kind |
|---|---|
| Security Analysis | search |
| Code Review | read |
| Performance Analysis | search |
| Refactoring | edit |
| Documentation | read |
| Architecture Analysis | think |
Authentication¶
For HTTP/WebSocket transports, authentication is optional but recommended:
Authorization: Bearer <jwt_token>
Authenticated sessions have: - Persistent dialogue history - User-specific settings - Rate limit quotas
Error Codes¶
| Code | Meaning |
|---|---|
| -32700 | Parse error |
| -32600 | Invalid request |
| -32601 | Method not found |
| -32602 | Invalid params |
| -32603 | Internal error |
| -32002 | Agent not initialized |
Examples¶
Initialize and Create Session¶
# Initialize
curl -X POST http://localhost:8000/api/v1/acp/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": 1,
"clientCapabilities": {},
"clientInfo": {"name": "curl-client"}
}
}'
# Create session
curl -X POST http://localhost:8000/api/v1/acp/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "session/new",
"params": {"cwd": "/path/to/project"}
}'
Send Prompt¶
curl -X POST http://localhost:8000/api/v1/acp/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "session/prompt",
"params": {
"sessionId": "acp_xxx",
"prompt": [
{"type": "text", "text": "What are the main entry points?"}
]
}
}'
MCP Server Support¶
CodeGraph can connect to external MCP servers provided by the client:
{
"method": "session/new",
"params": {
"cwd": "/project",
"mcpServers": [
{
"id": "github",
"name": "GitHub MCP",
"transport": "stdio",
"command": "github-mcp-server"
}
]
}
}
CodeGraph MCP Server¶
CodeGraph also exposes its own MCP server, allowing AI assistants (Claude Code, Cursor, Windsurf, etc.) to query the Code Property Graph directly.
Running the Server¶
# Start MCP server via stdio transport
python -m src.mcp
# With specific database
python -m src.mcp --db data/projects/postgres.duckdb
# Verbose logging
python -m src.mcp --verbose
Available Tools (65 tools)¶
The MCP server exposes 65 built-in tools covering code analysis, navigation, security, compliance, structural patterns, enterprise integrations, and more.
For the complete tool reference with parameters and descriptions, see MCP Tools Reference.
Configuration¶
MCP server settings in config.yaml:
mcp:
enabled: true
transport: stdio
max_query_rows: 1000
dynamic_tools_path: .codegraph/tools.yaml
Dynamic Tools¶
Custom SQL-based tools can be defined in .codegraph/tools.yaml:
tools:
- name: find_large_methods
description: "Find methods with high cyclomatic complexity"
sql: "SELECT name, Filename, CyclomaticComplexity FROM nodes_method WHERE CyclomaticComplexity > ? ORDER BY CyclomaticComplexity DESC LIMIT ?"
parameters:
- name: threshold
type: integer
description: "Minimum complexity threshold"
default: 10
- name: limit
type: integer
description: "Maximum results"
default: 20
Only SELECT queries are allowed in dynamic tools. DDL/DML statements are rejected at load time.
Claude Code Integration¶
Add to your Claude Code MCP configuration (.claude/mcp.json):
{
"mcpServers": {
"codegraph": {
"command": "python",
"args": ["-m", "src.mcp", "--db", "data/projects/postgres.duckdb"],
"cwd": "/path/to/codegraph"
}
}
}
See Also¶
- MCP Tools Reference — complete list of 65 MCP tools
- WebSocket API
- ACP Protocol Specification