4444from cecli .io import ConfirmGroup , InputOutput
4545from cecli .linter import Linter
4646from cecli .llm import litellm
47- from cecli .mcp . server import LocalServer
47+ from cecli .mcp import LocalServer
4848from cecli .models import RETRY_TIMEOUT
4949from cecli .reasoning_tags import (
5050 REASONING_TAG ,
@@ -138,7 +138,7 @@ class Coder:
138138 chat_language = None
139139 commit_language = None
140140 file_watcher = None
141- mcp_servers = None
141+ mcp_manager = None
142142 mcp_tools = None
143143 run_one_completed = True
144144 compact_context_completed = True
@@ -249,8 +249,8 @@ async def create(
249249
250250 if res is not None :
251251 if from_coder :
252- if from_coder .mcp_servers and kwargs . get ( "mcp_servers" , False ) :
253- res .mcp_servers = from_coder .mcp_servers
252+ if from_coder .mcp_manager :
253+ res .mcp_manager = from_coder .mcp_manager
254254 res .mcp_tools = from_coder .mcp_tools
255255
256256 # Transfer TUI app weak reference
@@ -316,7 +316,7 @@ def __init__(
316316 file_watcher = None ,
317317 auto_copy_context = False ,
318318 auto_accept_architect = True ,
319- mcp_servers = None ,
319+ mcp_manager = None ,
320320 enable_context_compaction = False ,
321321 context_compaction_max_tokens = None ,
322322 context_compaction_summary_tokens = 8192 ,
@@ -350,7 +350,7 @@ def __init__(
350350 self .args = args
351351
352352 self .num_cache_warming_pings = num_cache_warming_pings
353- self .mcp_servers = mcp_servers
353+ self .mcp_manager = mcp_manager
354354 self .enable_context_compaction = enable_context_compaction
355355
356356 self .context_compaction_max_tokens = context_compaction_max_tokens
@@ -1564,7 +1564,7 @@ async def generate(self, user_message, preproc):
15641564
15651565 def copy_context (self ):
15661566 if self .auto_copy_context :
1567- self .commands .cmd_copy_context ( )
1567+ self .commands .execute ( "copy-context" , "" )
15681568
15691569 async def get_input (self ):
15701570 inchat_files = self .get_inchat_relative_files ()
@@ -1684,7 +1684,7 @@ async def check_for_urls(self, inp: str) -> List[str]:
16841684 explicit_yes_required = self .args .yes_always_commands ,
16851685 ):
16861686 inp += "\n \n "
1687- inp += await self .commands .do_run ("web" , url , return_content = True )
1687+ inp += await self .commands .execute ("web" , url , return_content = True )
16881688 else :
16891689 self .rejected_urls .add (url )
16901690
@@ -2438,7 +2438,7 @@ async def send_message(self, inp):
24382438 ]
24392439
24402440 if edited and self .auto_test :
2441- test_errors = await self .commands .cmd_test ( self .test_cmd )
2441+ test_errors = await self .commands .execute ( "test" , self .test_cmd )
24422442 self .test_outcome = not test_errors
24432443 if test_errors :
24442444 ok = await self .io .confirm_ask ("Attempt to fix test errors?" )
@@ -2562,7 +2562,7 @@ def _gather_server_tool_calls(self, tool_calls):
25622562 and tool_name_from_schema .lower () == tool_call .function .name .lower ()
25632563 ):
25642564 # Find the McpServer instance that will be used for communication
2565- for server in self .mcp_servers :
2565+ for server in self .mcp_manager :
25662566 if server .name == server_name :
25672567 if server not in server_tool_calls :
25682568 server_tool_calls [server ] = []
@@ -2740,6 +2740,7 @@ async def initialize_mcp_tools(self):
27402740 Initialize tools from all configured MCP servers. MCP Servers that fail to be
27412741 initialized will not be available to the Coder instance.
27422742 """
2743+ # TODO(@gopar): refactor here once we have fully moved over to use the mcp manager
27432744 tools = []
27442745
27452746 async def get_server_tools (server ):
@@ -2750,9 +2751,13 @@ async def get_server_tools(server):
27502751 return (server .name , server_tools )
27512752
27522753 try :
2753- session = await server .connect ()
2754+ did_connect = await self .mcp_manager .connect_server (server .name )
2755+ if not did_connect :
2756+ raise Exception ("Failed to load tools" )
2757+
2758+ server = self .mcp_manager .get_server (server .name )
27542759 server_tools = await experimental_mcp_client .load_mcp_tools (
2755- session = session , format = "openai"
2760+ session = server . session , format = "openai"
27562761 )
27572762 return (server .name , server_tools )
27582763 except Exception as e :
@@ -2761,11 +2766,11 @@ async def get_server_tools(server):
27612766 return None
27622767
27632768 async def get_all_server_tools ():
2764- tasks = [get_server_tools (server ) for server in self .mcp_servers ]
2769+ tasks = [get_server_tools (server ) for server in self .mcp_manager ]
27652770 results = await asyncio .gather (* tasks )
27662771 return [result for result in results if result is not None ]
27672772
2768- if self .mcp_servers :
2773+ if self .mcp_manager :
27692774 # Retry initialization in case of CancelledError
27702775 max_retries = 3
27712776 for i in range (max_retries ):
@@ -3852,7 +3857,7 @@ def show_auto_commit_outcome(self, res):
38523857 self .coder_commit_hashes .add (commit_hash )
38533858 self .last_coder_commit_message = commit_message
38543859 if self .show_diffs :
3855- self .commands .cmd_diff ( )
3860+ self .commands .execute ( "diff" , "" )
38563861
38573862 def show_undo_hint (self ):
38583863 if not self .commit_before_message :
0 commit comments