Skip to content

Commit 8de63b4

Browse files
committed
Upgrade mcp-agent to mcp v1.8.0, plus a few fixes
1 parent a6fd74f commit 8de63b4

File tree

8 files changed

+25
-275
lines changed

8 files changed

+25
-275
lines changed

examples/mcp/mcp_sse/main.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from dotenv import load_dotenv
44
from rich import print
5-
5+
from mcp.types import CallToolResult
66
from mcp_agent.agents.agent import Agent
77
from mcp_agent.app import MCPApp
88

@@ -22,10 +22,12 @@ async def test_sse():
2222

2323
async with agent:
2424
print(await agent.list_tools())
25-
# call_tool_result: CallToolResult = await agent.call_tool('mcp_test_server_sse-get-magic-number')
26-
#
27-
# assert call_tool_result.text == "42"
28-
# print("SSE test passed!")
25+
call_tool_result: CallToolResult = await agent.call_tool(
26+
"mcp_test_server_sse_get-magic-number"
27+
)
28+
29+
assert call_tool_result.content[0].text == "42"
30+
print("SSE test passed!")
2931

3032

3133
if __name__ == "__main__":

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "mcp-agent"
3-
version = "0.0.20"
3+
version = "0.0.21"
44
description = "Build effective agents with Model Context Protocol (MCP) using simple, composable patterns."
55
readme = "README.md"
66
license = { file = "LICENSE" }
@@ -16,7 +16,7 @@ requires-python = ">=3.10"
1616
dependencies = [
1717
"fastapi>=0.115.6",
1818
"instructor>=1.7.9",
19-
"mcp>=1.7.1",
19+
"mcp>=1.8.0",
2020
"opentelemetry-distro>=0.50b0",
2121
"opentelemetry-exporter-otlp-proto-http>=1.29.0",
2222
"pydantic-settings>=2.7.0",

src/mcp_agent/config.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from typing import Dict, List, Literal, Optional
88

99
from httpx import Client
10-
from pydantic import BaseModel, ConfigDict, field_validator
10+
from pydantic import BaseModel, ConfigDict, Field, field_validator
1111
from pydantic_settings import BaseSettings, SettingsConfigDict
1212

1313

@@ -61,7 +61,7 @@ class MCPServerSettings(BaseModel):
6161
command: str | None = None
6262
"""The command to execute the server (e.g. npx)."""
6363

64-
args: List[str] | None = None
64+
args: List[str] = Field(default_factory=list)
6565
"""The arguments for the server command."""
6666

6767
read_timeout_seconds: int | None = None
@@ -76,7 +76,7 @@ class MCPServerSettings(BaseModel):
7676
headers: Dict[str, str] | None = None
7777
"""HTTP headers for sse or websocket requests."""
7878

79-
roots: Optional[List[MCPRootSettings]] = None
79+
roots: List[MCPRootSettings] | None = None
8080
"""Root directories this server has access to."""
8181

8282
env: Dict[str, str] | None = None
@@ -86,7 +86,7 @@ class MCPServerSettings(BaseModel):
8686
class MCPSettings(BaseModel):
8787
"""Configuration for all MCP servers."""
8888

89-
servers: Dict[str, MCPServerSettings] = {}
89+
servers: Dict[str, MCPServerSettings] = Field(default_factory=dict)
9090
model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True)
9191

9292

src/mcp_agent/mcp/mcp_connection_manager.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323
)
2424
from mcp.client.sse import sse_client
2525
from mcp.client.stdio import stdio_client
26+
from mcp.client.websocket import websocket_client
2627
from mcp.types import JSONRPCMessage, ServerCapabilities
2728

2829
from mcp_agent.config import MCPServerSettings
2930
from mcp_agent.core.exceptions import ServerInitializationError
3031
from mcp_agent.event_progress import ProgressAction
3132
from mcp_agent.logging.logger import get_logger
3233
from mcp_agent.mcp.mcp_agent_client_session import MCPAgentClientSession
33-
from mcp_agent.mcp.websocket import websocket_client
3434
from mcp_agent.context_dependent import ContextDependent
3535

3636
if TYPE_CHECKING:
@@ -272,15 +272,15 @@ def transport_context_factory():
272272
if config.transport == "stdio":
273273
server_params = StdioServerParameters(
274274
command=config.command,
275-
args=config.args,
275+
args=config.args or [],
276276
env={**get_default_environment(), **(config.env or {})},
277277
)
278278
# Create stdio client config with redirected stderr
279279
return stdio_client(server_params)
280280
elif config.transport == "sse":
281281
return sse_client(config.url, config.headers)
282282
elif config.transport == "websocket":
283-
return websocket_client(config.url, config.headers)
283+
return websocket_client(config.url)
284284
else:
285285
raise ValueError(f"Unsupported transport: {config.transport}")
286286

src/mcp_agent/mcp/websocket.py

Lines changed: 0 additions & 122 deletions
This file was deleted.

src/mcp_agent/mcp_server_registry.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
get_default_environment,
2020
)
2121
from mcp.client.sse import sse_client
22+
from mcp.client.websocket import websocket_client
2223

2324
from mcp_agent.config import (
2425
get_settings,
@@ -29,7 +30,6 @@
2930

3031
from mcp_agent.logging.logger import get_logger
3132
from mcp_agent.mcp.mcp_connection_manager import MCPConnectionManager
32-
from mcp_agent.mcp.websocket import websocket_client
3333

3434
logger = get_logger(__name__)
3535

@@ -125,14 +125,14 @@ async def start_server(
125125
)
126126

127127
if config.transport == "stdio":
128-
if not config.command or not config.args:
128+
if not config.command and not config.args:
129129
raise ValueError(
130130
f"Command and args are required for stdio transport: {server_name}"
131131
)
132132

133133
server_params = StdioServerParameters(
134134
command=config.command,
135-
args=config.args,
135+
args=config.args or [],
136136
env={**get_default_environment(), **(config.env or {})},
137137
)
138138

@@ -180,7 +180,7 @@ async def start_server(
180180
f"URL is required for websocket transport: {server_name}"
181181
)
182182

183-
async with websocket_client(url=config.url, headers=config.headers) as (
183+
async with websocket_client(url=config.url) as ( # pylint: disable=W0135
184184
read_stream,
185185
write_stream,
186186
):

0 commit comments

Comments
 (0)