feat(core): mcp server setting (#13630)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* MCP Server integration available in cloud workspaces with a dedicated
settings panel.
* Manage personal access tokens: generate/revoke tokens and view
revealed token.
  * One-click copy of a prefilled server configuration JSON.
  * New query to fetch revealed access tokens.

* **Improvements**
  * Integration list adapts to workspace type (cloud vs. local).
* More reliable token refresh with clearer loading, error and
revalidation states.

* **Localization**
* Added “Copied to clipboard” message and MCP Server name/description
translations.

* **Chores**
  * Updated icon dependency across many packages.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
EYHN
2025-09-24 16:02:47 +08:00
committed by GitHub
parent ca9811792d
commit 2f118206cc
16 changed files with 475 additions and 27 deletions
@@ -1,8 +1,9 @@
query listUserAccessTokens {
accessTokens {
revealedAccessTokens {
id
name
createdAt
expiresAt
token
}
}
+2 -1
View File
@@ -88,11 +88,12 @@ export const listUserAccessTokensQuery = {
id: 'listUserAccessTokensQuery' as const,
op: 'listUserAccessTokens',
query: `query listUserAccessTokens {
accessTokens {
revealedAccessTokens {
id
name
createdAt
expiresAt
token
}
}`,
};
+4 -2
View File
@@ -2166,6 +2166,7 @@ export interface Query {
publicUserById: Maybe<PublicUserType>;
/** query workspace embedding status */
queryWorkspaceEmbeddingStatus: ContextWorkspaceEmbeddingStatus;
revealedAccessTokens: Array<RevealedAccessToken>;
/** server config */
serverConfig: ServerConfigType;
/** Get user by email */
@@ -3089,12 +3090,13 @@ export type ListUserAccessTokensQueryVariables = Exact<{
export type ListUserAccessTokensQuery = {
__typename?: 'Query';
accessTokens: Array<{
__typename?: 'AccessToken';
revealedAccessTokens: Array<{
__typename?: 'RevealedAccessToken';
id: string;
name: string;
createdAt: string;
expiresAt: string | null;
token: string;
}>;
};