chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
import asyncio
|
||||
import pdb
|
||||
import sys
|
||||
import time
|
||||
|
||||
sys.path.append(".")
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
|
||||
async def test_mcp_client():
|
||||
from src.utils.mcp_client import setup_mcp_client_and_tools, create_tool_param_model
|
||||
|
||||
test_server_config = {
|
||||
"mcpServers": {
|
||||
# "markitdown": {
|
||||
# "command": "docker",
|
||||
# "args": [
|
||||
# "run",
|
||||
# "--rm",
|
||||
# "-i",
|
||||
# "markitdown-mcp:latest"
|
||||
# ]
|
||||
# },
|
||||
"desktop-commander": {
|
||||
"command": "npx",
|
||||
"args": [
|
||||
"-y",
|
||||
"@wonderwhy-er/desktop-commander"
|
||||
]
|
||||
},
|
||||
# "filesystem": {
|
||||
# "command": "npx",
|
||||
# "args": [
|
||||
# "-y",
|
||||
# "@modelcontextprotocol/server-filesystem",
|
||||
# "/Users/xxx/ai_workspace",
|
||||
# ]
|
||||
# },
|
||||
}
|
||||
}
|
||||
|
||||
mcp_tools, mcp_client = await setup_mcp_client_and_tools(test_server_config)
|
||||
|
||||
for tool in mcp_tools:
|
||||
tool_param_model = create_tool_param_model(tool)
|
||||
print(tool.name)
|
||||
print(tool.description)
|
||||
print(tool_param_model.model_json_schema())
|
||||
pdb.set_trace()
|
||||
|
||||
|
||||
async def test_controller_with_mcp():
|
||||
import os
|
||||
from src.controller.custom_controller import CustomController
|
||||
from browser_use.controller.registry.views import ActionModel
|
||||
|
||||
mcp_server_config = {
|
||||
"mcpServers": {
|
||||
# "markitdown": {
|
||||
# "command": "docker",
|
||||
# "args": [
|
||||
# "run",
|
||||
# "--rm",
|
||||
# "-i",
|
||||
# "markitdown-mcp:latest"
|
||||
# ]
|
||||
# },
|
||||
"desktop-commander": {
|
||||
"command": "npx",
|
||||
"args": [
|
||||
"-y",
|
||||
"@wonderwhy-er/desktop-commander"
|
||||
]
|
||||
},
|
||||
# "filesystem": {
|
||||
# "command": "npx",
|
||||
# "args": [
|
||||
# "-y",
|
||||
# "@modelcontextprotocol/server-filesystem",
|
||||
# "/Users/xxx/ai_workspace",
|
||||
# ]
|
||||
# },
|
||||
}
|
||||
}
|
||||
|
||||
controller = CustomController()
|
||||
await controller.setup_mcp_client(mcp_server_config)
|
||||
action_name = "mcp.desktop-commander.execute_command"
|
||||
action_info = controller.registry.registry.actions[action_name]
|
||||
param_model = action_info.param_model
|
||||
print(param_model.model_json_schema())
|
||||
params = {"command": f"python ./tmp/test.py"
|
||||
}
|
||||
validated_params = param_model(**params)
|
||||
ActionModel_ = controller.registry.create_action_model()
|
||||
# Create ActionModel instance with the validated parameters
|
||||
action_model = ActionModel_(**{action_name: validated_params})
|
||||
result = await controller.act(action_model)
|
||||
result = result.extracted_content
|
||||
print(result)
|
||||
if result and "Command is still running. Use read_output to get more output." in result and "PID" in \
|
||||
result.split("\n")[0]:
|
||||
pid = int(result.split("\n")[0].split("PID")[-1].strip())
|
||||
action_name = "mcp.desktop-commander.read_output"
|
||||
action_info = controller.registry.registry.actions[action_name]
|
||||
param_model = action_info.param_model
|
||||
print(param_model.model_json_schema())
|
||||
params = {"pid": pid}
|
||||
validated_params = param_model(**params)
|
||||
action_model = ActionModel_(**{action_name: validated_params})
|
||||
output_result = ""
|
||||
while True:
|
||||
time.sleep(1)
|
||||
result = await controller.act(action_model)
|
||||
result = result.extracted_content
|
||||
if result:
|
||||
pdb.set_trace()
|
||||
output_result = result
|
||||
break
|
||||
print(output_result)
|
||||
pdb.set_trace()
|
||||
await controller.close_mcp_client()
|
||||
pdb.set_trace()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# asyncio.run(test_mcp_client())
|
||||
asyncio.run(test_controller_with_mcp())
|
||||
Reference in New Issue
Block a user