Files
Pietro Zullo 8d4cb4719b Feature/mcp 799 python client integration of code mode (#498)
* initial commit

* update to code mode

* Squash all commits: Add CLI deploy functionality, server tool inspector, and various improvements (#467)

* chore(release): exit prerelease mode and version packages (#473)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Docs/tunnel docs (#474)

* chore: add tunnelling docs

* chore: add tunnelling docs

* docs: enhance tunneling documentation with link to @mcp-use/tunnel package

* docs: update tunneling documentation with improved code examples and formatting

* feat: Add verify parameter to MCPClient and connectors (#478)

* feat: add verify parameter to MCPClient and connectors

- Introduced a new optional `verify` parameter in `MCPClient`, `HttpConnector`, and configuration functions to control SSL certificate verification.
- Updated relevant methods to utilize the `verify` parameter, ensuring consistent handling of SSL verification across the client and connectors.
- Enhanced the SSE and Streamable HTTP connection managers to accept a custom HTTPX client factory for improved flexibility in connection handling.

* fix: linting and docs

* fix: http connector test

* Update docs/python/api-reference/mcp_use_client_config.mdx

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

* fix: docs

---------

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

* Canary release (#476)

* Implement iframe log console for inspector (#475)

* Docs/tunnel docs (#474)

* chore: add tunnelling docs

* chore: add tunnelling docs

* docs: enhance tunneling documentation with link to @mcp-use/tunnel package

* docs: update tunneling documentation with improved code examples and formatting

* feat: Add iframe console logging and UI

Implement a system to capture and display console logs from iframes. This includes injecting a script into iframes to intercept console messages and a UI component to display them in the parent window.

Co-authored-by: tonxipad <tonxipad@gmail.com>

* feat: Conditionally inject console interceptor for same-origin iframes

Co-authored-by: tonxipad <tonxipad@gmail.com>

* refactor: update IframeConsole component for improved UI and styling

- Removed unused XIcon import.
- Adjusted LogLevelBadge styling for better visual consistency.
- Renamed "Iframe Console" to "Widget Console Logs" for clarity.
- Modified button styling for better alignment and spacing.

* feat: add HTMLIFrameElement and MessageEvent to ESLint config

- Updated ESLint configuration to include HTMLIFrameElement and MessageEvent as readonly types, enhancing type safety for iframe-related code.

* feat: implement auto-scroll functionality in IframeConsole component

- Added useRef and useEffect hooks to enable auto-scrolling to the bottom of the console when logs change or the console opens.
- Updated the console's container div to use the scrollContainerRef for managing scroll position.

* chore: lint & format

* chore: changeset

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: tonxipad <tonxipad@gmail.com>

* chore: enter canary prerelease mode

* chore(typescript): version packages (canary)

* Feat/consistent sub for tunnel (#480)

* Docs/tunnel docs (#474)

* chore: add tunnelling docs

* chore: add tunnelling docs

* docs: enhance tunneling documentation with link to @mcp-use/tunnel package

* docs: update tunneling documentation with improved code examples and formatting

* Refactor CLI tunnel functionality to support optional subdomain and save to manifest

- Updated `startTunnel` function to accept an optional subdomain parameter.
- Enhanced subdomain extraction from the tunnel URL and updated the manifest file with the subdomain.
- Cleaned up commented-out code related to tunnel handling in the CLI.
- Improved logging for tunnel establishment and subdomain saving.

* chore: changeset

* format

* chore(typescript): version packages (canary)

* Refactor tunnel argument handling in CLI to streamline subdomain flag usage and improve logging

* remove console log

* [typescript][server] Fix tools with async calls (#481)

* fix tools with async calls

* FORMAT

* chore(typescript): version packages (canary)

* fix/minor fix post canary (#482)

* fix server async call

* wrap all handle request calls in wait function

* changeset

* chore(typescript): version packages (canary)

* window.openai emulation and ChatGPT Integration debugging (#469)

* feat: Add WidgetFullscreenWrapper component

Co-authored-by: tonxipad <tonxipad@gmail.com>

* Docs/tunnel docs (#474)

* chore: add tunnelling docs

* chore: add tunnelling docs

* docs: enhance tunneling documentation with link to @mcp-use/tunnel package

* docs: update tunneling documentation with improved code examples and formatting

* feat: Enhance OpenAIComponentRenderer with tool call handling and display mode management

- Implemented tool call handling with error management and response formatting for OpenAI API compatibility.
- Added support for follow-up messages and localStorage fallback for pending follow-ups.
- Introduced display mode management (inline, pip, fullscreen) with dynamic iframe resizing and a close button for fullscreen mode.
- Updated TypeScript configuration to include .tsx files for better component support.

* fix: maintain subdomain across builds

* remove console

* refactor: replace direct serverBaseUrl usage with getServerBaseUrl method for improved consistency

* refactor: enhance WidgetFullscreenWrapper with hoverable icon buttons for fullscreen and pip modes

* feat: implement dev widget proxy and asset handling for improved development experience

* refactor: update OpenAIComponentRenderer to handle global updates for display mode and theme, enhancing iframe communication

* feat: add WidgetDebugger export to enhance debugging capabilities in the React package

* chore: fix type

* format

* chore: changeset

* remove irrelevant content

* chore: add changeset for MCP-747-fix-apps-sdk-fullscreen-close-button-9e35

* refactor: improve tunnel shutdown handling and output suppression for better user experience

* format

* remove console log

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: tonxipad <tonxipad@gmail.com>

* chore(typescript): version packages (canary)

* Fix/settings button servers dropdown (#485)

* feat: Add server connection management in Layout and ServerDropdown components

- Introduced ServerConnectionModal for editing connection settings in the Layout component.
- Updated ServerDropdown to handle connection options and display selected server status.
- Enhanced MCPConnection interface to include transportType and proxyConfig for better connection management.
- Implemented connection update logic with success notifications.

* add gear also to home

* chore: changeset and format

* chore(typescript): version packages (canary)

* feat: Enhance ConnectionSettingsForm layout and add utility styles (#486)

- Updated ConnectionSettingsForm component to improve layout responsiveness with new utility classes.
- Added a new CSS utility for flex column and row layout.
- Cleaned up imports for better organization.

* chore(typescript): version packages (canary)

* Update libraries/typescript/packages/cli/CHANGELOG.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* Update libraries/typescript/packages/cli/src/index.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* Update libraries/typescript/packages/cli/src/index.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* Update libraries/typescript/.changeset/clear-wombats-juggle.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* Feature/mcp 743 tool argument autoformats and moves the cursor (#487)

* refactor(ToolsTab, ToolInputForm): enhance JSON handling for object/array types

- Updated ToolsTab to initialize object and array types as empty JSON strings to preserve formatting.
- Improved argument parsing in ToolsTab to handle JSON strings for object/array types before tool execution.
- Modified ToolInputForm to display objects/arrays as formatted JSON strings, ensuring user input is preserved.

* chore: changeset

* chore(typescript): version packages (canary)

* Fix/remove console button from chat (#488)

* remove mcp url console log

* feat(OpenAIComponentRenderer): add showConsole prop to control console visibility

* Feature/mcp 837 load list of models for providers (#489)

* remove mcp url console log

* Enhance ConfigurationDialog with model fetching and caching

- Added functionality to fetch models from OpenAI, Anthropic, and Google APIs based on the selected provider.
- Implemented caching for fetched models using localStorage to improve performance and reduce API calls.
- Updated the UI to display loading states and errors when fetching models.
- Refactored API key handling to support provider-specific storage in localStorage.
- Improved user experience by debouncing API calls and dynamically updating the model selection based on the provider.

* fix: reorder imports in useConfig.ts for better clarity

* chore(typescript): version packages (canary)

---------

Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: tonxipad <tonxipad@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Pietro Zullo <62951181+pietrozullo@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore(release): exit prerelease mode and version packages (#490)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update Dockerfile

Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* fix: x icon light mode

* docs: Improve typescript server docs (#491)

* fix: update installation commands and enhance quickstart documentation

- Changed `pnpm run dev` to `pnpm dev` in installation instructions across multiple files for consistency.
- Improved the quickstart guide by clarifying the MCP server framework's capabilities and updating the project structure details.
- Added a base URL configuration for the MCP server in the configuration documentation to ensure proper functionality of UI widgets.

* minor

* add fallback

---------

Signed-off-by: Luigi Pederzani <luigipederzani@gmail.com>

* Docs/inspector (#492)

* refactor: reorganize documentation structure for Inspector and Dev Tools

- Updated the docs.json file to consolidate Inspector and Tunneling pages under a new "Dev Tools" group.
- Removed redundant entries for Inspector and Tunneling from the documentation structure.
- Added a sidebar title for the Inspector page to enhance navigation.

* docs: enhance Inspector documentation and add new CLI usage guides

- Updated `docs.json` to include new pages for CLI usage, connection settings, keyboard shortcuts, command palette, integration, debugging ChatGPT apps, and development under the Inspector section.
- Expanded the Inspector documentation to cover new features, including CLI usage and detailed guides for keyboard shortcuts and integration.
- Improved the `self-hosting` documentation to reference the new CLI usage guide.
- Enhanced the `apps-sdk-resources` documentation with additional details on widget state and testing procedures using the Inspector.

* fix broken links

* chore: remove unuseful docs

* Feat/python/pretty display (#497)

* pretty display implementation

* docs update

* initial commit

* docs

* fix tests

* example streams and uses anthropic

* docs

* docs image

* fix type checking mock

* add rich to requirements

* enable pretty pritns in all examples

---------

Signed-off-by: Pietro Zullo <62951181+pietrozullo@users.noreply.github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Signed-off-by: Luigi Pederzani <luigipederzani@gmail.com>
Co-authored-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Vincenzo Reina <vincenzoreinaa05@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: tonxipad <tonxipad@gmail.com>
Co-authored-by: Luigi Pederzani <luigipederzani@gmail.com>
2025-11-20 16:26:23 +01:00

131 lines
3.7 KiB
Python

"""
Prompt templates for MCP code execution mode.
This module provides prompt templates to guide agents on how to use
MCP tools via code execution.
"""
CODE_MODE_AGENT_PROMPT = """
You have access to MCP (Model Context Protocol) tools via code execution mode.
Instead of calling tools directly, you can write Python code that calls tools
as functions, enabling more efficient workflows.
## Tool Discovery
Use the `search_tools(query, detail_level)` function to find available tools:
```python
# Find all GitHub-related tools
tools = await search_tools("github")
for tool in tools:
print(f"{tool['server']}.{tool['name']}: {tool['description']}")
# Get only tool names for quick overview
tools = await search_tools("", detail_level="names")
```
You can also access `__tool_namespaces` to see all available server namespaces:
```python
print(__tool_namespaces) # e.g., ['github', 'slack', 'filesystem']
```
## Calling Tools
Tools are organized by server namespace. Call them as async functions:
```python
# Call a tool from the 'github' server
pr = await github.get_pull_request(
owner="facebook",
repo="react",
number=12345
)
print(f"PR Title: {pr['title']}")
# Chain multiple tool calls
issues = await github.list_issues(owner="facebook", repo="react")
critical = [i for i in issues if 'critical' in str(i.get('labels', []))]
if critical:
await slack.post_message(
channel="#dev",
text=f"Found {len(critical)} critical issues in React repo"
)
```
## Data Processing
Process data efficiently in the execution environment before returning results:
```python
# Fetch large dataset
all_issues = await github.list_issues(owner="microsoft", repo="vscode")
print(f"Fetched {len(all_issues)} issues")
# Process locally without consuming context
bugs = [i for i in all_issues if any(l.get('name') == 'bug' for l in i.get('labels', []))]
open_bugs = [b for b in bugs if b['state'] == 'open']
# Return only the summary
return {
"total_issues": len(all_issues),
"total_bugs": len(bugs),
"open_bugs": len(open_bugs),
"critical_bugs": [b for b in open_bugs if 'critical' in str(b.get('labels'))][:5]
}
```
## Best Practices
1. **Progressive Discovery**: Use `search_tools()` to find relevant tools before using them
2. **Minimize Context**: Process large data in code, return only essential results
3. **Error Handling**: Use try/except to handle tool failures gracefully
4. **Logging**: Use `print()` statements to track progress (captured in logs)
5. **Async/Await**: All tool calls are async, remember to use `await`
## Example Workflow
```python
# 1. Discover available tools
github_tools = await search_tools("github pull request")
print(f"Available GitHub PR tools: {[t['name'] for t in github_tools]}")
# 2. Call tools with proper parameters
pr = await github.get_pull_request(
owner="facebook",
repo="react",
number=12345
)
# 3. Process results
if pr['state'] == 'open' and 'bug' in str(pr.get('labels', [])):
# 4. Chain with other tools
await slack.post_message(
channel="#bugs",
text=f"🐛 Bug PR needs review: {pr['title']}"
)
result = "Notification sent"
else:
result = "No action needed"
# 5. Return structured results
return {
"pr_number": pr['number'],
"pr_title": pr['title'],
"action_taken": result
}
```
## Available Builtins
Safe Python builtins available in code execution:
- Data structures: `list`, `dict`, `set`, `tuple`
- Type conversions: `str`, `int`, `float`, `bool`
- Iterations: `range`, `enumerate`, `zip`, `map`, `filter`
- Aggregations: `len`, `min`, `max`, `sum`, `sorted`, `any`, `all`
- Utilities: `print`, `isinstance`, `hasattr`, `getattr`
- Async: `asyncio` module for async operations
Note: File I/O, imports, and eval are restricted for security.
"""