Files
Pietro Zullo be9942a4d4 feat/python/server (#559)
* feat: server first implementation

* docs: docs for server and images

* chore: locked langchain dependencies in pyproject.toml (#321)

* python/release/1.3.13

* catch uvicorn logs && log session id

* fix debug logic

* docs: logging update

* fix: icon of elicitation

* fix installation paths for local clones

* docs: minor restructuring

* docs: reorganization, killed non existing pages

* docs: beta tag on server

* chore: example servers

* feat: inspector autopopulated and client only

* feat: enhance MCP logging system with customizable formats and improved middleware

* feat: implement weather alert and forecast tools in FastMCP example server

* mcp path configurable

* fix inspector

* export as FastMCP too

* chore: update fastmcp migration example

* lock inspector version

* type runner

* unhide docs and remove dangers

* migration diff

* docs and context example

* export context

* logging improvement

* pretty JSON RPC

* autoConnect url param in inspecotr

* move logging

* type check

* Server Router

* show response logs

* fallback tool name to function name in router registration

* compatibility export

* Introduced ty and prek as type checker and precommit engine respectively - moved ruff config in pyproject toml

* add ty check

* ty runs only on staged files

* ty configuration fix

* move startup info in logging

* remove bug from action

* update claude rules

* fix resource serialization

* comments on inspector errors

* abstracted runner transports

* remove redunant call for network

* fix ip getter

* add inspector mcp path

* response limit logging

* disable ty check in action

* moved transport type to types

* support sse

* show transport type in logs

* change default transport

* refactored tests to use mcp server

* removed fastmcp

* file restructuring

* test table

* sampling, elicitation, tool disabling enabling

* deprecte sse server side

* simplified report

* fix action

* remove sse deprecated test

* move tests files to allow for server integration tests

* docs

* reorg integration test files

* api-reference-doxs

* fix broken links

* telemetry

* remove feature useage from scarf
2025-12-01 14:12:16 +01:00

71 lines
3.0 KiB
Python

# import asyncio
# import pytest
# from mcp_use.client import MCPClient
# @pytest.mark.asyncio
# async def test_tool_list_update(primitive_server):
# """Tests that the tool list is automatically updated after a change notification."""
# config = {"mcpServers": {"PrimitiveServer": {"url": f"{primitive_server}/mcp"}}}
# client = MCPClient(config)
# try:
# await client.create_all_sessions()
# session = client.get_session("PrimitiveServer")
# # Initial state: Check that all tools are present
# tools = await session.list_tools()
# assert "tool_to_disable" in [tool.name for tool in tools]
# # Trigger the change (this will disable the tool and send a notification)
# await session.call_tool(name="change_tools", arguments={})
# # The tool list should be refreshed automatically on next call
# tools = await session.list_tools()
# assert "tool_to_disable" not in [tool.name for tool in tools]
# finally:
# await client.close_all_sessions()
# @pytest.mark.asyncio
# async def test_resource_list_update(primitive_server):
# """Tests that the resource list is automatically updated after a change notification."""
# config = {"mcpServers": {"PrimitiveServer": {"url": f"{primitive_server}/mcp"}}}
# client = MCPClient(config)
# try:
# await client.create_all_sessions()
# session = client.get_session("PrimitiveServer")
# # Initial state: Check that we have at least one resource
# resources = await session.list_resources()
# assert "resource_to_disable" in [resource.name for resource in resources]
# # Trigger the change (this will disable a resource and send a notification)
# await session.call_tool(name="change_resources", arguments={})
# # The resource list should be refreshed automatically on next call
# resources = await session.list_resources()
# assert "resource_to_disable" not in [resource.name for resource in resources]
# finally:
# await client.close_all_sessions()
# @pytest.mark.asyncio
# async def test_prompt_list_update(primitive_server):
# """Tests that the prompt list is automatically updated after a change notification."""
# config = {"mcpServers": {"PrimitiveServer": {"url": f"{primitive_server}/mcp"}}}
# client = MCPClient(config)
# try:
# await client.create_all_sessions()
# session = client.get_session("PrimitiveServer")
# # Initial state: Check that all prompts are present
# prompts = await session.list_prompts()
# assert "prompt_to_disable" in [prompt.name for prompt in prompts]
# # Trigger the change (this will disable the prompt and send a notification)
# await session.call_tool(name="change_prompts", arguments={})
# # The prompt list should be refreshed automatically on next call
# prompts = await session.list_prompts()
# assert "prompt_to_disable" not in [prompt.name for prompt in prompts]
# finally:
# await client.close_all_sessions()