mirror of
https://github.com/mcp-use/mcp-use.git
synced 2026-09-14 18:06:01 +08:00
6ec11cdae2
* 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 (‑) 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>
1.7 MiB
1.7 MiB