-
Notifications
You must be signed in to change notification settings - Fork 46
Open
Description
Hi,
I'm using the latest Version of Kagent and Kmcp. I've scaffolded a Golang demo project and deployed it into my cluster.
The Agent interacts well with the toolserver but after deploying a new mcp server image (I have to apply via argocd not the kmcp binary)
everything is broken. I think the generated mcp server returns 404 because there is no session after a restart. How can I disable this behavior?
My toolserver is completely stateless.
The Error Message in the Container is
2025-12-09 13:10:10,360 - httpx - INFO - HTTP Request: POST http://metadata-mcp-server.monitoring:6969/mcp "HTTP/1.1 404 Not Found"
2025-12-09 13:10:10,363 - kagent_adk.kagent.adk._agent_executor - ERROR - Error handling A2A request: Session terminated
Traceback (most recent call last):
File "/.kagent/packages/kagent-adk/src/kagent/adk/_agent_executor.py", line 145, in execute
await self._handle_request(context, event_queue, runner, run_args)
File "/.kagent/packages/kagent-adk/src/kagent/adk/_agent_executor.py", line 240, in _handle_request
async for adk_event in agen:
...<4 lines>...
await event_queue.enqueue_event(a2a_event)
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/runners.py", line 428, in run_async
async for event in agen:
yield event
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/runners.py", line 412, in _run_with_trace
async for event in agen:
yield event
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/runners.py", line 498, in _exec_with_plugin
async for event in agen:
...<9 lines>...
yield (modified_event if modified_event else event)
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/runners.py", line 401, in execute
async for event in agen:
yield event
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/agents/base_agent.py", line 307, in run_async
async for event in agen:
yield event
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/agents/base_agent.py", line 297, in _run_with_trace
async for event in agen:
yield event
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/agents/llm_agent.py", line 395, in _run_async_impl
async for event in agen:
...<3 lines>...
return
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/flows/llm_flows/base_llm_flow.py", line 356, in run_async
async for event in agen:
last_event = event
yield event
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/flows/llm_flows/base_llm_flow.py", line 375, in _run_one_step_async
async for event in agen:
yield event
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/flows/llm_flows/base_llm_flow.py", line 463, in _preprocess_async
tools = await _convert_tool_union_to_tools(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<4 lines>...
)
^
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/agents/llm_agent.py", line 157, in _convert_tool_union_to_tools
return await tool_union.get_tools_with_prefix(ctx)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/tools/base_toolset.py", line 114, in get_tools_with_prefix
tools = await self.get_tools(readonly_context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/tools/mcp_tool/mcp_session_manager.py", line 128, in wrapper
return await func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.kagent/.venv/lib/python3.13/site-packages/google/adk/tools/mcp_tool/mcp_toolset.py", line 162, in get_tools
tools_response: ListToolsResult = await session.list_tools()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.kagent/.venv/lib/python3.13/site-packages/mcp/client/session.py", line 386, in list_tools
result = await self.send_request(
^^^^^^^^^^^^^^^^^^^^^^^^
...<7 lines>...
)
^
File "/.kagent/.venv/lib/python3.13/site-packages/mcp/shared/session.py", line 286, in send_request
raise McpError(response_or_error.error)
mcp.shared.exceptions.McpError: Session terminated
Created an Agent resource:
apiVersion: kagent.dev/v1alpha2
kind: Agent
metadata:
name: redacted
namespace: redacted
spec:
declarative:
a2aConfig:
skills:
- description: >
redacted
examples:
- "redacted"
id: metadata
name: Metadata Agent
tags:
- metadata
- owners
- teams
deployment:
replicas: 1
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
modelConfig: redacted
systemMessage: |-
redacted
tools:
- mcpServer:
apiGroup: kagent.dev
kind: MCPServer
name: metadata-mcp-server
toolNames:
- team_info_get_members
- team_info_get_repos
- team_info_get_services
- team_info_team_for_user
type: McpServer
description: redacted
type: Declarative
MCP Server Definition
apiVersion: kagent.dev/v1alpha1
kind: MCPServer
metadata:
annotations:
kmcp.dev/description: MCP server that provides owner, services and repository related tools
kmcp.dev/project-name: metadata-mcp-server
labels:
app.kubernetes.io/component: mcp-server
app.kubernetes.io/instance: metadata-mcp-server
app.kubernetes.io/managed-by: kmcp
app.kubernetes.io/name: metadata-mcp-server
app.kubernetes.io/part-of: kmcp
kmcp.dev/framework: mcp-go
kmcp.dev/version: 20251209-113747-develop
name: metadata-mcp-server
namespace: <redacted>
resourceVersion: <redacted>
uid: <redacted>
spec:
deployment:
args:
- mcp
- '--http=0.0.0.0:6969'
cmd: /main
env:
FASTMCP_LOG_LEVEL: DEBUG
image: >-
<redacted>
port: 6969
httpTransport:
path: /mcp
targetPort: 6969
transportType: http
status:
conditions:
- lastTransitionTime: '2025-12-05T09:43:34Z'
message: MCPServer configuration is valid
observedGeneration: 19
reason: Accepted
status: 'True'
type: Accepted
- lastTransitionTime: '2025-12-05T09:43:34Z'
message: All references resolved successfully
observedGeneration: 19
reason: ResolvedRefs
status: 'True'
type: ResolvedRefs
- lastTransitionTime: '2025-12-05T09:43:34Z'
message: All resources created successfully
observedGeneration: 19
reason: Programmed
status: 'True'
type: Programmed
- lastTransitionTime: '2025-12-05T10:11:52Z'
message: Deployment is ready and all pods are running
observedGeneration: 19
reason: Available
status: 'True'
type: Ready
observedGeneration: 19
Metadata
Metadata
Assignees
Labels
No labels