Commit Graph

20 Commits

Author SHA1 Message Date
Arya Soni 3c564e285c Bug: Deprecation Version Mismatch (#613) 2025-12-03 14:56:13 +01:00
Pietro Zullo 18f51eddb8 Feat: python/restructure (#318)
* move: session

* move: client

* move:config

* move: exceptions

* move: connectors -> client.connectors

* move: task_managers -> client.task_managers

* move: observability -> agents.observability

* move: middleware -> client.middleware

* move: managers -> agents.managers

* move: auth -> client.auth

* move: adapters -> agents.adapters

* test: bc test

* test: bc test

* chore: remove relative imports

* fix tests

* chore: update docs

* chore: deprecation warnings

* chore: fix dangerous non absolute import

* fix: remove legacy imports

* telemetry
2025-10-17 20:09:19 +02:00
Vincenzo Reina 822b0b72fc feat: Middleware (#269)
* Middlware first commit
* Add context to middleware
- Add context to middleware with mcp types
- Update logging middleware with new implementation
- Add hooks for every type of action
* Update example and metrics
* Adapt tests to middleware
* Fix metrics and example
* Update docs and new add_middleware function
* Fix metrics property
* Fix on add_middleware function
* Fix formatting
* chore: nicer example
* chore: remove global exports for middleware
* chore: middleware blog

---------

Signed-off-by: Vincenzo Reina <vincenzoreinaa05@gmail.com>
Co-authored-by: pietrozullo <pietro.zullo@gmail.com>
2025-10-07 11:37:08 +02:00
Vincenzo Reina ea5a12f35a Fix http connector error handling (#279) 2025-09-27 12:22:20 +02:00
Pietro Zullo 86be45c2dd feat/authorization (#149)
* Auth 1.0

* Defualt to DCR

* Fix client list server names

* Fix oauth problems with no oauth servers, enhance documentation and comments

* Add OAuth metadata provider and specific fixes

- Remove auth field to reduce API verbosity
- Add "auth" support for MCPClient's config
- Add "oauth_provider" key to MCPClient's config to provide metadata
- Fix no OAuth servers' errors

* Relocate authentication doc

* Fix ruff formatting as usual

* Fix http connectors tests with oauth support

* Fix test_config unit tests

* Final fix for tests

* Add integration for auth

- Add auth server for testing
- Add test for complete auth flow with mock on OAuth callback
- Add test for custom client auth
- Add test for bearer auth token

* Add further test and update README

- Add OAuth metadata provider (no discovery)
- Update README with new auth badge

* Format fixes

* Remove redefined exception

* Add auth test on GH action

* Update docs with correct example

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Pietro Zullo <62951181+pietrozullo@users.noreply.github.com>

* Update mcp_use/auth/oauth.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Pietro Zullo <62951181+pietrozullo@users.noreply.github.com>

* Add custom callback port feature

- Add customizable port for callback
- Remove dynamic port
- Fix bug of registration before checking port

* Add GitHub MCP support

* Update docs

* chore: highlight hack

* chore: change wording in docs

* Add authlib on project dependencies

* Remove useless example

* Fix formatting as usual

---------

Signed-off-by: Vincenzo Reina <vincenzoreinaa05@gmail.com>
Signed-off-by: Pietro Zullo <62951181+pietrozullo@users.noreply.github.com>
Co-authored-by: renvins <vincenzoreinaa05@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-11 16:01:14 -07:00
lorenss 3179aa6c86 Fix subprocess cleanup for multiple MCP clients (#231)
* init

* add logging callback

* cleaner shutdown of multiple clients

* linting

* do not clear manager and fix stop for http error

* http fallback change

* Update mcp_use/connectors/http.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: lorenss <31991968+lorenss-m@users.noreply.github.com>

---------

Signed-off-by: lorenss <31991968+lorenss-m@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-26 22:26:36 -07:00
Pietro Zullo 2a165e7379 feat: notification & logging (#223)
* Add message handler function

* Notification test

* feat: logging callback

* Separate logging tests

* Documentation

* Remove duplicate

* rename notidfication test

* Discovery - client reacts to tools,resources,prompts update notifications

* integration test

* unit tests

* Fix, remove asyncio task creation, if we do not cache the tools it is not necessary to refresh. I wonder if it caching them tools (etc) is any important for somebody

* Fix type names in the docs
2025-08-10 10:27:20 -07:00
Pietro Zullo 1736e31388 Feat: elicitation (#175)
* Elicitation Client Implementation

* Elicitation test

* Elicitation Documentation

* Docs elictiation fn params

* Bump fastmcp

* Add elicitation to constructors of client

* fix tests
2025-07-17 23:59:38 -07:00
Pietro Zullo 7250b77c5b feat: Sampling (#170)
* Removed unused _setup_client

* Implement sampling in client and connectors

* Tests

* Nicer names in action

* Update previous tests

* Docstrings

* Fixed naming and created other primitives tests

* Supported features table

* docs
2025-07-12 15:00:34 -07:00
Pietro Zullo 44127f8101 remove double init in http connections (#161) 2025-07-06 20:56:11 -07:00
Luigi Pederzani 5e7ab23b89 Fix: search tools tuple unpacking error (#138) (#142)
* fix: resolve tuple unpacking error in search_tools when using server manager

Fixes #138 - ValueError: not enough values to unpack (expected 3, got 1)

**Problem:**
When using MCPAgent with use_server_manager=True, users encountered a tuple
unpacking error in search_tools.py. The issue occurred because:
1. ToolSearchEngine.search_tools() sometimes returned a string (when no results)
   and sometimes returned a list of tuples (when results found)
2. SearchToolsTool._arun() expected search_tools() to return a list of tuples
   to pass to format_search_results()
3. When search_tools() returned a string, format_search_results() tried to
   iterate over the string characters, causing the unpacking error

**Solution:**
- Modified ToolSearchEngine.search_tools() to consistently return formatted
  strings by calling a new _format_search_results() method
- Added _format_search_results() method to ToolSearchEngine class
- Updated SearchToolsTool._arun() to return the already-formatted results
  directly instead of calling format_search_results() again
- Updated CLAUDE.md to include virtual environment activation instructions

**Testing:**
- Successfully reproduced the original error
- Verified the fix resolves the issue
- All unit tests pass (113/113)
- Applied code formatting and linting

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* test: add comprehensive test suite for issue #138 tuple unpacking bug

- test_tool_search_engine_consistent_return_type_with_results: ensures search_tools
  returns string when results are found (not list of tuples as in the bug)
- test_tool_search_engine_consistent_return_type_no_results: ensures search_tools
  returns string when no results found
- test_tool_search_engine_not_indexed_scenario: tests the 'still preparing' scenario
- test_search_tools_tool_arun_with_string_result: tests SearchToolsTool._arun()
  correctly handles string results from search_tools
- test_search_tools_tool_integration_scenario: integration test simulating the
  exact scenario from issue #138 that was causing the tuple unpacking error
- test_format_search_results_method_exists: validates the new _format_search_results method
- test_server_manager_active_server_marking: tests active server marking functionality
- test_search_tools_input_validation: validates ToolSearchInput model

These tests ensure the tuple unpacking bug (ValueError: not enough values to unpack
expected 3, got 1) will not regress in the future and verify the fix works correctly.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve logger mock issues in search_tools tests

Added @patch decorators to mock the logger in tests that call _format_search_results
to avoid TypeError with logging level comparisons during testing.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Update documentation to use session-based API instead of deprecated client methods

- Replace all references to non-existent client.connect_all() with client.create_all_sessions()
- Replace all references to non-existent client.disconnect_all() with client.close_all_sessions()
- Replace all references to client.list_tools() with session.list_tools()
- Replace all references to client.call_tool() with session.call_tool()
- Update API documentation to reflect actual MCPClient implementation
- Fix code examples to use proper session-based architecture
- Ensure all documentation matches the real codebase API

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Improve docs

* remove unused

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-21 23:03:04 -07:00
Pietro Zullo 8a32d3c23c fix: pre commit run all files (#135)
* Set line lenght to 120

* Run pre commit all files
2025-06-18 10:12:58 +02:00
Pietro Zullo cb7c2bcbd6 Feat/telemetry (#124)
* Telemetry base

* Fix debug level

* Singleton pattern in utils for metric server

* Added public identifier to transports

* Update telemetry

* Add telemetry to mcpagent

* telemetry docs
2025-06-13 21:12:34 +02:00
pietrozullo 2d766c326d Rename client to client session 2025-06-09 19:04:24 +02:00
leonpham-mbh 59b640ff37 feat: streamable http support (#106)
* Extend HTTP connector to support newer streamable http transport

* Fix timeout since they should be timedelta objects

* Refactor http connector to use streamable http by default

This will fallback to SSE if there are any issues with the test
ping send.

* Added transport integration tests

* Fail fast removed

* add fastmcp deps

* system install

* Fixed tests

* Remove python 3.12 from tests

---------

Co-authored-by: pietrozullo <pietro.zullo@gmail.com>
2025-06-04 22:13:03 +02:00
pietrozullo b79dc986a4 Most logs moved to DEBUG 2025-04-11 18:34:53 +02:00
pietrozullo 6979ff353e Remove appended sse to base_url 2025-04-07 16:03:33 +02:00
pietrozullo 6fcd6237af Refactor connectors 2025-04-04 16:46:10 +02:00
pietrozullo 2164063ad5 Bugfix - Session closing error (#1)
* Fixed ruff config

* Enhanced connection strategy with task managers to avoid ugly cancelerror from mcp stdio_client

* Updated client with new session strategy

* History agent and chat example system prompt
2025-03-31 23:02:32 +02:00
pietrozullo 94ede6f123 Rename 2025-03-29 17:21:52 +01:00