fix: environment variable handling for stdio mcp (#3340)
Co-authored-by: Jin Peng <jinjpeng@Jins-MacBook-Pro.local>
This commit is contained in:
@@ -20,7 +20,7 @@ from letta.helpers.composio_helpers import get_composio_api_key
|
||||
from letta.log import get_logger
|
||||
from letta.orm.errors import UniqueConstraintViolationError
|
||||
from letta.schemas.letta_message import ToolReturnMessage
|
||||
from letta.schemas.mcp import UpdateSSEMCPServer, UpdateStreamableHTTPMCPServer
|
||||
from letta.schemas.mcp import UpdateSSEMCPServer, UpdateStdioMCPServer, UpdateStreamableHTTPMCPServer
|
||||
from letta.schemas.tool import Tool, ToolCreate, ToolRunFromSource, ToolUpdate
|
||||
from letta.server.rest_api.utils import get_letta_server
|
||||
from letta.server.server import SyncServer
|
||||
@@ -550,7 +550,7 @@ async def add_mcp_server_to_config(
|
||||
)
|
||||
async def update_mcp_server(
|
||||
mcp_server_name: str,
|
||||
request: Union[UpdateSSEMCPServer, UpdateStreamableHTTPMCPServer] = Body(...),
|
||||
request: Union[UpdateStdioMCPServer, UpdateSSEMCPServer, UpdateStreamableHTTPMCPServer] = Body(...),
|
||||
server: SyncServer = Depends(get_letta_server),
|
||||
actor_id: Optional[str] = Header(None, alias="user_id"),
|
||||
):
|
||||
|
||||
@@ -11,11 +11,10 @@ logger = get_logger(__name__)
|
||||
# TODO: Get rid of Async prefix on this class name once we deprecate old sync code
|
||||
class AsyncStdioMCPClient(AsyncBaseMCPClient):
|
||||
async def _initialize_connection(self, server_config: StdioServerConfig) -> None:
|
||||
|
||||
args = [arg.split() for arg in server_config.args]
|
||||
# flatten
|
||||
args = [arg for sublist in args for arg in sublist]
|
||||
server_params = StdioServerParameters(command=server_config.command, args=args)
|
||||
server_params = StdioServerParameters(command=server_config.command, args=args, env=server_config.env)
|
||||
stdio_transport = await self.exit_stack.enter_async_context(stdio_client(server_params))
|
||||
self.stdio, self.write = stdio_transport
|
||||
self.session = await self.exit_stack.enter_async_context(ClientSession(self.stdio, self.write))
|
||||
|
||||
Reference in New Issue
Block a user