You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to use the filesystem mcp server from my agent directly without adk web. The code is
# agent.py (modify get_tools_async and other parts as needed)
# ./adk_agent_samples/mcp_agent/agent.py
import asyncio
from dotenv import load_dotenv
from google.genai import types
from google.adk.agents.llm_agent import LlmAgent
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService # Optional
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, SseServerParams, StdioServerParameters
# Load environment variables from .env file in the parent directory
# Place this near the top, before using env vars like API keys
load_dotenv('../.env')
# --- Step 1: Agent Definition ---
async def get_agent_async():
"""Creates an ADK Agent equipped with tools from the MCP Server."""
tools, exit_stack = await MCPToolset.from_server(
# Use StdioServerParameters for local process communication
connection_params=StdioServerParameters(
command='npx', # Command to run the server
args=["-y", # Arguments for the command
"@modelcontextprotocol/server-filesystem",
# TODO: IMPORTANT! Change the path below to an ABSOLUTE path on your system.
"/path/to/your/folder"],
)
# For remote servers, you would use SseServerParams instead:
# connection_params=SseServerParams(url="http://remote-server:port/path", headers={...})
)
print(f"Fetched {len(tools)} tools from MCP server.")
root_agent = LlmAgent(
model='gemini-2.0-flash', # Adjust model name if needed based on availability
name='filesystem_assistant',
instruction='Help user interact with the local filesystem using available tools.',
tools=tools, # Provide the MCP tools to the ADK agent
)
return root_agent, exit_stack
# --- Step 2: Main Execution Logic ---
async def async_main():
session_service = InMemorySessionService()
# Artifact service might not be needed for this example
artifacts_service = InMemoryArtifactService()
session = session_service.create_session(
state={}, app_name='mcp_filesystem_app', user_id='user_fs'
)
# TODO: Change the query to be relevant to YOUR specified folder.
# e.g., "list files in the 'documents' subfolder" or "read the file 'notes.txt'"
query = "list files in the tests folder"
print(f"User Query: '{query}'")
content = types.Content(role='user', parts=[types.Part(text=query)])
root_agent, exit_stack = await get_agent_async()
runner = Runner(
app_name='mcp_filesystem_app',
agent=root_agent,
artifact_service=artifacts_service, # Optional
session_service=session_service,
)
print("Running agent...")
events_async = runner.run_async(
session_id=session.id, user_id=session.user_id, new_message=content
)
async for event in events_async:
print(f"Event received: {event}")
# Crucial Cleanup: Ensure the MCP server process connection is closed.
print("Closing MCP server connection...")
await exit_stack.aclose()
print("Cleanup complete.")
if __name__ == '__main__':
try:
asyncio.run(async_main())
except Exception as e:
print(f"An error occurred: {e}")
This is the same code from documentation for running an agent with filesystem mcp tool without adk web. I just replaced path with my own.
Expected behavior was connection with MCP server and giving that no test folder exists Actual Behavior is that the script just get stuck at MCP server connection. The last log printed was User Query: 'list files in the test folder'. The script simply gets stuck here.
Specifications:
OS: windows 11
Python: v3.13.2
adk: v0.3.0
A similar problem occurs when trying with adk web after setting reload to false.
Tried changing reload to false in the cli_tools_click.py . While it doesn't throw error after this, it simply gets stuck at tool initialization. tools, exit_stack = await MCPToolset.from_server( # Use StdioServerParameters for local process communication connection_params=StdioServerParameters( command='npx.cmd', args=["-y", "@modelcontextprotocol/server-filesystem", "/path/to/folder"], ) )
I am trying to use the filesystem mcp server from my agent directly without adk web. The code is
This is the same code from documentation for running an agent with filesystem mcp tool without adk web. I just replaced path with my own.
Expected behavior was connection with MCP server and giving that no test folder exists
Actual Behavior is that the script just get stuck at MCP server connection. The last log printed was
User Query: 'list files in the test folder'
. The script simply gets stuck here.Specifications:
OS: windows 11
Python: v3.13.2
adk: v0.3.0
A similar problem occurs when trying with adk web after setting reload to false.
Originally posted by @B-SRIKRISHNAN in #387
The text was updated successfully, but these errors were encountered: