Files
mcp-use__mcp-use/docs/images/widget.mp4
Enrico Toniato 6ec11cdae2 Canary (#617)
* Fix/server/reafctor complete (#616)

* feat: add MCP Conformance Test Servers for Python and TypeScript (#605)

* chore(deps): bump express from 5.1.0 to 5.2.0 in /libraries/typescript (#602)

* chore(deps): bump express from 5.1.0 to 5.2.0 in /libraries/typescript

Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: add changeset for dependabot updates

* Delete libraries/typescript/.changeset/dependabot-e19bd45.md

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

* chore: add changeset for dependabot updates

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* feat: add MCP Conformance Test Servers for Python and TypeScript

- Introduced a new GitHub Actions workflow for running conformance tests on both Python and TypeScript servers.
- Implemented a Python conformance server that supports various MCP features and tools.
- Developed a TypeScript conformance server with similar functionality, including tools and resources.
- Added necessary configuration files for TypeScript server setup, including package.json and tsconfig.json.
- Updated pnpm-lock.yaml to include dependencies for the new conformance server.

This commit enhances the testing framework by providing dedicated servers for conformance testing, ensuring better validation of MCP features.

* feat: enhance conformance workflow with conditional inputs

- Added workflow_dispatch inputs to allow running only Python or TypeScript conformance tests.
- Updated job conditions to skip unnecessary tests based on the selected input.
- Modified the conformance summary job to ensure it does not run if cancelled.

This update improves flexibility in running conformance tests, enabling targeted testing based on user input.

* feat: add PR comment with conformance results and remove ext-apps

* feat: show individual test results as columns in PR comment

* feat: simplify conformance PR comment table

* feat: add conformance comparison with main and canary branches

- Fix test name parsing to remove ': X passed, Y failed' suffix
- Fetch baseline results from main and canary branches
- Show comparison columns (vs Main, vs Canary) with color-coded indicators
- Show +1/-1 on individual tests that changed from baseline
- Use 🟢 for improvements, 🔴 for regressions, ⚪ for no change, 🆕 for new

* feat: prevent test name line breaks and add MCP icon

- Use non-breaking hyphens (&#8209;) in test headers to prevent wrapping
- Replace microscope emoji with MCP SVG icon in PR comments

* fix: use picture element for MCP icon with dark/light mode support

* feat: display MCP icon inline with heading with gap

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore: enter canary prerelease mode

* chore(typescript): version packages (canary)

* Feature/mcp 924 implement tool elicitation support in typescript sdk tools (#606)

* chore(deps): bump express from 5.1.0 to 5.2.0 in /libraries/typescript (#602)

* chore(deps): bump express from 5.1.0 to 5.2.0 in /libraries/typescript

Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: add changeset for dependabot updates

* Delete libraries/typescript/.changeset/dependabot-e19bd45.md

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

* chore: add changeset for dependabot updates

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* chore: enter canary prerelease mode

* feat(docs): add elicitation feature documentation and update client structure

- Introduced new documentation for the elicitation feature, detailing both form and URL modes for user input requests.
- Updated `docs.json` to include a new page for elicitation.
- Enhanced the `MCPClient` and related connectors to support elicitation callbacks, allowing servers to request additional user information.
- Implemented elicitation handling in various connectors (HTTP, Stdio) and updated the server context to support elicitation requests.
- Added examples for using elicitation in React components and TypeScript.

* feat: enhance elicitation feature documentation and server-side validation

- Updated documentation to clarify server-side validation with mcp-use when using Zod schemas.
- Added custom error types for elicitation validation in the mcp-use library.
- Improved MCPClient to support elicitation callbacks for better user interaction.
- Refactored elicitation ID generation to use UUID for uniqueness.
- Enhanced error handling in the server to throw specific validation errors.

* feat: add Zod dependency and implement elicitation tool in conformance server

- Updated .gitignore to exclude conformance test results.
- Added Zod as a dependency in the conformance package.
- Implemented a new elicitation tool in the conformance server, allowing for user input with validation using Zod schemas.
- Updated server feature list to include the new elicitation tool.

* feat: add elicitation tool with default values in conformance server

- Introduced a new elicitation tool that utilizes default values for various primitive types as per SEP-1034.
- Enhanced the server's ability to handle user input with validation using Zod schemas.
- Updated the server feature list to include the new elicitation tool.

* fix: resolve pre.json conflict with canary - accept newer versions

* chore: remove ELICITATION_IMPLEMENTATION.md and ext-apps from tracking

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore(typescript): version packages (canary)

* fix: update elicitation example server paths and enhance documentation (#608)

- Updated paths in documentation and examples to reflect the new `examples/server/elicitation/` structure, replacing the previous `examples/server/elicitation-test/`.
- Enhanced the elicitation feature documentation to clarify usage and examples.
- Removed deprecated example files related to the old elicitation test structure.

* chore(typescript): version packages (canary)

* chore(typescript): update package versions to patch for mcp-use and inspector

* Fix/server/json response (#609)

* feat: update dependencies and enhance server functionality

- Added new dependencies '@openai/apps-sdk-ui' and '@tanstack/react-query' to the starter template and test app.
- Updated the pnpm-lock.yaml to reflect the new dependencies and their versions.
- Modified mcp-server.ts to enable JSON response for SSE streaming.
- Refactored createExternalUrlResource, createRawHtmlResource, and createRemoteDomResource functions to return promises for better async handling.

* refactor: update create-mcp-use-app package to use React and Ink components

- Changed the build script to compile TypeScript files with JSX support.
- Replaced Inquirer with Ink components for interactive CLI prompts.
- Removed the old index.ts file, transitioning to a more modern React-based approach.
- Updated package dependencies to include React and Ink, ensuring compatibility with the new structure.
- Enhanced the TypeScript configuration to support JSX.

* chore(typescript): version packages (canary)

* chore(typescript): update mcp-use and inspector versions to minor for elicitation support

* refactor(typescript): clean up mcp-use package structure and enhance type exports

- Removed deprecated '@mcp-use/cli' and 'tsx' from devDependencies in package.json and pnpm-lock.yaml.
- Reorganized type exports in mcp-server.ts to improve clarity and accessibility of ToolContext-related types.
- Refactored logging.ts to utilize a centralized getEnv function for environment variable access.
- Updated imports in various files to reflect the new structure and removed unused code.
- Deleted the mcp-ui-adapter.ts file as it was no longer needed.

* feat(typescript): enhance mcp-use package with new dependencies and refactor server endpoints

- Added 'express' as a dependency in package.json and updated its version to 5.2.1.
- Introduced new dependencies for examples in the mcp-use package, including '@openai/apps-sdk-ui', '@tanstack/react-query', and others.
- Refactored server endpoint handling by consolidating request/response management and removing deprecated handlers.
- Improved logging functionality with a new truncate method for better JSON output.
- Cleaned up unused code and removed legacy endpoint files to streamline the package structure.

* feat(mcp-server): enhance session handling with context-aware tool registration

- Introduced context enhancement for tool handlers in the MCP server to support session-specific logic.
- Added utility functions for session context management and improved message creation within session scope.
- Refactored tool registration to wrap handlers with context-aware logic, enabling better handling of request metadata and notifications.

* feat(mcp-use): update @modelcontextprotocol/sdk version and refactor server handling

- Updated the @modelcontextprotocol/sdk dependency to version 1209 in package.json and pnpm-lock.yaml.
- Adjusted the server port in the elicitation example from 3002 to 3000 for consistency.
- Enhanced the MCP server's session handling to follow the official SDK pattern, ensuring each session has its own transport and server instance.
- Refactored the mountMcp function to utilize FetchStreamableHTTPServerTransport, improving bidirectional communication and simplifying request handling.
- Cleaned up deprecated Express-like request/response handling, streamlining the server's architecture.

* feat(mcp-server): integrate ResourceTemplate and refactor resource registration

- Imported ResourceTemplate from the SDK to enhance resource handling.
- Updated resource registration to use readCallback instead of cb for improved clarity.
- Created ResourceTemplate instances and associated metadata during resource registration, streamlining the process and ensuring better integration with the SDK.

* refactor(mcp-use): streamline server examples and update dependencies

- Removed deprecated '@mcp-use/cli' and 'tsx' from devDependencies in package.json and pnpm-lock.yaml.
- Refactored server examples to utilize new response helpers for consistency and clarity.
- Updated the MCP server examples to improve structure and remove unnecessary code.
- Enhanced the resource and prompt registration to support new callback patterns, ensuring better integration with the SDK.
- Cleaned up unused files related to elicitation tests, improving overall package organization.

* feat(mcp-use): enhance server tools and improve type handling

- Added new server tools with optional message parameters, providing default values for better usability.
- Refactored server example files to streamline tool definitions and improve clarity.
- Updated type exports to include new utility types for handling optional fields in Zod schemas, enhancing type safety and flexibility in callbacks.
- Improved server initialization by removing hardcoded port values, allowing for dynamic port assignment.
- Cleaned up unnecessary console logs and comments to enhance code readability.

* refactor(mcp-use): enhance context handling in server tools and resource registration

- Removed redundant tool definitions in server examples to streamline code.
- Improved type handling by introducing EnhancedPromptContext and EnhancedResourceContext for better access to request context.
- Updated callback signatures in resource and prompt definitions to support context-aware execution.
- Enhanced error handling and response management in server tools for improved reliability.

* refactor(mcp-use): improve context management and streamline server tools

- Enhanced context handling in server tools by refining callback signatures and introducing new context types.
- Streamlined server examples by removing redundant tool definitions and improving error handling.
- Updated resource and prompt registration processes for better integration and reliability.

* chore(conformance): remove branch restrictions from push and pull_request triggers

- Eliminated specific branch filters for push and pull_request events in the conformance workflow, allowing for broader execution on any branch changes.

* only those branches

* default 3000

* fix: update default port from 3001 to 3000 across various components

- Changed default URL and port settings in ConnectionSettingsForm, middleware, and example scripts to use port 3000.
- Updated related documentation and comments to reflect the new default port for consistency.

* fix(conformance): set TypeScript server port to 3000 for conformance tests

- Updated the conformance workflow to explicitly set the TypeScript server to run on port 3000, ensuring consistency with recent changes across components.

* chore: update @modelcontextprotocol/sdk version in package files

- Updated the version of @modelcontextprotocol/sdk from 1194 to 1209 in pnpm-lock.yaml, package.json, and deno.json to reflect the latest changes in the SDK.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* chore(typescript): version packages (canary)

* fix(docs): update sampling link in elicitation documentation (#618)

- Changed the sampling link in the elicitation documentation to point to the correct GitHub repository path for LLM completions, ensuring users have access to the latest examples and resources.

* Fix/server/increase conformance score (#619)

* feat(server): enhance conformance server with new audio and logging tools

- Added a new tool for returning silent audio content in WAV format.
- Updated the image tool to include a more descriptive name.
- Introduced a tool that simulates logging during execution, providing console output for tool processing steps.
- Enhanced the mixed content tool to support multiple content types, including text, image, and resource data.
- Updated prompt handling to accept new argument names for better clarity.

* refactor(mcp-server): enhance schema handling for prompts and server configuration

- Updated schema handling in McpServer and prompt registration to create parameter schemas when arguments are provided.
- Improved error handling by setting argsSchema to undefined when no schema or arguments are available, ensuring clearer validation logic.
- Refactored regex pattern in server helpers to correctly replace parameter placeholders, enhancing template URI parsing.

* feat(server): enhance audio handling and logging capabilities

- Introduced a new audio tool for returning audio content, supporting both base64 data and file paths.
- Updated server tools to utilize a logging mechanism that sends log notifications during execution.
- Enhanced resource handling to support new content types and improved error handling for logging levels.
- Refactored existing tools to streamline code and improve clarity in tool definitions.

* feat(server): implement resource subscription management and dynamic updates

- Added a new subscribable resource that can be updated and subscribed to by clients.
- Introduced a tool for updating the subscribable resource, notifying all subscribers of changes.
- Enhanced session management by cleaning up resource subscriptions when sessions are closed.
- Updated context storage to include optional session IDs for better tracking.
- Refactored idle cleanup to support session-specific resource subscription cleanup.

* feat: enhance conformance workflow with dynamic badge generation for Python and TypeScript

- Added new steps in the GitHub Actions workflow to calculate and create conformance badges for both Python and TypeScript based on test results.
- Updated README.md to include links and badges for Python and TypeScript conformance, providing users with immediate feedback on test status.

* fix action uses

* fix: update conformance workflow badge calculations and labels

- Changed the conformance badge calculation to use integer scaling for percentage rates.
- Adjusted the passing rate threshold from 80% to 60% for badge color determination.
- Updated badge labels for Python and TypeScript to reflect "MCP Conformance" instead of just the language.

* fix: enable conformance comments on forked PRs with two-workflow pattern

- Split conformance workflow into test execution and comment posting
- Created conformance-comment.yml with workflow_run trigger for full permissions
- Upload PR metadata and parsed results as artifacts
- Updated badge labels to 'MCP Conformance (TS)' and 'MCP Conformance (PY)'
- Fixed badge colors: green at 100%, yellow ≥60%, red <60%
- Resolves permission errors when posting comments on forked PRs

* feat(server): update serverBaseUrl to use environment variable helper (#625)

* feat(server): update serverBaseUrl to use environment variable helper

- Implemented a helper function to set serverBaseUrl based on MCP_URL environment variable, ensuring correct public URL usage for widgets/assets.

* fix(server): improve error handling and logging for resource management

- Enhanced error handling in resource subscription management to ensure clearer validation and logging.
- Updated logging mechanisms to provide better insights during execution, particularly for resource updates and session management.
- Refactored code for improved clarity and maintainability in server tools.

* chore(typescript): version packages (canary)

* fix: prevent code injection in conformance-comment workflow

Use environment variables instead of direct string interpolation to pass
PR metadata to the github-script action, preventing potential code injection
from untrusted input.

Addresses CodeQL security findings.

* chore: trigger conformance workflow

* feat: allow conformance comment workflow to run on push events

- Remove pull_request-only restriction from workflow trigger
- Make PR metadata download and comment posting conditional
- Workflow now runs for both push and pull_request events
- For push events, workflow completes without posting comment
- Badges remain branch-specific per existing logic in conformance.yml

* fix: revert comment workflow to PR-only events

- Comment workflow only runs for pull_request events (not push)
- For push events, there's no PR to comment on
- Conformance workflow already runs on all branch pushes for iteration
- Badges remain branch-specific (only updated for main/canary pushes)

* Docs/refactor (#633)

* quickstart

* chore: update documentation and assets

- Renamed "Getting Started" group to "Get Started" in docs.json.
- Added new SVG logo for MCP use and several images for TypeScript documentation.
- Created a new changelog file for tracking updates and improvements.
- Removed outdated security and logging documentation, and updated links in various guides.
- Introduced new response helpers and improved server logging documentation.
- Enhanced the UI widgets section to support OpenAI Apps SDK with zero boilerplate.

* refactor: update MCP server instantiation to use class constructor

- Replaced instances of `createMCPServer` with the new `MCPServer` class constructor across documentation and example files.
- Updated related documentation to reflect the new instantiation method, enhancing clarity and consistency.
- Ensured backward compatibility by retaining the `createMCPServer` function for legacy support.

* refactor: standardize MCPServer instantiation in documentation

- Updated examples to utilize the new `MCPServer` class constructor instead of the legacy `createMCPServer` function.
- Enhanced documentation clarity by providing consistent usage patterns and emphasizing the recommended instantiation method.
- Maintained backward compatibility by retaining the legacy function for existing users.

* refactor: update subscribable resource schema to use default value

- Changed the `newValue` property in the subscribable resource schema to have a default value of "Updated value".
- Updated the async function to utilize the default value, simplifying the parameter handling.

* refactor: enhance type inference and callback signatures for resource templates

- Updated the `registerResourceTemplate` function to support multiple callback signatures, improving type inference for developers.
- Removed the deprecated `ReadResourceTemplateCallbackBivariant` interface to streamline the codebase.
- Adjusted the handling of `uri` and `variables` in the server example to ensure non-null assertions, enhancing type safety.

* refactor: improve resource template registration and type safety

- Enhanced the `registerResourceTemplate` function to better support multiple callback signatures, improving developer experience.
- Removed the obsolete `ReadResourceTemplateCallbackBivariant` interface to clean up the codebase.
- Updated the handling of `uri` and `variables` in the server example to enforce non-null assertions, boosting type safety.

* chore(typescript): version packages (canary)

* refactor: streamline async callback syntax in server tools

- Updated async callback definitions in various server tools to improve consistency and readability.
- Removed unnecessary line breaks and streamlined the structure of callback functions across multiple files.
- Enhanced overall code clarity while maintaining existing functionality.

* refactor: enhance async callback handling in server tools

- Improved the structure and readability of async callback functions in server tools.
- Standardized callback definitions across multiple files for better consistency.
- Maintained existing functionality while enhancing code clarity.

* feat: add weather tools and manual widget registration

- Introduced two new server tools: `get-current-weather` and `get-weather-forecast`, utilizing the `weather-display` widget.
- Updated the README to include a manual tool registration pattern for widgets that do not auto-register.
- Enhanced the example structure to demonstrate custom tool usage and widget integration.
- Improved documentation clarity regarding widget registration and usage patterns.

* refactor: simplify input schema for get-current-weather tool

- Replaced the manual input definition with a Zod schema for the `get-current-weather` tool, enhancing type safety and readability.
- Streamlined the async callback function by removing explicit type annotations for inputs, improving code clarity.

* refactor: enhance type safety and structure in MCPServer resource registration

- Updated the `resource` and `resourceTemplate` methods in `MCPServer` to use generic types for improved type safety and clarity.
- Refactored the `uiResourceRegistration` function to accept a more generalized server context, enhancing compatibility with various resource definitions.
- Renamed `UIResourceServerContext` to `UIResourceServer` for better alignment with its purpose and updated its interface to reflect the new structure.
- Improved overall code readability and maintainability by streamlining method signatures and enhancing type definitions.

* Chore/typescript/any (#634)

* fix: add noZoom attribute to images in SimpleSplitCard component

- Added the `noZoom` attribute to image elements in the `SimpleSplitCard` component to prevent zooming effects on hover.
- Updated image tags for both light and dark mode images, as well as logos in the action links, ensuring consistent behavior across the component.

* refactor: enhance type safety and error handling in result displays

- Updated the `PromptResult`, `ResourceResult`, and `ToolResult` interfaces to use specific types instead of `any`, improving type safety.
- Refactored error handling in the `extractErrorMessage` functions across multiple components to handle new result structures, ensuring consistent error messaging.
- Improved the handling of result properties in the `onCopy` callbacks to align with the updated types, enhancing overall code clarity and maintainability.

* refactor: improve error handling and type definitions in result processing

- Enhanced error handling in the `extractErrorMessage` functions to accommodate updated result structures, ensuring consistent messaging.
- Updated `PromptResult`, `ResourceResult`, and `ToolResult` interfaces to utilize specific types, improving type safety.
- Refactored `onCopy` callbacks to align with new type definitions, enhancing code clarity and maintainability.

* chore(typescript): version packages (canary)

* fix typo

* Fix/mcp use/typing (#636)

* refactor: remove get-weather-forecast tool and update MCPServer class structure

- Removed the `get-weather-forecast` tool implementation from the server example, streamlining the codebase.
- Refactored the `MCPServer` class to `MCPServerClass` for improved clarity and updated type definitions for better type safety.
- Enhanced the `WidgetMetadata` interface to include new properties for input validation and annotations, aligning with tool naming conventions.

* refactor: enhance widget registration logic and metadata handling

- Updated the `uiResourceRegistration` function to conditionally register tools based on the `exposeAsTool` flag, improving flexibility in widget registration.
- Refactored the handling of tool metadata, ensuring that relevant fields from `appsSdkMetadata` are copied only when necessary.
- Enhanced the `createWidgetRegistration` function to extract and utilize the `exposeAsTool` flag from metadata, defaulting to true if not specified, for consistent behavior across widgets.

* feat: add tool annotations and exposeAsTool flag to resource definition

- Introduced `exposeAsTool` and `toolAnnotations` properties to the `BaseUIResourceDefinition` interface, allowing for more flexible tool registration.
- Updated the `uiResourceRegistration` function to utilize the new `exposeAsTool` property directly from the resource definition, enhancing the registration logic.

* feat: enhance widget integration and tool metadata handling

- Added support for returning interactive UI widgets from tools using the `widget()` helper and `returnsWidget` option, improving user experience in the Inspector and ChatGPT.
- Updated documentation to clarify the usage of the `widget` configuration in tool definitions, including examples for better understanding.
- Enhanced the `MCPServer` class to manage widget definitions and inject metadata into tool responses, streamlining the integration of custom tools with widgets.
- Improved type definitions for tools and widgets, ensuring better type safety and clarity in the codebase.

* Fix/server/oauth (#637)

* refactor: enhance MCPServerClass with generic OAuth support

- Updated the `MCPServerClass` to support generics for OAuth, improving type safety and flexibility in tool and resource registration methods.
- Refactored method signatures for `tool`, `prompt`, `resource`, and `resourceTemplate` to utilize the new `HasOAuth` type parameter, ensuring consistent behavior based on OAuth configuration.
- Adjusted the `McpServerInstance` and `MCPServer` types to reflect the new generic structure, enhancing clarity in type annotations for server instances.

* refactor: simplify OAuth handling in MCPServerClass

- Removed the unused `oauthConfig` property and streamlined the OAuth setup logic by directly using `oauthProvider`.
- Updated conditional checks for OAuth setup to enhance clarity and reduce redundancy in the codebase.

* chore(ci): add --dev flag to create-mcp-use-app commands in CI workflow

- Updated the CI workflow to include the `--dev` flag in both npm and yarn commands for creating test applications, ensuring development dependencies are installed correctly.

* chore(ci): update CI workflow to build and pack all packages

- Modified the CI workflow to build all packages in the TypeScript library and pack individual packages, including `create-mcp-use-app`, `mcp-use`, `@mcp-use/cli`, and `@mcp-use/inspector`.
- Updated artifact upload and download steps to handle multiple package artifacts, ensuring all necessary packages are available for testing.
- Added a step to replace workspace dependencies with file references in `package.json` for both npm and yarn test applications, improving dependency management.

* chore(ci): improve PACKAGE_PATH resolution in CI workflow

- Updated the CI workflow to enhance the resolution of the PACKAGE_PATH variable for the create-mcp-use-app package.
- Modified the logic to handle cases where multiple package files exist, ensuring the first available package is used, improving reliability in the build process.

* chore(ci): refine PACKAGE_PATH resolution in CI workflow

- Enhanced the logic for determining the PACKAGE_PATH variable in the CI workflow to ensure it correctly identifies the first available create-mcp-use-app package file, regardless of the operating system.
- Updated commands to use more reliable methods for file searching, improving consistency and robustness in the build process.

* chore(ci): update PACKAGE_PATH resolution to use realpath in CI workflow

- Modified the CI workflow to utilize `realpath` for resolving the PACKAGE_PATH variable, ensuring accurate file paths for the create-mcp-use-app package across different operating systems.
- This change enhances the reliability of package path resolution in both npm and yarn commands, improving the overall consistency of the build process.

* chore(ci): refine tarball path resolution in CI workflow

- Updated the CI workflow to improve the resolution of tarball paths for `mcp-use`, `mcp-use-cli`, and `mcp-use-inspector` packages by using `find` to ensure the first available package is correctly identified.
- This change enhances the reliability of package path resolution, ensuring accurate file paths are used during the build process.

* chore(ci): add .actrc configuration for local development

- Introduced a new `.actrc` file to configure the local development environment for CI workflows, specifying the use of a custom Ubuntu image and container architecture.
- Updated the CI workflow to replace workspace dependencies with file references in `package.json`, enhancing consistency across different environments.
- Adjusted links in documentation to ensure accurate navigation, including updates to security guides and logging resources.

* fix(docs): clean up formatting and update redirects in documentation

- Removed unnecessary blank lines in the documentation JSON file for improved readability.
- Updated the redirects section to ensure proper formatting and consistency in the structure.

* refactor(ci): enhance CI workflow for package management and path resolution (#638)

- Improved the CI workflow to ensure accurate resolution of package paths for `create-mcp-use-app`, `mcp-use`, and related packages, enhancing reliability during builds.
- Updated commands to utilize more robust methods for identifying package files, ensuring consistency across different environments.
- Streamlined the process for building and packing all necessary packages, improving overall dependency management and artifact handling.

* chore(typescript): version packages (canary)

* Chore/deps/fork (#640)

* chore(deps): update @modelcontextprotocol/sdk dependency and add new packages

- Removed the MCP SDK update workflow as it is no longer needed.
- Updated the @modelcontextprotocol/sdk dependency in multiple package.json files to point to the new GitHub repository.
- Added new dependencies: glob and js-yaml, with specified version ranges.
- Updated peer dependencies for express to support version 5.0.0.
- Cleaned up package-lock files to reflect the new dependency structure.

* chore(ci): optimize CI workflow for package path resolution and build process

- Enhanced the CI workflow to improve package path resolution, ensuring accurate identification of package files across different environments.
- Streamlined the build process for all necessary packages, improving reliability and consistency during builds.
- Updated commands to utilize more robust methods for file searching, enhancing overall dependency management.

* chore(typescript): version packages (canary)

* chore(typescript): update package references to mcp-use/modelcontextprotocol-sdk (#641)

- Changed all instances of @modelcontextprotocol/sdk to @mcp-use/modelcontextprotocol-sdk across various files.
- Updated package.json files to reflect the new package versioning and structure.
- Enhanced import paths in multiple components and utilities to ensure compatibility with the new SDK structure.
- Added new dependencies and updated existing ones in the pnpm-lock.yaml file for consistency.

* chore(typescript): version packages (canary)

* feat: Improve typescript tel (#642)

* feat: add telemetry event classes and interfaces for server and client interactions

- Introduced new telemetry event classes: `ServerRunEvent`, `ServerInitializeEvent`, `ServerToolCallEvent`, `ServerResourceCallEvent`, `ServerPromptCallEvent`, `ServerContextEvent`, `MCPClientInitEvent`, and `ConnectorInitEvent`.
- Added corresponding data interfaces for each event to enhance type safety and structure.
- Updated the `Telemetry` class to include methods for tracking these new events, improving the telemetry system's capabilities.
- Enhanced the `index.ts` file to export the new event classes and types for easier access throughout the library.

* feat(telemetry): add isEnabled check to telemetry methods

* fix: snake case properties

* feat(telemetry): add MCPServer telemetry interface and data extraction method

- Introduced the `MCPServerTelemetryInfo` interface to encapsulate necessary data for telemetry tracking from an MCPServer instance.
- Added the `createServerRunEventData` function to centralize data extraction from MCPServer-like objects, enhancing the telemetry layer's functionality.
- Updated the `Telemetry` class with a new method, `trackServerRunFromServer`, to track server run events directly using the new interface and extraction method.

* feat(telemetry): enhance telemetry tracking for MCPClient and connectors

- Integrated telemetry tracking for MCPClient initialization, connector initialization, and server events.
- Added methods to track server runs, tool calls, prompt calls, and resource calls, improving observability of client-server interactions.
- Updated the HttpConnector, StdioConnector, and BaseConnector classes to utilize the new tracking methods.
- Enhanced MCPServer to log server initialization and execution metrics, providing better insights into server performance.

* feat(telemetry): enhance resource tracking in server run events

- Updated the `ServerRunEventData` interface to include new properties for tracking resources: `appsSdkResources`, `mcpUiResources`, and `mcpAppsResources`, along with their respective counts.
- Refactored the `createServerRunEventData` function to map and filter resources based on MIME types, improving the granularity of telemetry data.
- Adjusted the `ServerRunEvent` class to serialize the new resource properties, enhancing the telemetry output for better observability.

* feat(versioning): automate version generation for telemetry

- Added a new script `generate-version.mjs` to automatically generate `src/telemetry/version.ts` with the current package version during the build process.
- Updated the `build` script in `package.json` to include the version generation step.
- Refactored `getPackageVersion` function to return the embedded version from the generated file, improving version management.

* tests for telemetry

* add changeset

* feat(telemetry): enhance runtime environment detection and user ID management

- Introduced a comprehensive runtime environment detection system, supporting Node.js, Bun, Deno, Cloudflare Workers, Edge, and browser environments.
- Added methods to determine storage capabilities for user ID persistence, including filesystem and localStorage options.
- Refactored user ID retrieval to accommodate different environments, ensuring session-based IDs are generated when persistent storage is unavailable.
- Enhanced telemetry event tracking by including runtime environment metadata in captured events, improving observability and debugging capabilities.

* feat(telemetry): add browser stubs for Node.js-only packages

- Introduced a Vite plugin to provide browser-compatible stubs for the `posthog-node` package, allowing it to be used in browser environments.
- Updated the Vite server configuration to exclude `posthog-node` from dependency optimization and mark it as external in SSR mode, ensuring proper handling in both development and production builds.
- Enhanced the overall compatibility of the telemetry system with browser environments by stubbing server-side functionality.

* refactor: standardize code formatting and improve readability

- Updated import statements to use consistent double quotes.
- Reformatted function parameters and object properties for better readability across multiple files.
- Enhanced the structure of telemetry-related code to improve maintainability and clarity.
- Removed unnecessary blank lines to streamline the codebase.

* feat(versioning): update version management and export functionality

- Added version information export to the mcp-use package, allowing access to the package version across various modules.
- Refactored the version generation script to output to a new location, ensuring consistency in version tracking.
- Updated multiple files to import and utilize the new versioning functions, enhancing the overall version management system.

* refactor(telemetry): remove unused ServerRunEventData import

- Eliminated the import of ServerRunEventData from telemetry.ts to clean up the code and remove unnecessary dependencies.

---------

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

* chore(typescript): version packages (canary)

* feat(ci): update CI workflow to use local tar files for dependencies

- Modified the CI workflow to create projects using local tar files instead of workspace dependencies.
- Removed the previous steps for replacing workspace dependencies in `package.json`, simplifying the process.
- Added a new helper function to validate and find required tar files in a specified directory, ensuring all necessary packages are present.
- Enhanced the project creation logic to support a new `--tar` option for specifying the directory containing tar files.

* feat: add recursive tar file search functionality

- Introduced a new helper function to recursively find `.tgz` files in a specified directory, enhancing the ability to locate required tar files.
- Updated the existing `findTarFiles` function to utilize the new recursive search, improving the validation and retrieval of tar files for project creation.
- Enhanced error messages to provide clearer feedback on found tar files during the process.

* refactor: clean up index.tsx and update CI workflow

- Removed unused functions for tar file handling from `index.tsx`, simplifying the codebase.
- Updated the CI workflow to ensure consistent packaging of the `mcp-use` package, enhancing the build process.
- Adjusted the project creation logic to streamline dependency management and improve clarity in the workflow.

* chore(ci): update E2E canary workflow permissions

- Added permissions for actions and contents in the E2E canary workflow to enhance security and control over workflow execution.

* refactor: enhance error handling display in OAuth callback (#644)

- Refactored the error display logic in the OAuth callback to use DOM manipulation for improved safety and clarity.
- Updated regex patterns in the OAuthHelper class to be more specific, enhancing the accuracy of authentication checks for various APIs.

* chore(typescript): version packages (canary)

* feat(chat): enhance tool integration in chat components (#643)

- Added `tools` prop to `ChatTab` for better tool management.
- Updated `MessageList` to accept `tools` and implemented a helper function to retrieve tool metadata.
- Enhanced `ToolResultRenderer` to utilize tool metadata for improved rendering and error handling, including debug logging for better traceability.

* chore(typescript): version packages (canary)

* refactor: update regex patterns in OAuthHelper for improved DNS safety

- Enhanced regex patterns in the OAuthHelper class to ensure DNS-safe domain matching, accommodating maximum label length restrictions for Google APIs, Atlassian, and Slack.
- Improved clarity in comments to reflect the changes made to the regex patterns.

* Fix/inspector/build (#645)

* chore(inspector): update prepublishOnly script for improved build process

- Modified the `prepublishOnly` script in the inspector package to first build the `mcp-use` package before executing the standard build, ensuring all dependencies are correctly prepared prior to publishing.

* chore: changeset

* chore(typescript): version packages (canary)

* chore(ci): add workflow_dispatch trigger to E2E canary workflow

- Introduced a manual trigger for the E2E canary workflow, allowing for on-demand execution alongside the existing workflow_run trigger.

* Update conformance workflows to use published action (#647)

* Update conformance workflows to use published action

- Replace inline conformance testing with mcp-use/mcp-conformance-action@v1
- Simplify conformance-comment workflow to use action's comment mode
- Maintains fork PR support via workflow_run pattern

* Trigger conformance tests with fixed action

* Trigger conformance with v1.0.2 (aggressive cleanup)

* Trigger conformance with v1.0.3 (simplified cleanup)

* Trigger conformance with v1.0.4 (detached spawn)

* Trigger conformance after updating comment workflow on main

* Trigger conformance with v1.0.5 (baseline comparison)

* Trigger conformance with v1.0.6 (old artifact format support)

* Potential fix for code scanning alert no. 45: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>

* feat: Add browser tel to typescript  (#651)

* add posthog-js

* refactor(telemetry): enhance telemetry functionality and browser support

- Added support for browser environments in the Telemetry class, including dynamic imports of posthog-js for event tracking.
- Introduced new events: ClientAddServerEvent and ClientRemoveServerEvent for better server management tracking.
- Improved telemetry source management and user identification methods for both Node.js and browser contexts.
- Refactored existing methods for better clarity and maintainability, including the initialization of PostHog clients based on the runtime environment.
- Updated event capturing logic to handle both Node.js and browser clients effectively.

* feat(telemetry): add ClientAddServerEvent and ClientRemoveServerEvent for server management

- Introduced ClientAddServerEvent and ClientRemoveServerEvent classes to track server addition and removal.
- Enhanced MCPClientInitEvent to include isBrowser property for better environment differentiation.
- Improved properties extraction for new event classes to facilitate server management tracking.

* feat(telemetry): unify telemetry exports and enhance backward compatibility

- Added unified telemetry exports for browser and Node.js environments, including Tel and setTelemetrySource.
- Introduced backward compatibility aliases for existing telemetry functionalities to ensure seamless integration for users transitioning to the new structure.

* feat(telemetry): integrate telemetry tracking in MCPClient methods

- Added telemetry tracking for server addition and removal in BaseMCPClient.
- Implemented client initialization tracking in BrowserMCPClient to capture configuration details and environment context.
- Enhanced error handling for telemetry tracking failures during client initialization.

* feat(telemetry): enhance MCP telemetry tracking in useMcp hook

- Integrated telemetry tracking for connection attempts, tool calls, and resource reads within the useMcp hook.
- Added success and failure tracking for connections, tool executions, and resource accesses to improve monitoring and diagnostics.

* chore(typescript): version packages (canary)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Enrico Toniato <2827496+tonxxd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Luigi Pederzani <luigipederzani@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-12-08 19:35:44 +01:00

1.7 MiB