Skip to content

Commit db23971

Browse files
committed
refactor: remove DocumentContext and related functionality
The DocumentContext class and all its related functionality has been removed from the codebase. This includes: - Removing DocumentContext class and all its methods - Removing DocumentContext parameter from all tool constructors - Removing DocumentContext references from server initialization - Removing DocumentContext from tool registration functions - Removing DocumentContext from tests - Updating filesystem tools to no longer track document contents The permission management is now handled solely by PermissionManager. This simplifies the codebase by removing redundant path tracking functionality.
1 parent bf3233a commit db23971

26 files changed

+73
-667
lines changed

mcp_claude_code/server.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from mcp_claude_code.prompts import register_all_prompts
88
from mcp_claude_code.tools import register_all_tools
9-
from mcp_claude_code.tools.common.context import DocumentContext
9+
1010
from mcp_claude_code.tools.common.permissions import PermissionManager
1111

1212

@@ -47,15 +47,13 @@ def __init__(
4747
"""
4848
self.mcp = mcp_instance if mcp_instance is not None else FastMCP(name)
4949

50-
# Initialize context, permissions, and command executor
51-
self.document_context = DocumentContext()
50+
# Initialize permissions and command executor
5251
self.permission_manager = PermissionManager()
5352

5453
# Add allowed paths
5554
if allowed_paths:
5655
for path in allowed_paths:
5756
self.permission_manager.add_allowed_path(path)
58-
self.document_context.add_allowed_path(path)
5957

6058
# Store project paths
6159
self.project_paths = project_paths
@@ -73,7 +71,6 @@ def __init__(
7371
# Register all tools
7472
register_all_tools(
7573
mcp_server=self.mcp,
76-
document_context=self.document_context,
7774
permission_manager=self.permission_manager,
7875
agent_model=self.agent_model,
7976
agent_max_tokens=self.agent_max_tokens,
@@ -97,7 +94,6 @@ def run(self, transport: str = "stdio", allowed_paths: list[str] | None = None):
9794
allowed_paths_list = allowed_paths or []
9895
for path in allowed_paths_list:
9996
self.permission_manager.add_allowed_path(path)
100-
self.document_context.add_allowed_path(path)
10197

10298
# Run the server
10399
transport_type = cast(Literal["stdio", "sse"], transport)

mcp_claude_code/tools/__init__.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from mcp_claude_code.tools.agent import register_agent_tools
1515
from mcp_claude_code.tools.common import register_batch_tool, register_thinking_tool
1616
from mcp_claude_code.tools.common.base import BaseTool
17-
from mcp_claude_code.tools.common.context import DocumentContext
17+
1818
from mcp_claude_code.tools.common.permissions import PermissionManager
1919
from mcp_claude_code.tools.filesystem import register_filesystem_tools
2020
from mcp_claude_code.tools.jupyter import register_jupyter_tools
@@ -24,7 +24,6 @@
2424

2525
def register_all_tools(
2626
mcp_server: FastMCP,
27-
document_context: DocumentContext,
2827
permission_manager: PermissionManager,
2928
agent_model: str | None = None,
3029
agent_max_tokens: int | None = None,
@@ -38,7 +37,6 @@ def register_all_tools(
3837
3938
Args:
4039
mcp_server: The FastMCP server instance
41-
document_context: Document context for tracking file contents
4240
permission_manager: Permission manager for access control
4341
agent_model: Optional model name for agent tool in LiteLLM format
4442
agent_max_tokens: Optional maximum tokens for agent responses
@@ -52,16 +50,12 @@ def register_all_tools(
5250
all_tools: dict[str, BaseTool] = {}
5351

5452
# Register all filesystem tools
55-
filesystem_tools = register_filesystem_tools(
56-
mcp_server, document_context, permission_manager
57-
)
53+
filesystem_tools = register_filesystem_tools(mcp_server, permission_manager)
5854
for tool in filesystem_tools:
5955
all_tools[tool.name] = tool
6056

6157
# Register all jupyter tools
62-
jupyter_tools = register_jupyter_tools(
63-
mcp_server, document_context, permission_manager
64-
)
58+
jupyter_tools = register_jupyter_tools(mcp_server, permission_manager)
6559
for tool in jupyter_tools:
6660
all_tools[tool.name] = tool
6761

@@ -74,7 +68,6 @@ def register_all_tools(
7468
if enable_agent_tool:
7569
agent_tools = register_agent_tools(
7670
mcp_server,
77-
document_context,
7871
permission_manager,
7972
agent_model=agent_model,
8073
agent_max_tokens=agent_max_tokens,

mcp_claude_code/tools/agent/__init__.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88

99
from mcp_claude_code.tools.agent.agent_tool import AgentTool
1010
from mcp_claude_code.tools.common.base import BaseTool, ToolRegistry
11-
from mcp_claude_code.tools.common.context import DocumentContext
11+
1212
from mcp_claude_code.tools.common.permissions import PermissionManager
1313

1414

1515
def register_agent_tools(
1616
mcp_server: FastMCP,
17-
document_context: DocumentContext,
1817
permission_manager: PermissionManager,
1918
agent_model: str | None = None,
2019
agent_max_tokens: int | None = None,
@@ -27,7 +26,7 @@ def register_agent_tools(
2726
2827
Args:
2928
mcp_server: The FastMCP server instance
30-
document_context: Document context for tracking file contents
29+
3130
permission_manager: Permission manager for access control
3231
agent_model: Optional model name for agent tool in LiteLLM format
3332
agent_max_tokens: Optional maximum tokens for agent responses
@@ -41,7 +40,6 @@ def register_agent_tools(
4140
"""
4241
# Create agent tool
4342
agent_tool = AgentTool(
44-
document_context=document_context,
4543
permission_manager=permission_manager,
4644
model=agent_model,
4745
api_key=agent_api_key,

mcp_claude_code/tools/agent/agent_tool.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
from mcp_claude_code.tools.common.base import BaseTool
3030
from mcp_claude_code.tools.common.batch_tool import BatchTool
3131
from mcp_claude_code.tools.common.context import (
32-
DocumentContext,
3332
ToolContext,
3433
create_tool_context,
3534
)
@@ -104,7 +103,6 @@ def description(self) -> str:
104103

105104
def __init__(
106105
self,
107-
document_context: DocumentContext,
108106
permission_manager: PermissionManager,
109107
model: str | None = None,
110108
api_key: str | None = None,
@@ -116,7 +114,7 @@ def __init__(
116114
"""Initialize the agent tool.
117115
118116
Args:
119-
document_context: Document context for tracking file contents
117+
120118
permission_manager: Permission manager for access control
121119
model: Optional model name override in LiteLLM format (e.g., "openai/gpt-4o")
122120
api_key: Optional API key for the model provider
@@ -125,7 +123,7 @@ def __init__(
125123
max_iterations: Maximum number of iterations for agent (default: 10)
126124
max_tool_uses: Maximum number of total tool uses for agent (default: 30)
127125
"""
128-
self.document_context = document_context
126+
129127
self.permission_manager = permission_manager
130128
self.model_override = model
131129
self.api_key_override = api_key
@@ -135,12 +133,10 @@ def __init__(
135133
self.max_tool_uses = max_tool_uses
136134
self.available_tools: list[BaseTool] = []
137135
self.available_tools.extend(
138-
get_read_only_filesystem_tools(
139-
self.document_context, self.permission_manager
140-
)
136+
get_read_only_filesystem_tools(self.permission_manager)
141137
)
142138
self.available_tools.extend(
143-
get_read_only_jupyter_tools(self.document_context, self.permission_manager)
139+
get_read_only_jupyter_tools(self.permission_manager)
144140
)
145141
self.available_tools.append(
146142
BatchTool({t.name: t for t in self.available_tools})

mcp_claude_code/tools/common/base.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from fastmcp import FastMCP
1414
from fastmcp import Context as MCPContext
1515

16-
from mcp_claude_code.tools.common.context import DocumentContext
16+
1717
from mcp_claude_code.tools.common.permissions import PermissionManager
1818
from mcp_claude_code.tools.common.validation import (
1919
ValidationResult,
@@ -122,16 +122,12 @@ class FileSystemTool(BaseTool, ABC):
122122
including permission checking and path validation.
123123
"""
124124

125-
def __init__(
126-
self, document_context: DocumentContext, permission_manager: PermissionManager
127-
) -> None:
125+
def __init__(self, permission_manager: PermissionManager) -> None:
128126
"""Initialize filesystem tool.
129127
130128
Args:
131-
document_context: Document context for tracking file contents
132129
permission_manager: Permission manager for access control
133130
"""
134-
self.document_context: DocumentContext = document_context
135131
self.permission_manager: PermissionManager = permission_manager
136132

137133
def validate_path(self, path: str, param_name: str = "path") -> ValidationResult:

0 commit comments

Comments
 (0)