Browse Source

feat: add more mcp (#275)

* feat: add more mcp docs

* feat: add more mcp docs

* fix: ci lint

* feat: save public mcps
zijiren 6 months ago
parent
commit
298150c55e
100 changed files with 14008 additions and 26 deletions
  1. 14 2
      core/common/config/config.go
  2. 14 11
      core/controller/mcp/publicmcp-group.go
  3. 1 1
      core/controller/mcp/publicmcp-tool.go
  4. 77 1
      core/controller/mcp/publicmcp.go
  5. 96 0
      core/docs/docs.go
  6. 96 0
      core/docs/swagger.json
  7. 59 1
      core/docs/swagger.yaml
  8. 3 0
      core/model/option.go
  9. 25 1
      core/model/publicmcp.go
  10. 3 1
      core/router/api.go
  11. 178 0
      mcp-servers/ableton/README.cn.md
  12. 178 0
      mcp-servers/ableton/README.md
  13. 38 0
      mcp-servers/ableton/init.go
  14. 144 0
      mcp-servers/academic-search/README.cn.md
  15. 144 0
      mcp-servers/academic-search/README.md
  16. 38 0
      mcp-servers/academic-search/init.go
  17. 274 0
      mcp-servers/alibabacloud-dms/README.cn.md
  18. 269 0
      mcp-servers/alibabacloud-dms/README.md
  19. 38 0
      mcp-servers/alibabacloud-dms/init.go
  20. 68 0
      mcp-servers/allvoicelab/README.cn.md
  21. 67 0
      mcp-servers/allvoicelab/README.md
  22. 36 0
      mcp-servers/allvoicelab/init.go
  23. 183 0
      mcp-servers/amap/README.md
  24. 10 5
      mcp-servers/amap/init.go
  25. 5 2
      mcp-servers/amap/main.go
  26. 218 0
      mcp-servers/blender/README.cn.md
  27. 218 0
      mcp-servers/blender/README.md
  28. 38 0
      mcp-servers/blender/init.go
  29. 314 0
      mcp-servers/browserbase/README.cn.md
  30. 313 0
      mcp-servers/browserbase/README.md
  31. 38 0
      mcp-servers/browserbase/init.go
  32. 133 0
      mcp-servers/cfworker/README.cn.md
  33. 133 0
      mcp-servers/cfworker/README.md
  34. 38 0
      mcp-servers/cfworker/init.go
  35. 92 0
      mcp-servers/chatsum/README.cn.md
  36. 91 0
      mcp-servers/chatsum/README.md
  37. 38 0
      mcp-servers/chatsum/init.go
  38. 232 0
      mcp-servers/elasticsearch/README.cn.md
  39. 232 0
      mcp-servers/elasticsearch/README.md
  40. 35 0
      mcp-servers/elasticsearch/init.go
  41. 259 0
      mcp-servers/everything-search/README.cn.md
  42. 260 0
      mcp-servers/everything-search/README.md
  43. 38 0
      mcp-servers/everything-search/init.go
  44. 183 0
      mcp-servers/excel/README.cn.md
  45. 183 0
      mcp-servers/excel/README.md
  46. 38 0
      mcp-servers/excel/init.go
  47. 219 0
      mcp-servers/filesystem/README.cn.md
  48. 219 0
      mcp-servers/filesystem/README.md
  49. 38 0
      mcp-servers/filesystem/init.go
  50. 23 1
      mcp-servers/gezhe/README.cn.md
  51. 22 0
      mcp-servers/gezhe/README.md
  52. 321 0
      mcp-servers/git/README.cn.md
  53. 325 0
      mcp-servers/git/README.md
  54. 38 0
      mcp-servers/git/init.go
  55. 293 0
      mcp-servers/knowledge-graph-memory/README.cn.md
  56. 293 0
      mcp-servers/knowledge-graph-memory/README.md
  57. 38 0
      mcp-servers/knowledge-graph-memory/init.go
  58. 219 0
      mcp-servers/magic/README.cn.md
  59. 219 0
      mcp-servers/magic/README.md
  60. 38 0
      mcp-servers/magic/init.go
  61. 95 0
      mcp-servers/markdownify/README.cn.md
  62. 95 0
      mcp-servers/markdownify/README.md
  63. 38 0
      mcp-servers/markdownify/init.go
  64. 33 0
      mcp-servers/mcpregister/init.go
  65. 171 0
      mcp-servers/mysql/README.cn.md
  66. 171 0
      mcp-servers/mysql/README.md
  67. 38 0
      mcp-servers/mysql/init.go
  68. 22 0
      mcp-servers/oceanbase/README.cn.md
  69. 28 0
      mcp-servers/oceanbase/README.md
  70. 35 0
      mcp-servers/oceanbase/init.go
  71. 272 0
      mcp-servers/office-word/README.cn.md
  72. 272 0
      mcp-servers/office-word/README.md
  73. 38 0
      mcp-servers/office-word/init.go
  74. 132 0
      mcp-servers/openmemory/README.cn.md
  75. 132 0
      mcp-servers/openmemory/README.md
  76. 35 0
      mcp-servers/openmemory/init.go
  77. 686 0
      mcp-servers/playwright/README.cn.md
  78. 792 0
      mcp-servers/playwright/README.md
  79. 38 0
      mcp-servers/playwright/init.go
  80. 219 0
      mcp-servers/puppeteer/README.cn.md
  81. 219 0
      mcp-servers/puppeteer/README.md
  82. 38 0
      mcp-servers/puppeteer/init.go
  83. 185 0
      mcp-servers/query_table/README.cn.md
  84. 182 0
      mcp-servers/query_table/README.md
  85. 38 0
      mcp-servers/query_table/init.go
  86. 434 0
      mcp-servers/redbook-search-comment/README.cn.md
  87. 434 0
      mcp-servers/redbook-search-comment/README.md
  88. 38 0
      mcp-servers/redbook-search-comment/init.go
  89. 349 0
      mcp-servers/redis/README.cn.md
  90. 349 0
      mcp-servers/redis/README.md
  91. 38 0
      mcp-servers/redis/init.go
  92. 3 0
      mcp-servers/register.go
  93. 206 0
      mcp-servers/sqlite/README.cn.md
  94. 206 0
      mcp-servers/sqlite/README.md
  95. 38 0
      mcp-servers/sqlite/init.go
  96. 83 0
      mcp-servers/stock-analysis/README.cn.md
  97. 83 0
      mcp-servers/stock-analysis/README.md
  98. 38 0
      mcp-servers/stock-analysis/init.go
  99. 186 0
      mcp-servers/unionpay/README.md
  100. 32 0
      mcp-servers/unionpay/init.go

+ 14 - 2
core/common/config/config.go

@@ -26,8 +26,9 @@ var (
 	groupMaxTokenNum             atomic.Int64
 	groupConsumeLevelRatio       atomic.Value
 
-	publicMCPHost atomic.Value
-	groupMCPHost  atomic.Value
+	defaultMCPHost atomic.Value
+	publicMCPHost  atomic.Value
+	groupMCPHost   atomic.Value
 )
 
 func init() {
@@ -35,6 +36,7 @@ func init() {
 	defaultChannelModelMapping.Store(make(map[int]map[string]string))
 	groupConsumeLevelRatio.Store(make(map[float64]float64))
 	notifyNote.Store("")
+	defaultMCPHost.Store("")
 	publicMCPHost.Store("")
 	groupMCPHost.Store("")
 }
@@ -201,6 +203,16 @@ func SetNotifyNote(note string) {
 	notifyNote.Store(note)
 }
 
+func GetDefaultMCPHost() string {
+	h, _ := defaultMCPHost.Load().(string)
+	return h
+}
+
+func SetDefaultMCPHost(host string) {
+	host = env.String("DEFAULT_MCP_HOST", host)
+	defaultMCPHost.Store(host)
+}
+
 func GetPublicMCPHost() string {
 	h, _ := publicMCPHost.Load().(string)
 	return h

+ 14 - 11
core/controller/mcp/publicmcp-group.go

@@ -146,10 +146,23 @@ func NewGroupPublicMCPDetailResponse(
 	}
 	r.Params = reusingParams.Params
 
+	gettedTools := false
+
+	if !gettedTools && testConfig != nil && testConfig.Enabled {
+		tools, err := getPublicMCPTools(ctx.Request.Context(), mcp, testConfig.Params)
+		if err != nil {
+			log := common.GetLogger(ctx)
+			log.Errorf("get public mcp tools error: %s", err.Error())
+		} else {
+			gettedTools = true
+			r.Tools = tools
+		}
+	}
+
 	if checkParamsIsFull(r.Params, r.Reusing) {
 		r.Endpoints = NewPublicMCPEndpoint(host, mcp)
 
-		if len(r.Tools) == 0 {
+		if !gettedTools {
 			tools, err := getPublicMCPTools(ctx.Request.Context(), mcp, r.Params)
 			if err != nil {
 				log := common.GetLogger(ctx)
@@ -160,16 +173,6 @@ func NewGroupPublicMCPDetailResponse(
 		}
 	}
 
-	if len(r.Tools) == 0 && testConfig != nil && testConfig.Enabled {
-		tools, err := getPublicMCPTools(ctx.Request.Context(), mcp, testConfig.Params)
-		if err != nil {
-			log := common.GetLogger(ctx)
-			log.Errorf("get public mcp tools error: %s", err.Error())
-		} else {
-			r.Tools = tools
-		}
-	}
-
 	return r, nil
 }
 

+ 1 - 1
core/controller/mcp/publicmcp-tool.go

@@ -17,7 +17,7 @@ func getPublicMCPTools(
 	publicMcp model.PublicMCP,
 	params map[string]string,
 ) ([]mcp.Tool, error) {
-	ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
+	ctx, cancel := context.WithTimeout(ctx, 3*time.Second)
 	defer cancel()
 
 	switch publicMcp.Type {

+ 77 - 1
core/controller/mcp/publicmcp.go

@@ -1,6 +1,7 @@
 package controller
 
 import (
+	"encoding/json"
 	"fmt"
 	"net/http"
 	"strconv"
@@ -52,6 +53,9 @@ func NewPublicMCPEndpoint(host string, mcp model.PublicMCP) MCPEndpoint {
 		publicMCPHost := config.GetPublicMCPHost()
 		if publicMCPHost == "" {
 			ep.Host = host
+			if defaultHost := config.GetDefaultMCPHost(); defaultHost != "" {
+				ep.Host = defaultHost
+			}
 			ep.SSE = fmt.Sprintf("/mcp/public/%s/sse", mcp.ID)
 			ep.StreamableHTTP = "/mcp/public/" + mcp.ID
 		} else {
@@ -213,6 +217,78 @@ func CreatePublicMCP(c *gin.Context) {
 	middleware.SuccessResponse(c, NewPublicMCPResponse(c.Request.Host, mcp))
 }
 
+type SavePublicMCPRequest struct {
+	model.PublicMCP
+	CreatedAt json.RawMessage `json:"created_at"`
+	UpdateAt  json.RawMessage `json:"update_at"`
+}
+
+// SavePublicMCP godoc
+//
+//	@Summary		Save MCP
+//	@Description	Save a MCP
+//	@Tags			mcp
+//	@Accept			json
+//	@Produce		json
+//	@Security		ApiKeyAuth
+//	@Param			id	path		string			true	"MCP ID"
+//	@Param			mcp	body		model.PublicMCP	true	"MCP object"
+//	@Success		200	{object}	middleware.APIResponse{data=PublicMCPResponse}
+//	@Router			/api/mcp/public/{id} [put]
+func SavePublicMCP(c *gin.Context) {
+	id := c.Param("id")
+	if id == "" {
+		middleware.ErrorResponse(c, http.StatusBadRequest, "MCP ID is required")
+		return
+	}
+
+	var mcp SavePublicMCPRequest
+	if err := c.ShouldBindJSON(&mcp); err != nil {
+		middleware.ErrorResponse(c, http.StatusBadRequest, err.Error())
+		return
+	}
+
+	mcp.ID = id
+
+	if err := model.SavePublicMCP(&mcp.PublicMCP); err != nil {
+		middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
+		return
+	}
+
+	middleware.SuccessResponse(c, NewPublicMCPResponse(c.Request.Host, mcp.PublicMCP))
+}
+
+// SavePublicMCPs godoc
+//
+//	@Summary		Save MCPs
+//	@Description	Save a list of MCPs
+//	@Tags			mcp
+//	@Accept			json
+//	@Produce		json
+//	@Security		ApiKeyAuth
+//	@Param			mcp	body		[]model.PublicMCP	true	"MCP object"
+//	@Success		200	{object}	middleware.APIResponse
+//	@Router			/api/mcp/public/ [put]
+func SavePublicMCPs(c *gin.Context) {
+	var mcps []SavePublicMCPRequest
+	if err := c.ShouldBindJSON(&mcps); err != nil {
+		middleware.ErrorResponse(c, http.StatusBadRequest, err.Error())
+		return
+	}
+
+	pmcps := make([]model.PublicMCP, len(mcps))
+	for i, mcp := range mcps {
+		pmcps[i] = mcp.PublicMCP
+	}
+
+	if err := model.SavePublicMCPs(pmcps); err != nil {
+		middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error())
+		return
+	}
+
+	middleware.SuccessResponse(c, nil)
+}
+
 type UpdatePublicMCPStatusRequest struct {
 	Status model.PublicMCPStatus `json:"status"`
 }
@@ -261,7 +337,7 @@ func UpdatePublicMCPStatus(c *gin.Context) {
 //	@Param			id	path		string			true	"MCP ID"
 //	@Param			mcp	body		model.PublicMCP	true	"MCP object"
 //	@Success		200	{object}	middleware.APIResponse{data=PublicMCPResponse}
-//	@Router			/api/mcp/public/{id} [put]
+//	@Router			/api/mcp/public/{id} [post]
 func UpdatePublicMCP(c *gin.Context) {
 	id := c.Param("id")
 	if id == "" {

+ 96 - 0
core/docs/docs.go

@@ -3759,6 +3759,46 @@ const docTemplate = `{
                     }
                 }
             },
+            "put": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "description": "Save a list of MCPs",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "mcp"
+                ],
+                "summary": "Save MCPs",
+                "parameters": [
+                    {
+                        "description": "MCP object",
+                        "name": "mcp",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/model.PublicMCP"
+                            }
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/middleware.APIResponse"
+                        }
+                    }
+                }
+            },
             "post": {
                 "security": [
                     {
@@ -3903,6 +3943,62 @@ const docTemplate = `{
                 }
             },
             "put": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "description": "Save a MCP",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "mcp"
+                ],
+                "summary": "Save MCP",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "description": "MCP ID",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    },
+                    {
+                        "description": "MCP object",
+                        "name": "mcp",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/model.PublicMCP"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/middleware.APIResponse"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/controller.PublicMCPResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            },
+            "post": {
                 "security": [
                     {
                         "ApiKeyAuth": []

+ 96 - 0
core/docs/swagger.json

@@ -3750,6 +3750,46 @@
                     }
                 }
             },
+            "put": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "description": "Save a list of MCPs",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "mcp"
+                ],
+                "summary": "Save MCPs",
+                "parameters": [
+                    {
+                        "description": "MCP object",
+                        "name": "mcp",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/model.PublicMCP"
+                            }
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/middleware.APIResponse"
+                        }
+                    }
+                }
+            },
             "post": {
                 "security": [
                     {
@@ -3894,6 +3934,62 @@
                 }
             },
             "put": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "description": "Save a MCP",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "mcp"
+                ],
+                "summary": "Save MCP",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "description": "MCP ID",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    },
+                    {
+                        "description": "MCP object",
+                        "name": "mcp",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/model.PublicMCP"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/middleware.APIResponse"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/controller.PublicMCPResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            },
+            "post": {
                 "security": [
                     {
                         "ApiKeyAuth": []

+ 59 - 1
core/docs/swagger.yaml

@@ -4461,6 +4461,31 @@ paths:
       summary: Create MCP
       tags:
       - mcp
+    put:
+      consumes:
+      - application/json
+      description: Save a list of MCPs
+      parameters:
+      - description: MCP object
+        in: body
+        name: mcp
+        required: true
+        schema:
+          items:
+            $ref: '#/definitions/model.PublicMCP'
+          type: array
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/middleware.APIResponse'
+      security:
+      - ApiKeyAuth: []
+      summary: Save MCPs
+      tags:
+      - mcp
   /api/mcp/public/{id}:
     delete:
       description: Delete an MCP by ID
@@ -4507,7 +4532,7 @@ paths:
       summary: Get MCP by ID
       tags:
       - mcp
-    put:
+    post:
       consumes:
       - application/json
       description: Update an existing MCP
@@ -4540,6 +4565,39 @@ paths:
       summary: Update MCP
       tags:
       - mcp
+    put:
+      consumes:
+      - application/json
+      description: Save a MCP
+      parameters:
+      - description: MCP ID
+        in: path
+        name: id
+        required: true
+        type: string
+      - description: MCP object
+        in: body
+        name: mcp
+        required: true
+        schema:
+          $ref: '#/definitions/model.PublicMCP'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            allOf:
+            - $ref: '#/definitions/middleware.APIResponse'
+            - properties:
+                data:
+                  $ref: '#/definitions/controller.PublicMCPResponse'
+              type: object
+      security:
+      - ApiKeyAuth: []
+      summary: Save MCP
+      tags:
+      - mcp
   /api/mcp/public/{id}/group/{group}/params:
     get:
       description: Get reusing parameters for a specific group and MCP

+ 3 - 0
core/model/option.go

@@ -91,6 +91,7 @@ func initOptionMap() error {
 	}
 	optionMap["GroupConsumeLevelRatio"] = conv.BytesToString(groupConsumeLevelRatioJSON)
 	optionMap["NotifyNote"] = config.GetNotifyNote()
+	optionMap["DefaultMCPHost"] = config.GetDefaultMCPHost()
 	optionMap["PublicMCPHost"] = config.GetPublicMCPHost()
 	optionMap["GroupMCPHost"] = config.GetGroupMCPHost()
 
@@ -340,6 +341,8 @@ func updateOption(key, value string, isInit bool) (err error) {
 		config.SetGroupConsumeLevelRatio(newGroupRpmRatioMap)
 	case "NotifyNote":
 		config.SetNotifyNote(value)
+	case "DefaultMCPHost":
+		config.SetDefaultMCPHost(value)
 	case "PublicMCPHost":
 		config.SetPublicMCPHost(value)
 	case "GroupMCPHost":

+ 25 - 1
core/model/publicmcp.go

@@ -228,7 +228,31 @@ func SavePublicMCP(mcp *PublicMCP) (err error) {
 		}
 	}()
 
-	return DB.Save(mcp).Error
+	return DB.
+		Omit(
+			"created_at",
+			"update_at",
+		).
+		Save(mcp).Error
+}
+
+func SavePublicMCPs(msps []PublicMCP) (err error) {
+	defer func() {
+		if err == nil {
+			for _, mcp := range msps {
+				if err := CacheDeletePublicMCP(mcp.ID); err != nil {
+					log.Error("cache delete public mcp error: " + err.Error())
+				}
+			}
+		}
+	}()
+
+	return DB.
+		Omit(
+			"created_at",
+			"update_at",
+		).
+		Save(msps).Error
 }
 
 // UpdatePublicMCP updates an existing MCP

+ 3 - 1
core/router/api.go

@@ -192,7 +192,9 @@ func SetAPIRouter(router *gin.Engine) {
 			publicMcpRoute.GET("/all", mcp.GetAllPublicMCPs)
 			publicMcpRoute.GET("/:id", mcp.GetPublicMCPByID)
 			publicMcpRoute.POST("/", mcp.CreatePublicMCP)
-			publicMcpRoute.PUT("/:id", mcp.UpdatePublicMCP)
+			publicMcpRoute.PUT("/", mcp.SavePublicMCPs)
+			publicMcpRoute.POST("/:id", mcp.UpdatePublicMCP)
+			publicMcpRoute.PUT("/:id", mcp.SavePublicMCP)
 			publicMcpRoute.DELETE("/:id", mcp.DeletePublicMCP)
 			publicMcpRoute.POST("/:id/status", mcp.UpdatePublicMCPStatus)
 			publicMcpRoute.GET("/:id/group/:group/params", mcp.GetGroupPublicMCPReusingParam)

+ 178 - 0
mcp-servers/ableton/README.cn.md

@@ -0,0 +1,178 @@
+# AbletonMCP - Ableton Live 模型上下文协议集成
+
+> <https://github.com/ahujasid/ableton-mcp>
+
+AbletonMCP 通过模型上下文协议(MCP)将 Ableton Live 连接到 Claude AI,允许 Claude 直接与 Ableton Live 交互并控制它。这种集成实现了提示辅助的音乐制作、音轨创建和 Live 会话操作。
+
+### 加入社区
+
+提供反馈、获得灵感,并在 MCP 基础上构建:[Discord](https://discord.gg/3ZrMyGKnaU)。由 [Siddharth](https://x.com/sidahuj) 制作
+
+## 功能特性
+
+- **双向通信**:通过基于套接字的服务器将 Claude AI 连接到 Ableton Live
+- **音轨操作**:创建、修改和操作 MIDI 和音频音轨
+- **乐器和效果选择**:Claude 可以访问并从 Ableton 的音色库中加载正确的乐器、效果和声音
+- **片段创建**:创建和编辑带有音符的 MIDI 片段
+- **会话控制**:开始和停止播放、触发片段以及控制传输
+
+## 组件
+
+系统由两个主要组件组成:
+
+1. **Ableton 远程脚本** (`Ableton_Remote_Script/__init__.py`):Ableton Live 的 MIDI 远程脚本,创建套接字服务器来接收和执行命令
+2. **MCP 服务器** (`server.py`):实现模型上下文协议并连接到 Ableton 远程脚本的 Python 服务器
+
+## 安装
+
+### 通过 Smithery 安装
+
+通过 [Smithery](https://smithery.ai/server/@ahujasid/ableton-mcp) 自动为 Claude Desktop 安装 Ableton Live 集成:
+
+```bash
+npx -y @smithery/cli install @ahujasid/ableton-mcp --client claude
+```
+
+### 前提条件
+
+- Ableton Live 10 或更新版本
+- Python 3.8 或更新版本
+- [uv 包管理器](https://astral.sh/uv)
+
+如果您使用 Mac,请按以下方式安装 uv:
+
+```
+brew install uv
+```
+
+否则,请从 [uv 官方网站](https://docs.astral.sh/uv/getting-started/installation/) 安装
+
+⚠️ 安装 UV 之前请勿继续
+
+### Claude Desktop 集成
+
+[观看设置说明视频](https://youtu.be/iJWJqyVuPS8)
+
+1. 转到 Claude > 设置 > 开发者 > 编辑配置 > claude_desktop_config.json,包含以下内容:
+
+```json
+{
+    "mcpServers": {
+        "AbletonMCP": {
+            "command": "uvx",
+            "args": [
+                "ableton-mcp"
+            ]
+        }
+    }
+}
+```
+
+### Cursor 集成
+
+通过 uvx 运行 ableton-mcp 而无需永久安装。转到 Cursor 设置 > MCP 并将此作为命令粘贴:
+
+```
+uvx ableton-mcp
+```
+
+⚠️ 只运行一个 MCP 服务器实例(Claude Desktop 或 Cursor),不要同时运行两个
+
+### 安装 Ableton 远程脚本
+
+[观看设置说明视频](https://youtu.be/iJWJqyVuPS8)
+
+1. 从此仓库下载 `AbletonMCP_Remote_Script/__init__.py` 文件
+
+2. 将文件夹复制到 Ableton 的 MIDI 远程脚本目录。不同的操作系统和版本有不同的位置。**其中一个应该有效,您可能需要查找**:
+
+   **对于 macOS:**
+   - 方法 1:转到应用程序 > 右键单击 Ableton Live 应用 → 显示包内容 → 导航到:
+     `Contents/App-Resources/MIDI Remote Scripts/`
+   - 方法 2:如果第一种方法中没有,请使用直接路径(将 XX 替换为您的版本号):
+     `/Users/[用户名]/Library/Preferences/Ableton/Live XX/User Remote Scripts`
+
+   **对于 Windows:**
+   - 方法 1:
+     C:\Users\[用户名]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts
+   - 方法 2:
+     `C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\`
+   - 方法 3:
+     `C:\Program Files\Ableton\Live XX\Resources\MIDI Remote Scripts\`
+   *注意:将 XX 替换为您的 Ableton 版本号(例如,10、11、12)*
+
+3. 在远程脚本目录中创建一个名为 'AbletonMCP' 的文件夹,并粘贴下载的 '\_\_init\_\_.py' 文件
+
+4. 启动 Ableton Live
+
+5. 转到设置/首选项 → 链接、节拍和 MIDI
+
+6. 在控制面板下拉菜单中,选择 "AbletonMCP"
+
+7. 将输入和输出设置为 "无"
+
+## 使用方法
+
+### 启动连接
+
+1. 确保 Ableton 远程脚本已在 Ableton Live 中加载
+2. 确保 MCP 服务器已在 Claude Desktop 或 Cursor 中配置
+3. 当您与 Claude 交互时,连接应该会自动建立
+
+### 与 Claude 一起使用
+
+一旦在 Claude 上设置了配置文件,并且远程脚本在 Ableton 中运行,您将看到一个带有 Ableton MCP 工具的锤子图标。
+
+## 功能
+
+- 获取会话和音轨信息
+- 创建和修改 MIDI 和音频音轨
+- 创建、编辑和触发片段
+- 控制播放
+- 从 Ableton 的浏览器加载乐器和效果
+- 向 MIDI 片段添加音符
+- 更改节拍和其他会话参数
+
+## 示例命令
+
+以下是您可以要求 Claude 执行的一些示例:
+
+- "创建一个 80 年代合成波音轨" [演示](https://youtu.be/VH9g66e42XA)
+- "创建一个 Metro Boomin 风格的嘻哈节拍"
+- "创建一个带有合成贝斯乐器的新 MIDI 音轨"
+- "为我的鼓添加混响"
+- "创建一个 4 小节的 MIDI 片段,包含简单的旋律"
+- "获取当前 Ableton 会话的信息"
+- "将 808 鼓架加载到选定的音轨中"
+- "向音轨 1 的片段添加爵士和弦进行"
+- "将节拍设置为 120 BPM"
+- "播放音轨 2 中的片段"
+
+## 故障排除
+
+- **连接问题**:确保 Ableton 远程脚本已加载,并且 MCP 服务器已在 Claude 上配置
+- **超时错误**:尝试简化您的请求或将其分解为更小的步骤
+- **试过重启吗?**:如果您仍然遇到连接错误,请尝试重启 Claude 和 Ableton Live
+
+## 技术细节
+
+### 通信协议
+
+系统使用基于 TCP 套接字的简单 JSON 协议:
+
+- 命令作为带有 `type` 和可选 `params` 的 JSON 对象发送
+- 响应是带有 `status` 和 `result` 或 `message` 的 JSON 对象
+
+### 限制和安全考虑
+
+- 创建复杂的音乐编排可能需要分解为更小的步骤
+- 该工具设计用于 Ableton 的默认设备和浏览器项目
+- 在进行大量实验之前,请始终保存您的工作
+
+## 贡献
+
+欢迎贡献!请随时提交拉取请求。
+
+## 免责声明
+
+这是第三方集成,不是由 Ableton 制作的。

+ 178 - 0
mcp-servers/ableton/README.md

@@ -0,0 +1,178 @@
+# AbletonMCP - Ableton Live Model Context Protocol Integration
+
+> <https://github.com/ahujasid/ableton-mcp>
+
+AbletonMCP connects Ableton Live to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Ableton Live. This integration enables prompt-assisted music production, track creation, and Live session manipulation.
+
+### Join the Community
+
+Give feedback, get inspired, and build on top of the MCP: [Discord](https://discord.gg/3ZrMyGKnaU). Made by [Siddharth](https://x.com/sidahuj)
+
+## Features
+
+- **Two-way communication**: Connect Claude AI to Ableton Live through a socket-based server
+- **Track manipulation**: Create, modify, and manipulate MIDI and audio tracks
+- **Instrument and effect selection**: Claude can access and load the right instruments, effects and sounds from Ableton's library
+- **Clip creation**: Create and edit MIDI clips with notes
+- **Session control**: Start and stop playback, fire clips, and control transport
+
+## Components
+
+The system consists of two main components:
+
+1. **Ableton Remote Script** (`Ableton_Remote_Script/__init__.py`): A MIDI Remote Script for Ableton Live that creates a socket server to receive and execute commands
+2. **MCP Server** (`server.py`): A Python server that implements the Model Context Protocol and connects to the Ableton Remote Script
+
+## Installation
+
+### Installing via Smithery
+
+To install Ableton Live Integration for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@ahujasid/ableton-mcp):
+
+```bash
+npx -y @smithery/cli install @ahujasid/ableton-mcp --client claude
+```
+
+### Prerequisites
+
+- Ableton Live 10 or newer
+- Python 3.8 or newer
+- [uv package manager](https://astral.sh/uv)
+
+If you're on Mac, please install uv as:
+
+```
+brew install uv
+```
+
+Otherwise, install from [uv's official website][https://docs.astral.sh/uv/getting-started/installation/]
+
+⚠️ Do not proceed before installing UV
+
+### Claude for Desktop Integration
+
+[Follow along with the setup instructions video](https://youtu.be/iJWJqyVuPS8)
+
+1. Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
+
+```json
+{
+    "mcpServers": {
+        "AbletonMCP": {
+            "command": "uvx",
+            "args": [
+                "ableton-mcp"
+            ]
+        }
+    }
+}
+```
+
+### Cursor Integration
+
+Run ableton-mcp without installing it permanently through uvx. Go to Cursor Settings > MCP and paste this as a command:
+
+```
+uvx ableton-mcp
+```
+
+⚠️ Only run one instance of the MCP server (either on Cursor or Claude Desktop), not both
+
+### Installing the Ableton Remote Script
+
+[Follow along with the setup instructions video](https://youtu.be/iJWJqyVuPS8)
+
+1. Download the `AbletonMCP_Remote_Script/__init__.py` file from this repo
+
+2. Copy the folder to Ableton's MIDI Remote Scripts directory. Different OS and versions have different locations. **One of these should work, you might have to look**:
+
+   **For macOS:**
+   - Method 1: Go to Applications > Right-click on Ableton Live app → Show Package Contents → Navigate to:
+     `Contents/App-Resources/MIDI Remote Scripts/`
+   - Method 2: If it's not there in the first method, use the direct path (replace XX with your version number):
+     `/Users/[Username]/Library/Preferences/Ableton/Live XX/User Remote Scripts`
+
+   **For Windows:**
+   - Method 1:
+     C:\Users\[Username]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts
+   - Method 2:
+     `C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\`
+   - Method 3:
+     `C:\Program Files\Ableton\Live XX\Resources\MIDI Remote Scripts\`
+   *Note: Replace XX with your Ableton version number (e.g., 10, 11, 12)*
+
+4. Create a folder called 'AbletonMCP' in the Remote Scripts directory and paste the downloaded '\_\_init\_\_.py' file
+
+3. Launch Ableton Live
+
+4. Go to Settings/Preferences → Link, Tempo & MIDI
+
+5. In the Control Surface dropdown, select "AbletonMCP"
+
+6. Set Input and Output to "None"
+
+## Usage
+
+### Starting the Connection
+
+1. Ensure the Ableton Remote Script is loaded in Ableton Live
+2. Make sure the MCP server is configured in Claude Desktop or Cursor
+3. The connection should be established automatically when you interact with Claude
+
+### Using with Claude
+
+Once the config file has been set on Claude, and the remote script is running in Ableton, you will see a hammer icon with tools for the Ableton MCP.
+
+## Capabilities
+
+- Get session and track information
+- Create and modify MIDI and audio tracks
+- Create, edit, and trigger clips
+- Control playback
+- Load instruments and effects from Ableton's browser
+- Add notes to MIDI clips
+- Change tempo and other session parameters
+
+## Example Commands
+
+Here are some examples of what you can ask Claude to do:
+
+- "Create an 80s synthwave track" [Demo](https://youtu.be/VH9g66e42XA)
+- "Create a Metro Boomin style hip-hop beat"
+- "Create a new MIDI track with a synth bass instrument"
+- "Add reverb to my drums"
+- "Create a 4-bar MIDI clip with a simple melody"
+- "Get information about the current Ableton session"
+- "Load a 808 drum rack into the selected track"
+- "Add a jazz chord progression to the clip in track 1"
+- "Set the tempo to 120 BPM"
+- "Play the clip in track 2"
+
+## Troubleshooting
+
+- **Connection issues**: Make sure the Ableton Remote Script is loaded, and the MCP server is configured on Claude
+- **Timeout errors**: Try simplifying your requests or breaking them into smaller steps
+- **Have you tried turning it off and on again?**: If you're still having connection errors, try restarting both Claude and Ableton Live
+
+## Technical Details
+
+### Communication Protocol
+
+The system uses a simple JSON-based protocol over TCP sockets:
+
+- Commands are sent as JSON objects with a `type` and optional `params`
+- Responses are JSON objects with a `status` and `result` or `message`
+
+### Limitations & Security Considerations
+
+- Creating complex musical arrangements might need to be broken down into smaller steps
+- The tool is designed to work with Ableton's default devices and browser items
+- Always save your work before extensive experimentation
+
+## Contributing
+
+Contributions are welcome! Please feel free to submit a Pull Request.
+
+## Disclaimer
+
+This is a third-party integration and not made by Ableton.

+ 38 - 0
mcp-servers/ableton/init.go

@@ -0,0 +1,38 @@
+package ableton
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"ableton",
+			"Ableton",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Ableton"),
+			mcpservers.WithTags([]string{"music"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/ahujasid/ableton-mcp",
+			),
+			mcpservers.WithDescription(
+				"Connects Ableton Live to Claude AI through the Model Context Protocol (MCP), allowing Claude to interact with and control Ableton Live directly, enabling AI-assisted music production.",
+			),
+			mcpservers.WithDescriptionCN(
+				"通过模型上下文协议将Ableton Live与Claude AI连接起来,通过允许Claude直接与Ableton Live会话交互和控制,实现人工智能辅助的音乐制作。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 144 - 0
mcp-servers/academic-search/README.cn.md

@@ -0,0 +1,144 @@
+# 学术论文搜索 MCP 服务器
+
+一个[模型上下文协议 (MCP)](https://www.anthropic.com/news/model-context-protocol) 服务器,可以从多个来源搜索和检索学术论文信息。
+
+该服务器为大语言模型提供:
+
+- 实时学术论文搜索功能
+- 访问论文元数据和摘要
+- 在可用时检索全文内容的能力
+- 遵循 MCP 规范的结构化数据响应
+
+虽然主要设计用于与 Anthropic 的 Claude Desktop 客户端集成,但 MCP 规范允许与其他支持工具/函数调用功能的 AI 模型和客户端潜在兼容(例如 OpenAI 的 API)。
+
+**注意**:此软件正在积极开发中。功能和特性可能会发生变化。
+
+<a href="https://glama.ai/mcp/servers/kzsu1zzz9j"><img width="380" height="200" src="https://glama.ai/mcp/servers/kzsu1zzz9j/badge" alt="学术论文搜索服务器 MCP 服务器" /></a>
+
+## 功能特性
+
+该服务器提供以下工具:
+
+- `search_papers`:跨多个来源搜索学术论文
+  - 参数:
+    - `query`(字符串):搜索查询文本
+    - `limit`(整数,可选):返回结果的最大数量(默认:10)
+  - 返回:包含论文详情的格式化字符串
+  
+- `fetch_paper_details`:检索特定论文的详细信息
+  - 参数:
+    - `paper_id`(字符串):论文标识符(DOI 或 Semantic Scholar ID)
+    - `source`(字符串,可选):数据源("crossref" 或 "semantic_scholar",默认:"crossref")
+  - 返回:包含全面论文元数据的格式化字符串,包括:
+    - 标题、作者、年份、DOI
+    - 期刊、开放获取状态、PDF URL(仅限 Semantic Scholar)
+    - 摘要和 TL;DR 总结(如有)
+
+- `search_by_topic`:按主题搜索论文,可选择日期范围过滤
+  - 参数:
+    - `topic`(字符串):搜索查询文本(限制为 300 个字符)
+    - `year_start`(整数,可选):日期范围的开始年份
+    - `year_end`(整数,可选):日期范围的结束年份
+    - `limit`(整数,可选):返回结果的最大数量(默认:10)
+  - 返回:包含搜索结果的格式化字符串,包括:
+    - 论文标题、作者和年份
+    - 摘要和 TL;DR 总结(如有)
+    - 期刊和开放获取信息
+
+## 设置
+
+### 通过 Smithery 安装
+
+通过 [Smithery](https://smithery.ai/server/@afrise/academic-search-mcp-server) 自动为 Claude Desktop 安装学术论文搜索服务器:
+
+```bash
+npx -y @smithery/cli install @afrise/academic-search-mcp-server --client claude
+```
+
+***注意*** 此方法基本未经测试,因为他们的服务器似乎存在问题。您可以按照独立安装说明进行操作,直到 smithery 修复为止。
+
+### 通过 uv 安装(手动安装)
+
+1. 安装依赖项:
+
+```sh
+uv add "mcp[cli]" httpx
+```
+
+2. 在环境或 `.env` 文件中设置所需的 API 密钥:
+
+```sh
+# 这些实际上尚未实现
+SEMANTIC_SCHOLAR_API_KEY=your_key_here 
+CROSSREF_API_KEY=your_key_here  # 可选但推荐
+```
+
+3. 运行服务器:
+
+```sh
+uv run server.py
+```
+
+## 与 Claude Desktop 一起使用
+
+1. 将服务器添加到您的 Claude Desktop 配置(`claude_desktop_config.json`):
+
+```json
+{
+  "mcpServers": {
+    "academic-search": {
+      "command": "uv",
+      "args": ["run ", "/path/to/server/server.py"],
+      "env": {
+        "SEMANTIC_SCHOLAR_API_KEY": "your_key_here",
+        "CROSSREF_API_KEY": "your_key_here"
+      }
+    }
+  }
+}
+```
+
+2. 重启 Claude Desktop
+
+## 开发
+
+该服务器使用以下技术构建:
+
+- Python MCP SDK
+- FastMCP 用于简化服务器实现
+- httpx 用于 API 请求
+
+## API 来源
+
+- Semantic Scholar API
+- Crossref API
+
+## 许可证
+
+本项目采用 GNU Affero 通用公共许可证 v3.0 (AGPL-3.0) 许可。此许可证确保:
+
+- 您可以自由使用、修改和分发此软件
+- 任何修改都必须在相同许可证下开源
+- 任何使用此软件提供网络服务的人都必须提供源代码
+- 允许商业使用,但软件和任何衍生作品必须保持免费和开源
+
+请参阅 [LICENSE](LICENSE) 文件获取完整许可证文本。
+
+## 贡献
+
+欢迎贡献!以下是您可以帮助的方式:
+
+1. Fork 仓库
+2. 创建功能分支(`git checkout -b feature/amazing-feature`)
+3. 提交您的更改(`git commit -m 'Add amazing feature'`)
+4. 推送到分支(`git push origin feature/amazing-feature`)
+5. 打开 Pull Request
+
+请注意:
+
+- 遵循现有的代码风格和约定
+- 为任何新功能添加测试
+- 根据需要更新文档
+- 确保您的更改遵守 AGPL-3.0 许可证条款
+
+通过为此项目做出贡献,您同意您的贡献将在 AGPL-3.0 许可证下获得许可。

+ 144 - 0
mcp-servers/academic-search/README.md

@@ -0,0 +1,144 @@
+# Academic Paper Search MCP Server
+
+A [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) server that enables searching and retrieving academic paper information from multiple sources.
+
+The server provides LLMs with:
+
+- Real-time academic paper search functionality  
+- Access to paper metadata and abstracts
+- Ability to retrieve full-text content when available
+- Structured data responses following the MCP specification
+
+While primarily designed for integration with Anthropic's Claude Desktop client, the MCP specification allows for potential compatibility with other AI models and clients that support tool/function calling capabilities (e.g. OpenAI's API).
+
+**Note**: This software is under active development. Features and functionality are subject to change.
+
+<a href="https://glama.ai/mcp/servers/kzsu1zzz9j"><img width="380" height="200" src="https://glama.ai/mcp/servers/kzsu1zzz9j/badge" alt="Academic Paper Search Server MCP server" /></a>
+
+## Features
+
+This server exposes the following tools:
+
+- `search_papers`: Search for academic papers across multiple sources
+  - Parameters:
+    - `query` (str): Search query text
+    - `limit` (int, optional): Maximum number of results to return (default: 10)
+  - Returns: Formatted string containing paper details
+  
+- `fetch_paper_details`: Retrieve detailed information for a specific paper
+  - Parameters:
+    - `paper_id` (str): Paper identifier (DOI or Semantic Scholar ID)
+    - `source` (str, optional): Data source ("crossref" or "semantic_scholar", default: "crossref")
+  - Returns: Formatted string with comprehensive paper metadata including:
+    - Title, authors, year, DOI
+    - Venue, open access status, PDF URL (Semantic Scholar only)
+    - Abstract and TL;DR summary (when available)
+
+- `search_by_topic`: Search for papers by topic with optional date range filter
+  - Parameters:
+    - `topic` (str): Search query text (limited to 300 characters)
+    - `year_start` (int, optional): Start year for date range
+    - `year_end` (int, optional): End year for date range
+    - `limit` (int, optional): Maximum number of results to return (default: 10)
+  - Returns: Formatted string containing search results including:
+    - Paper titles, authors, and years
+    - Abstracts and TL;DR summaries when available
+    - Venue and open access information
+
+## Setup
+
+### Installing via Smithery
+
+To install Academic Paper Search Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@afrise/academic-search-mcp-server):
+
+```bash
+npx -y @smithery/cli install @afrise/academic-search-mcp-server --client claude
+```
+
+***note*** this method is largely untested, as their server seems to be having trouble. you can follow the standalone instructions until smithery gets fixed.
+
+### Installing via uv (manual install)
+
+1. Install dependencies:
+
+```sh
+uv add "mcp[cli]" httpx
+```
+
+2. Set up required API keys in your environment or `.env` file:
+
+```sh
+#  These are not actually implemented
+SEMANTIC_SCHOLAR_API_KEY=your_key_here 
+CROSSREF_API_KEY=your_key_here  # Optional but recommended
+```
+
+3. Run the server:
+
+```sh
+uv run server.py
+```
+
+## Usage with Claude Desktop
+
+1. Add the server to your Claude Desktop configuration (`claude_desktop_config.json`):
+
+```json
+{
+  "mcpServers": {
+    "academic-search": {
+      "command": "uv",
+      "args": ["run ", "/path/to/server/server.py"],
+      "env": {
+        "SEMANTIC_SCHOLAR_API_KEY": "your_key_here",
+        "CROSSREF_API_KEY": "your_key_here"
+      }
+    }
+  }
+}
+```
+
+2. Restart Claude Desktop
+
+## Development
+
+This server is built using:
+
+- Python MCP SDK
+- FastMCP for simplified server implementation
+- httpx for API requests
+
+## API Sources
+
+- Semantic Scholar API
+- Crossref API
+
+## License
+
+This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This license ensures that:
+
+- You can freely use, modify, and distribute this software
+- Any modifications must be open-sourced under the same license
+- Anyone providing network services using this software must make the source code available
+- Commercial use is allowed, but the software and any derivatives must remain free and open source
+
+See the [LICENSE](LICENSE) file for the full license text.
+
+## Contributing
+
+Contributions are welcome! Here's how you can help:
+
+1. Fork the repository
+2. Create a feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
+
+Please note:
+
+- Follow the existing code style and conventions
+- Add tests for any new functionality
+- Update documentation as needed
+- Ensure your changes respect the AGPL-3.0 license terms
+
+By contributing to this project, you agree that your contributions will be licensed under the AGPL-3.0 license.

+ 38 - 0
mcp-servers/academic-search/init.go

@@ -0,0 +1,38 @@
+package academicsearch
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"academic-search",
+			"Academic Search",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("学术搜索"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/afrise/academic-search-mcp-server",
+			),
+			mcpservers.WithTags([]string{"academic", "search"}),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server that allows LLMs to search for academic papers using natural language.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一个通过自然语言搜索学术论文的MCP服务器。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 274 - 0
mcp-servers/alibabacloud-dms/README.cn.md

@@ -0,0 +1,274 @@
+<!-- 顶部语言切换 -->
+
+# AlibabaCloud DMS MCP Server
+
+**AI 首选的统一数据管理网关,支持40多种数据源**连接的多云通用数据MCP Server,一站式解决**跨源数据安全访问**。
+
+- 支持阿里云全系:RDS、PolarDB、ADB系列、Lindorm系列、TableStore系列、Maxcompute系列。
+- 支持主流数据库/数仓:MySQL、MariaDB、PostgreSQL、Oracle、SQLServer、Redis、MongoDB、StarRocks、Clickhouse、SelectDB、DB2、OceanBase、Gauss、BigQuery等。
+
+<img src="../images/architecture-0508.jpg" alt="Architecture" width="60%">
+
+[//]: # (<img src="https://dms-static.oss-cn-hangzhou.aliyuncs.com/mcp-readme/architecture-0508.jpg" alt="Architecture" width="60%">)
+
+---
+
+## 核心特性
+
+为大模型提供统一的**数据接入层**与**元数据访问层**,通过标准化接口解决:  
+
+- 数据源碎片化导致的MCP Server维护成本  
+- 异构协议间的兼容性问题  
+- 账号权限不受控、操作无审计带来的安全问题  
+
+同时,通过MCP将获得以下特性:  
+
+- **NL2SQL**:通过自然语言执行SQL,获得数据结果  
+- **代码生成**:通过该服务获取schema信息,生成DAO代码或进行结构分析  
+- **取数**:通过SQL自动路由准确数据源获得数据,为上层业务提供数据支持  
+- **安全**:精细的访问控制和可审计性
+- **数据迁移**:配置数据迁移任务
+
+---
+
+## 使用方式
+
+DMS MCP Server 现在支持两种使用模式。
+
+### 模式一:多实例模式
+
+- 支持添加实例到DMS,可以访问多个数据库实例。
+- 适用于需要管理和访问多个数据库实例的场景。
+
+#### 场景示例
+
+你是公司的DBA,需要在生产、测试和开发等多个环境中管理和访问 MySQL、Oracle 和 PostgreSQL 等多种数据库实例。通过DMS MCP Server,可以实现对这些异构数据库的统一接入与集中管理。
+
+**典型提问示例:**  
+
+- 获取所有名称为test的数据库列表
+- 获取 myHost:myPort 实例中 test_db 数据库的详细信息。
+- test_db 数据库下有哪些表?
+- 使用工具, 查询test_db 库的数据,回答“今天的用户访问量是多少?”
+
+### 模式二:单数据库模式
+
+- 通过在SERVER中配置 CONNECTION_STRING 参数(格式为 dbName@host:port),直接指定需要访问的数据库。
+- 适用于专注一个数据库访问的场景。
+
+#### 场景示例
+
+你是一个开发人员,只需要频繁访问一个固定的数据库(如 [email protected]:3306)进行开发测试。在 DMS MCP Server 的配置中设置一个 CONNECTION_STRING 参数,例如:
+
+```ini
+CONNECTION_STRING = [email protected]:3306
+```
+
+之后每次启动服务时,DMS MCP Server都会直接访问这个指定的数据库,无需切换实例。
+
+**典型提问示例:**  
+
+- 我有哪些表?
+- 查看test_table 表的字段结构
+- 获取test_table 表的前20条数据
+- 使用工具,回答“今天的用户访问量是多少?”
+
+---
+
+## 工具清单
+
+| 工具名称           | 描述                            | 适用模式                |
+|------------------|-------------------------------|----------------------|
+| addInstance      | 将阿里云实例添加到 DMS。                | 多实例模式              |
+| listInstances      | 搜索DMS中的实例列表。 | 多实例模式              |
+| getInstance      | 根据 host 和 port 获取实例详细信息。      | 多实例模式              |
+| searchDatabase    | 根据 schemaName 搜索数据库。          | 多实例模式              |
+| getDatabase      | 获取特定数据库的详细信息。                 | 多实例模式              |
+| listTable        | 搜索指定数据库下的数据表。                 | 多实例模式 & 单数据库模式 |
+| getTableDetailInfo | 获取特定数据库表的详细信息。                | 多实例模式 & 单数据库模式 |
+| executeScript    | 执行 SQL 脚本并返回结果。               | 多实例模式 & 单数据库模式 |
+| nl2sql           | 将自然语言问题转换为 SQL 查询。            | 多实例模式              |
+| askDatabase      | 自然语言查询数据库(NL2SQL + 执行 SQL)。   | 单数据库模式            |
+| configureDtsJob  | 配置DTS迁移任务                     | 多实例模式              |
+| startDtsJob      | 启动DTS迁移任务                     | 多实例模式              |
+| getDtsJob        | 查看DTS迁移任务详情                   | 多实例模式              |
+
+<p> 详细工具列表请查阅:<a href="/doc/Tool-List-cn.md">工具清单</a><br></p>
+
+---
+
+## 支持的数据源
+
+| DataSource/Tool       | **NL2SQL** *nlsql* | **Execute script** *executeScript* | **Show schema** *getTableDetailInfo* | **Access control** *default* | **Audit log** *default* |
+|-----------------------|----------------|---------------------------------|--------------------------------------|-----------------------------|------------------------|
+| MySQL                 | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| MariaDB               | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| PostgreSQL            | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Oracle                | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| SQLServer             | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Redis                 | ❌               | ❌                                | ✅                                    | ✅                           | ✅                      |
+| MongoDB               | ❌               | ❌                                | ✅                                    | ✅                           | ✅                      |
+| StarRocks             | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Clickhouse            | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| SelectDB              | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| DB2                   | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| OceanBase             | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Gauss                 | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| BigQuery              | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| PolarDB               | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| PolarDB-X             | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| AnalyticDB            | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Lindorm               | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| TableStore            | ❌               | ❌                                | ✅                                    | ✅                           | ✅                      |
+| Maxcompute            | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Hologres              | ✅              | ✅                               | ✅                                    | ✅                           | ✅                      |
+
+---
+
+## 前提条件
+
+- 已安装uv
+- 已安装Python 3.10+
+- 具有阿里云DMS访问权限(AliyunDMSFullAccess)的AK SK或者STS Token
+
+---
+
+## 准备工作
+
+在通过DMS MCP访问托管在DMS的数据库实例之前,需要将对应的数据库实例录入至DMS中,并为实例开启 [安全托管](https://help.aliyun.com/zh/dms/product-overview/security-hosting)。
+
+可以通过以下两种方式进行实例的添加:
+
+**方法一:使用DMS MCP 提供的 `addInstance` 工具添加实例**
+
+DMS MCP Server提供了 `addInstance` 工具,用于快速将实例添加到 DMS 中。
+
+详情请见“工具清单”中的 `addInstance`工具描述。
+
+**方法二:通过 DMS 控制台页面添加实例**
+
+1 登录 [DMS 控制台](https://dms.aliyun.com/)。
+
+2 在控制台首页左侧的数据库实例区域,单击**新增实例**图标。
+
+3 在新增实例页面,录入实例信息(如实例地址、端口、用户名、密码)。
+
+4 单击**提交**按钮完成实例添加。
+
+---
+
+## 快速开始
+
+### 方案一 使用源码运行
+
+#### 下载代码
+
+```bash
+git clone https://github.com/aliyun/alibabacloud-dms-mcp-server.git
+```
+
+#### 配置MCP客户端
+
+在配置文件中添加以下内容:
+
+**多实例模式**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uv",
+      "args": [
+        "--directory",
+        "/path/to/alibabacloud-dms-mcp-server/src/alibabacloud_dms_mcp_server",
+        "run",
+        "server.py"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token"
+      }
+    }
+  }
+}
+```
+
+**单数据库模式**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uv",
+      "args": [
+        "--directory",
+        "/path/to/alibabacloud-dms-mcp-server/src/alibabacloud_dms_mcp_server",
+        "run",
+        "server.py"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token",
+        "CONNECTION_STRING": "dbName@host:port"
+      }
+    }
+  }
+}
+```
+
+### 方案二 使用PyPI包运行
+
+**多实例模式**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uvx",
+      "args": [
+        "alibabacloud-dms-mcp-server@latest"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token"
+      }
+    }
+  }
+}
+```
+
+**单数据库模式**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uvx",
+      "args": [
+        "alibabacloud-dms-mcp-server@latest"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token",
+        "CONNECTION_STRING": "dbName@host:port"
+      }
+    }
+  }
+}
+```
+
+---
+
+## Contact us
+
+如果您有使用问题或建议, 请加入[Alibaba Cloud DMS MCP讨论组](https://h5.dingtalk.com/circle/joinCircle.html?corpId=dinga0bc5ccf937dad26bc961a6cb783455b&token=2f373e6778dcde124e1d3f22119a325b&groupCode=v1,k1,NqFGaQek4YfYPXVECdBUwn+OtL3y7IHStAJIO0no1qY=&from=group&ext=%7B%22channel%22%3A%22QR_GROUP_NORMAL%22%2C%22extension%22%3A%7B%22groupCode%22%3A%22v1%2Ck1%2CNqFGaQek4YfYPXVECdBUwn%2BOtL3y7IHStAJIO0no1qY%3D%22%2C%22groupFrom%22%3A%22group%22%7D%2C%22inviteId%22%3A2823675041%2C%22orgId%22%3A784037757%2C%22shareType%22%3A%22GROUP%22%7D&origin=11) (钉钉群号:129600002740) 进行讨论.
+
+[//]: # (<img src="http://dms-static.oss-cn-hangzhou.aliyuncs.com/mcp-readme/ding-zh-cn.jpg" alt="DingTalk" width="60%">)
+
+## License
+
+This project is licensed under the Apache 2.0 License.

+ 269 - 0
mcp-servers/alibabacloud-dms/README.md

@@ -0,0 +1,269 @@
+<!-- 顶部语言切换 -->
+
+# AlibabaCloud DMS MCP Server
+
+**AI-powered unified data management gateway** that supports connection to over 40+ data sources, serving as a multi-cloud universal data MCP Server to address cross-source data secure access in one-stop solution.
+
+- Supports full Alibaba Cloud series: RDS, PolarDB, ADB series, Lindorm series, TableStore series, MaxCompute series.
+- Supports mainstream databases/warehouses: MySQL, MariaDB, PostgreSQL, Oracle, SQLServer, Redis, MongoDB, StarRocks, Clickhouse, SelectDB, DB2, OceanBase, Gauss, BigQuery, etc.
+
+<img src="images/architecture-0508.jpg" alt="Architecture" width="60%">
+
+[//]: # (<img src="https://dms-static.oss-cn-hangzhou.aliyuncs.com/mcp-readme/architecture-0508.jpg" alt="Architecture" width="60%">)
+
+---
+
+## Core Features
+
+Provides AI with a unified **data access layer** and **metadata access layer**, solving through standardized interfaces:
+
+- Maintenance costs caused by data source fragmentation
+- Compatibility issues between heterogeneous protocols
+- Security risks from uncontrolled account permissions and non-auditable operations
+
+Key features via MCP include:
+
+- **NL2SQL**: Execute SQL via natural language to obtain data results
+- **Code Generation**: Retrieve schema information through this service to generate DAO code or perform structural analysis
+- **Data Retrieval**: Automatically route SQL to accurate data sources for business support
+- **Security**: Fine-grained access control and auditability
+- **Data Migration**: Configure data migration tasks
+
+---
+
+## Usage Methods  
+
+DMS MCP Server currently supports two usage modes.
+
+### Mode One: Multi-instance Mode  
+
+- Supports adding instances to DMS, allowing access to multiple database instances.  
+- Suitable for scenarios where managing and accessing multiple database instances is required.  
+
+#### Scenario Example  
+
+You are a company DBA who needs to manage and access various types of database instances (e.g., MySQL, Oracle, PostgreSQL) in production, test, and development environments. With DMS MCP Server, you can achieve unified access and centralized management of these heterogeneous databases.  
+
+**Typical Question Examples:**  
+
+- Get a list of all databases named `test`.  
+- Retrieve details of the `test_db` database from the `myHost:myPort` instance.  
+- What tables are in the `test_db` database?  
+- Use a tool to query data from the `test_db` database and answer: "What is today's user traffic?"
+
+### Mode Two: Single Database Mode  
+
+- Directly specify the target database by configuring the `CONNECTION_STRING` parameter in the server (format: `dbName@host:port`).  
+- Suitable for scenarios that focus on accessing a single database.  
+
+#### Scenario Example  
+
+You are a developer who frequently accesses a fixed database (e.g., `[email protected]:3306`) for development and testing. Set the `CONNECTION_STRING` parameter in the DMS MCP Server configuration as follows:  
+
+```ini
+CONNECTION_STRING = [email protected]:3306
+```
+
+Afterward, every time the service starts, the DMS MCP Server will directly access this specified database without needing to switch instances.
+
+**Typical Question Examples:**  
+
+- What tables do I have?  
+- Show the field structure of the `test_table` table.  
+- Retrieve the first 20 rows from the `test_table` table.  
+- Use a tool to answer: "What is today's user traffic?"
+
+---
+
+## Tool List  
+
+| Tool Name          | Description                                                                                                               | Applicable Mode                |
+|--------------------|---------------------------------------------------------------------------------------------------------------------------|-------------------------------|
+| addInstance        | Adds an instance to DMS. Only Aliyun instances are supported. | Multi-instance Mode            |
+| listInstances      | Search for instances from DMS.                                                                                            | Multi-instance Mode            |
+| getInstance        | Retrieves detailed information about an instance based on host and port.                                                  | Multi-instance Mode            |
+| searchDatabase     | Searches databases based on schemaName.                                                                                   | Multi-instance Mode            |
+| getDatabase        | Retrieves detailed information about a specific database.                                                                 | Multi-instance Mode            |
+| listTable          | Lists tables under a specified database.                                                                                  | Multi-instance Mode & Single Database Mode |
+| getTableDetailInfo | Retrieves detailed information about a specific table.                                                                    | Multi-instance Mode & Single Database Mode |
+| executeScript      | Executes an SQL script and returns the result.                                                                            | Multi-instance Mode & Single Database Mode |
+| nl2sql             | Converts natural language questions into SQL queries.                                                                     | Multi-instance Mode            |
+| askDatabase        | Natural language querying of a database (NL2SQL + execute SQL).                                                           | Single Database Mode           |
+| configureDtsJob    | Configures a DTS migration task                                                                                           | Multi-instance Mode            |
+| startDtsJob        | Starts a DTS migration task                                                                                               | Multi-instance Mode            |
+| getDtsJob          | Views details of a DTS migration task                                                                                     | Multi-instance Mode            |
+
+<p> For a full list of tools, please refer to: <a href="/doc/Tool-List-en.md">Tool List</a><br></p>
+
+---
+
+## Supported Data Sources
+
+| DataSource/Tool       | **NL2SQL** *nlsql* | **Execute script** *executeScript* | **Show schema** *getTableDetailInfo* | **Access control** *default* | **Audit log** *default* |
+|-----------------------|-----------------|---------------------------------|--------------------------------------|-----------------------------|------------------------|
+| MySQL                 | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| MariaDB               | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| PostgreSQL            | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Oracle                | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| SQLServer             | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Redis                 | ❌               | ❌                                | ✅                                    | ✅                           | ✅                      |
+| MongoDB               | ❌               | ❌                                | ✅                                    | ✅                           | ✅                      |
+| StarRocks             | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Clickhouse            | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| SelectDB              | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| DB2                   | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| OceanBase             | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Gauss                 | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| BigQuery              | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| PolarDB               | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| PolarDB-X             | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| AnalyticDB            | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Lindorm               | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| TableStore            | ❌               | ❌                                | ✅                                    | ✅                           | ✅                      |
+| Maxcompute            | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+| Hologres              | ✅               | ✅                               | ✅                                    | ✅                           | ✅                      |
+
+---
+
+## Prerequisites  
+
+- uv is installed  
+- Python 3.10+ is installed  
+- An AK/SK or STS Token with access rights to Alibaba Cloud DMS(AliyunDMSFullAccess)
+
+---
+
+## Pre-configuration  
+
+Before accessing a database instance via DMS, you must first add the instance to DMS.  
+
+There are two methods to add an instance:
+
+**Method One: Use the `addInstance` tool provided by DMS MCP to add an instance**  
+The DMS MCP Server provides the `addInstance` tool for quickly adding an instance to DMS.  
+For more details, see the description of the `addInstance` tool in the "Tool List."  
+
+**Method Two: Add an instance via the DMS console**  
+
+1. Log in to the [DMS Console](https://dms.aliyun.com/).  
+2. On the home page of the console, click the **Add Instance** icon in the database instance area on the left.  
+3. On the Add Instance page, enter the instance information (e.g., instance address, port, username, password).  
+4. Click **Submit** to complete the instance addition.  
+
+---
+
+## Getting Started
+
+### Option 1: Run from Source Code
+
+#### Download the Code
+
+```bash
+git clone https://github.com/aliyun/alibabacloud-dms-mcp-server.git
+```
+
+#### Configure MCP Client
+
+Add the following content to the configuration file:
+
+**Multi-instance Mode**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uv",
+      "args": [
+        "--directory",
+        "/path/to/alibabacloud-dms-mcp-server/src/alibabacloud_dms_mcp_server",
+        "run",
+        "server.py"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token"
+      }
+    }
+  }
+}
+```
+
+**Single Database Mode**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uv",
+      "args": [
+        "--directory",
+        "/path/to/alibabacloud-dms-mcp-server/src/alibabacloud_dms_mcp_server",
+        "run",
+        "server.py"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token",
+        "CONNECTION_STRING": "dbName@host:port"
+      }
+    }
+  }
+}
+```
+
+### Option 2: Run via PyPI Package
+
+**Multi-instance Mode**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uvx",
+      "args": [
+        "alibabacloud-dms-mcp-server@latest"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token"
+      }
+    }
+  }
+}
+```
+
+**Single Database Mode**
+
+```json
+{
+  "mcpServers": {
+    "dms-mcp-server": {
+      "command": "uvx",
+      "args": [
+        "alibabacloud-dms-mcp-server@latest"
+      ],
+      "env": {
+        "ALIBABA_CLOUD_ACCESS_KEY_ID": "access_id",
+        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "access_key",
+        "ALIBABA_CLOUD_SECURITY_TOKEN": "sts_security_token optional, required when using STS Token",
+        "CONNECTION_STRING": "dbName@host:port"
+      }
+    }
+  }
+}
+```
+
+---
+
+## Contact us
+
+For any questions or suggestions, join the [Alibaba Cloud DMS MCP Group](https://h5.dingtalk.com/circle/joinCircle.html?corpId=dinga0bc5ccf937dad26bc961a6cb783455b&token=2f373e6778dcde124e1d3f22119a325b&groupCode=v1,k1,NqFGaQek4YfYPXVECdBUwn+OtL3y7IHStAJIO0no1qY=&from=group&ext=%7B%22channel%22%3A%22QR_GROUP_NORMAL%22%2C%22extension%22%3A%7B%22groupCode%22%3A%22v1%2Ck1%2CNqFGaQek4YfYPXVECdBUwn%2BOtL3y7IHStAJIO0no1qY%3D%22%2C%22groupFrom%22%3A%22group%22%7D%2C%22inviteId%22%3A2823675041%2C%22orgId%22%3A784037757%2C%22shareType%22%3A%22GROUP%22%7D&origin=11) (DingTalk Group ID: 129600002740) .
+
+[//]: # (<img src="http://dms-static.oss-cn-hangzhou.aliyuncs.com/mcp-readme/ding-en.jpg" alt="DingTalk" width="40%">)
+
+## License
+
+This project is licensed under the Apache 2.0 License.

+ 38 - 0
mcp-servers/alibabacloud-dms/init.go

@@ -0,0 +1,38 @@
+package alibabaclouddms
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"alibabacloud-dms",
+			"Alibaba Cloud DMS",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("阿里云DMS"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/aliyun/alibabacloud-dms-mcp-server",
+			),
+			mcpservers.WithTags([]string{"database"}),
+			mcpservers.WithDescription(
+				"The preferred unified data access channel for AI, supporting secure access to 30+ data sources (Alibaba Cloud全系/主流数据库/数仓).",
+			),
+			mcpservers.WithDescriptionCN(
+				"AI 首选的统一数据访问通道,支持30多种数据源(阿里云全系/主流数据库/数仓)的安全访问。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 68 - 0
mcp-servers/allvoicelab/README.cn.md

@@ -0,0 +1,68 @@
+# AllVoiceLab MCP 服务器
+
+> <https://github.com/allvoicelab/AllVoiceLab-MCP>
+
+官方 AllVoiceLab 模型上下文协议 (MCP) 服务器,支持与强大的文本转语音和视频翻译 API 交互。使 MCP 客户端如 Claude Desktop、Cursor、Windsurf、OpenAI Agents 能够生成语音、翻译视频并执行智能语音转换。适用于短剧全球市场本地化、AI 生成有声书、AI 驱动的影视旁白制作等场景。
+
+## 为什么选择 AllVoiceLab MCP 服务器?
+
+- 多引擎技术解锁语音无限可能:通过简单的文本输入,您可以访问视频生成、语音合成、语音克隆等功能。
+- AI 语音生成器 (TTS):支持 30+ 种语言的自然语音生成,具有超高真实感
+- 变声器:实时语音转换,非常适合游戏、直播和隐私保护
+- 人声分离:超快 5ms 人声和背景音乐分离,具有行业领先的精度
+- 多语言配音:一键翻译和配音短视频/电影,保持情感语调和节奏
+- 语音转文本 (STT):AI 驱动的多语言字幕生成,准确率超过 98%
+- 字幕移除:无缝硬字幕擦除,即使在复杂背景上也能完美处理
+- 语音克隆:3 秒超快克隆,具有类人语音合成
+
+## 快速开始
+
+1. 从 [AllVoiceLab](https://www.allvoicelab.com/) 获取您的 API 密钥。
+2. 安装 `uv`(Python 包管理器),使用 `curl -LsSf https://astral.sh/uv/install.sh | sh` 安装
+3. **重要**:不同地区 API 的服务器地址需要与相应地区的密钥匹配,否则会出现工具不可用的错误。
+
+|地区| 全球  | 中国大陆  |
+|:--|:-----|:-----|
+|ALLVOICELAB_API_KEY| 从 [AllVoiceLab](https://www.allvoicelab.com/workbench/api-keys) 获取 | 从 [AllVoiceLab](https://www.allvoicelab.cn/workbench/api-keys) 获取 |
+|ALLVOICELAB_API_DOMAIN| <https://api.allvoicelab.com> | <https://api.allvoicelab.cn> |
+
+### Claude Desktop
+
+转到 Claude > 设置 > 开发者 > 编辑配置 > claude_desktop_config.json 包含以下内容:
+
+```json
+{
+  "mcpServers": {
+    "AllVoiceLab": {
+      "command": "uvx",
+      "args": ["allvoicelab-mcp"],
+      "env": {
+        "ALLVOICELAB_API_KEY": "<在此插入您的API密钥>",
+        "ALLVOICELAB_API_DOMAIN": "<在此插入API域名>",
+        "ALLVOICELAB_BASE_PATH":"可选,默认为用户主目录。用于存储输出文件。"
+      }
+    }
+  }
+}
+```
+
+如果您使用的是 Windows,您需要在 Claude Desktop 中启用"开发者模式"才能使用 MCP 服务器。点击左上角汉堡菜单中的"帮助"并选择"启用开发者模式"。
+
+### Cursor
+
+转到 Cursor -> 首选项 -> Cursor 设置 -> MCP -> 添加新的全局 MCP 服务器,添加上述配置。
+
+就是这样。您的 MCP 客户端现在可以与 AllVoiceLab 交互了。
+
+## 可用方法
+
+| 方法 | 简要描述 |
+| --- | --- |
+| text_to_speech | 将文本转换为语音 |
+| speech_to_speech | 将音频转换为另一种声音,同时保留语音内容 |
+| isolate_human_voice | 通过去除背景噪音和非语音声音提取清晰的人声 |
+| clone_voice | 通过从音频样本克隆创建自定义语音配置文件 |
+| remove_subtitle | 使用 OCR 从视频中移除硬编码字幕 |
+| video_translation_dubbing | 将视频语音翻译并配音为不同语言 |
+| text_translation | 将文本文件翻译为另一种语言 |
+| subtitle_extraction | 使用 OCR 从视频中提取字幕 |

+ 67 - 0
mcp-servers/allvoicelab/README.md

@@ -0,0 +1,67 @@
+# AllVoiceLab MCP Server
+
+> <https://github.com/allvoicelab/AllVoiceLab-MCP>
+
+Official AllVoiceLab Model Context Protocol (MCP) server, supporting interaction with powerful text-to-speech and video translation APIs. Enables MCP clients like Claude Desktop, Cursor, Windsurf, OpenAI Agents to generate speech, translate videos, and perform intelligent voice conversion. Serves scenarios such as short drama localization for global markets, AI-Generated audiobooks, AI-Powered production of film/TV narration.
+
+## Why Choose AllVoiceLab MCP Server?
+
+- Multi-engine technology unlocks infinite possibilities for voice: With simple text input, you can access video generation, speech synthesis, voice cloning, and more.
+- AI Voice Generator (TTS): Natural voice generation in 30+ languages with ultra-high realism
+- Voice Changer: Real-time voice conversion, ideal for gaming, live streaming, and privacy protection
+- Vocal Separation: Ultra-fast 5ms separation of vocals and background music, with industry-leading precision
+- Multilingual Dubbing: One-click translation and dubbing for short videos/films, preserving emotional tone and rhythm
+- Speech-to-Text (STT): AI-powered multilingual subtitle generation with over 98% accuracy
+- Subtitle Removal: Seamless hard subtitle erasure, even on complex backgrounds
+- Voice Cloning: 3-Second Ultra-Fast Cloning with Human-like Voice Synthesis
+
+## Quickstart
+
+1. Get your API key from [AllVoiceLab](https://www.allvoicelab.com/).
+2. Install `uv` (Python package manager), install with `curl -LsSf https://astral.sh/uv/install.sh | sh`
+3. **Important**: The server addresses of APIs in different regions need to match the keys of the corresponding regions, otherwise there will be an error that the tool is unavailable.
+
+|Region| Global  | Mainland  |
+|:--|:-----|:-----|
+|ALLVOICELAB_API_KEY| go get from [AllVoiceLab](https://www.allvoicelab.com/workbench/api-keys) | go get from [AllVoiceLab](https://www.allvoicelab.cn/workbench/api-keys) |
+|ALLVOICELAB_API_DOMAIN| https://api.allvoicelab.com | https://api.allvoicelab.cn |
+
+### Claude Desktop
+
+Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
+```json
+{
+  "mcpServers": {
+    "AllVoiceLab": {
+      "command": "uvx",
+      "args": ["allvoicelab-mcp"],
+      "env": {
+        "ALLVOICELAB_API_KEY": "<insert-your-api-key-here>",
+        "ALLVOICELAB_API_DOMAIN": "<insert-api-domain-here>",
+        "ALLVOICELAB_BASE_PATH":"optional, default is user home directory.This is uesd to store the output files."
+      }
+    }
+  }
+}
+```
+
+If you're using Windows, you will have to enable "Developer Mode" in Claude Desktop to use the MCP server. Click "Help" in the hamburger menu in the top left and select "Enable Developer Mode".
+
+### Cursor
+Go to Cursor -> Preferences -> Cursor Settings -> MCP -> Add new global MCP Server to add above config.
+
+That's it. Your MCP client can now interact with AllVoiceLab.
+
+
+## Available methods
+
+| Methods | Brief description |
+| --- | --- |
+| text_to_speech | Convert text to speech |
+| speech_to_speech | Convert audio to another voice while preserving the speech content |
+| isolate_human_voice | Extract clean human voice by removing background noise and non-speech sounds |
+| clone_voice | Create a custom voice profile by cloning from an audio sample |
+| remove_subtitle | Remove hardcoded subtitles from a video using OCR |
+| video_translation_dubbing | Translate and dub video speech into different languages ​​|
+| text_translation | Translate a text file into another language |
+| subtitle_extraction | Extract subtitles from a video using OCR |

+ 36 - 0
mcp-servers/allvoicelab/init.go

@@ -0,0 +1,36 @@
+package allvoicelab
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"allvoicelab",
+			"AllVoiceLab",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("趣丸千音"),
+			mcpservers.WithTags([]string{"voice"}),
+			mcpservers.WithGitHubURL("https://github.com/allvoicelab/AllVoiceLab-MCP"),
+			mcpservers.WithDescription(
+				"Official AllVoiceLab MCP Server, supports interaction with powerful text-to-speech and video translation APIs. Allows MCP clients like Claude Desktop, Cursor, Windsurf, OpenAI Agents, etc. to generate speech, translate videos, and smart voice changing.",
+			),
+			mcpservers.WithDescriptionCN(
+				"官方 AllVoiceLab 模型上下文协议(MCP)服务器,支持与强大的文本转语音和视频翻译API交互。允许MCP客户端如Claude Desktop、Cursor、Windsurf、OpenAI Agents等生成语音、翻译视频、智能变声等功能。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 183 - 0
mcp-servers/amap/README.md

@@ -0,0 +1,183 @@
+# AMAP MCP Server
+
+https://lbs.amap.com/api/mcp-server/gettingstarted
+
+产品介绍
+在AI时代,随着AI技术的迅猛发展,各种出行助手应用如雨后春笋,受限于大模型的数据孤岛、能力边界限制,始终未能发挥其在应用层面落地价值。 MCP的出现统一了大模型与外部数据、工具间的通讯协议。而在出行服务领域,数据的时效性、工具的便捷性尤为重要,高德MCP Server旨在为大模型在出行领域的应用落地高效赋能。
+
+2025年3月,高德地图MCP首发,为开发者提供了基于位置服务、地点信息搜索、路径规划、天气查询等12大核心高鲜度数据,让用户在出行规划、位置信息检索场景下轻松获取即时信息。
+
+2025年5月,高德地图MCP全新升级,通过高德MCP Server 与高德地图APP无缝打通,用户可将大模型产出的攻略与高德地图APP无缝衔接。实现一键生成专属地图,将攻略中的点位、描述、行程规划等个性化信息自动导入到高德地图APP,生成一张独属于用户的私有地图,实际出行中可实现由攻略到一键导航、打车、 订票的丝滑体验。 
+
+真正让高德贯穿你的行前-行中-行后始终,让每个人都能轻松拥有一个“真正懂你的出行秘书”。
+
+能力介绍
+生成专属地图
+将出行规划导入高德地图,生成专属地图
+
+输入
+
+行程名称、行程详情(每日行程描述、行程途径点位)
+
+输出
+
+专属地图唤端链接
+
+导航到目的地
+根据用户传入经纬度,启动导航
+
+输入
+
+目的地经纬度
+
+输出
+
+高德导航唤端链接
+
+打车
+根据用户输入起终经纬度坐标,发起打车请求
+
+输入
+
+origin (起点经纬度),destination (终点经纬度)
+
+输出
+
+高德打车唤端链接
+
+地理编码
+将详细的结构化地址转换为经纬度坐标。
+
+输入
+
+address (位置信息),city (城市信息,非必须)
+
+输出
+
+location (位置经纬度)
+
+逆地理编码
+将一个高德经纬度坐标转换为行政区划地址信息。
+
+输入
+
+location (位置经纬度)
+
+输出
+
+addressComponent (位置信息,包括省市区等信息)
+
+
+IP 定位
+IP 定位根据用户输入的 IP 地址,定位 IP 的所在位置。
+
+输入
+
+IP
+
+输出
+
+province (省),city (城市),adcode (城市编码)
+
+天气查询
+根据城市名称或者标准adcode查询指定城市的天气。
+
+输入
+
+city (城市名称或城市adcode)
+
+输出
+
+forecasts (预报天气)
+
+骑行路径规划
+用于规划骑行通勤方案,规划时会考虑天桥、单行线、封路等情况。最大支持 500km 的骑行路线规划。
+
+输入
+
+origin (起点经纬度),destination (终点经纬度)
+
+输出
+
+distance (规划距离),duration (规划时间),steps (规划步骤信息)
+
+步行路径规划
+可以根据输入起点终点经纬度坐标,规划100km 以内的步行通勤方案,并且返回通勤方案的数据。
+
+输入
+
+origin (起点经纬度),destination (终点经纬度)
+
+输出
+
+origin (起点信息),destination (终点信息),paths (规划具体信息)
+
+驾车路径规划
+根据用户起终点经纬度坐标规划以小客车、轿车通勤出行的方案,并且返回通勤方案的数据。
+
+输入
+
+origin (起点经纬度),destination (终点经纬度)
+
+输出
+
+origin (起点信息),destination (终点信息),paths (规划具体信息)
+
+公交路径规划
+根据用户起终点经纬度坐标规划综合各类公共(火车、公交、地铁)交通方式的通勤方案,并且返回通勤方案的数据,跨城场景下必须传起点城市与终点城市。
+
+输入
+
+origin (起点经纬度),destination (终点经纬度),city (起点城市),cityd (终点城市)
+
+输出
+
+origin (起点信息),destination (终点信息),distance (规划距离),transits (规划具体信息)
+
+距离测量
+测量两个经纬度坐标之间的距离。
+
+输入
+
+origin (起点经纬度),destination (终点经纬度)
+
+输出
+
+origin_id (起点信息),dest_id (终点信息),distance (规划距离),duration (时间)
+
+关键词搜索
+根据用户传入关键词,搜索出相关的POI地点信息。
+
+输入
+
+keywords (搜索关键词),city (查询城市,非必须)
+
+输出
+
+suggestion (搜索建议),pois (地点信息列表)
+
+
+周边搜索
+根据用户传入关键词以及坐标location,搜索出radius半径范围的POI地点信息。
+
+输入
+
+keywords (搜索关键词),location (中心点经度纬度),radius (搜索半径,非必须)
+
+输出
+
+pois (地点信息列表)
+
+
+详情搜索
+查询关键词搜或者周边搜获取到的POI ID的详细信息。
+
+输入
+
+id (关键词搜或周边搜获取的poiid)
+
+输出
+
+地点详情信息
+
+location (地点经纬度),address (地址),business_area (商圈),city(城市),type (地点类型) 等

+ 10 - 5
mcp-servers/amap/init.go

@@ -1,10 +1,15 @@
 package amap
 
 import (
+	_ "embed"
+
 	"github.com/labring/aiproxy/core/model"
 	mcpservers "github.com/labring/aiproxy/mcp-servers"
 )
 
+//go:embed README.md
+var readme string
+
 // need import in mcpregister/init.go
 func init() {
 	mcpservers.Register(
@@ -14,17 +19,17 @@ func init() {
 			model.PublicMCPTypeEmbed,
 			mcpservers.WithNameCN("高德地图"),
 			mcpservers.WithNewServerFunc(NewServer),
+			mcpservers.WithDescription(
+				"AMAP (AutoNavi) Map MCP Server provides comprehensive location-based services including geocoding, place search, route planning, and more through AMAP's APIs.",
+			),
+			mcpservers.WithDescriptionCN("高德地图MCP服务器通过高德地图API提供全面的基于位置的服务,包括地理编码、地点搜索、路线规划等。"),
 			mcpservers.WithConfigTemplates(configTemplates),
 			mcpservers.WithTags([]string{"map"}),
 			mcpservers.WithDescription(
 				"AMAP (AutoNavi) Map MCP Server provides comprehensive location-based services including geocoding, place search, route planning, and more through AMAP's APIs.",
 			),
 			mcpservers.WithDescriptionCN("高德地图MCP服务器通过高德地图API提供全面的基于位置的服务,包括地理编码、地点搜索、路线规划等。"),
-			mcpservers.WithReadme(
-				`# AMAP MCP Server
-
-https://lbs.amap.com/api/mcp-server/gettingstarted
-`),
+			mcpservers.WithReadme(readme),
 		),
 	)
 }

+ 5 - 2
mcp-servers/amap/main.go

@@ -13,7 +13,7 @@ import (
 var configTemplates = map[string]mcpservers.ConfigTemplate{
 	"key": {
 		Name:        "Key",
-		Required:    mcpservers.ConfigRequiredTypeInitOnly,
+		Required:    mcpservers.ConfigRequiredTypeInitOrReusingOnly,
 		Example:     "1234567890",
 		Description: "The key of the AMap MCP server: https://console.amap.com/dev/key/app",
 	},
@@ -26,8 +26,11 @@ var configTemplates = map[string]mcpservers.ConfigTemplate{
 	},
 }
 
-func NewServer(config, _ map[string]string) (mcpservers.Server, error) {
+func NewServer(config, reusingConfig map[string]string) (mcpservers.Server, error) {
 	key := config["key"]
+	if key == "" {
+		key = reusingConfig["key"]
+	}
 	if key == "" {
 		return nil, errors.New("key is required")
 	}

+ 218 - 0
mcp-servers/blender/README.cn.md

@@ -0,0 +1,218 @@
+# BlenderMCP - Blender模型上下文协议集成
+
+> <https://github.com/ahujasid/blender-mcp>
+
+BlenderMCP通过模型上下文协议(MCP)将Blender连接到Claude AI,允许Claude直接与Blender交互并控制Blender。这种集成实现了提示辅助的3D建模、场景创建和操作。
+
+[完整教程](https://www.youtube.com/watch?v=lCyQ717DuzQ)
+
+### 加入社区
+
+提供反馈、获得灵感,并在MCP基础上构建:[Discord](https://discord.gg/z5apgR8TFU)
+
+### 支持者
+
+**顶级支持者:**
+
+[CodeRabbit](https://www.coderabbit.ai/)
+
+**所有支持者:**
+
+[支持此项目](https://github.com/sponsors/ahujasid)
+
+## 发布说明 (1.2.0)
+
+- 查看Blender视口截图以更好地理解场景
+- 搜索和下载Sketchfab模型
+
+### 之前添加的功能
+
+- 通过API支持Poly Haven资源
+- 支持使用Hyper3D Rodin生成3D模型
+- 新用户可以直接跳到安装部分。现有用户请参考以下要点
+- 下载最新的addon.py文件并替换旧文件,然后将其添加到Blender
+- 从Claude中删除MCP服务器并重新添加,就可以正常使用了!
+
+## 功能特性
+
+- **双向通信**:通过基于socket的服务器将Claude AI连接到Blender
+- **对象操作**:在Blender中创建、修改和删除3D对象
+- **材质控制**:应用和修改材质和颜色
+- **场景检查**:获取当前Blender场景的详细信息
+- **代码执行**:从Claude在Blender中运行任意Python代码
+
+## 组件
+
+系统由两个主要组件组成:
+
+1. **Blender插件 (`addon.py`)**:在Blender中创建socket服务器以接收和执行命令的Blender插件
+2. **MCP服务器 (`src/blender_mcp/server.py`)**:实现模型上下文协议并连接到Blender插件的Python服务器
+
+## 安装
+
+### 前置要求
+
+- Blender 3.0或更新版本
+- Python 3.10或更新版本
+- uv包管理器:
+
+**如果你使用Mac,请按如下方式安装uv**
+
+```bash
+brew install uv
+```
+
+**在Windows上**
+
+```bash
+powershell -c "irm https://astral.sh/uv/install.ps1 | iex" 
+```
+
+然后
+
+```bash
+set Path=C:\Users\nntra\.local\bin;%Path%
+```
+
+其他安装说明请参考官网:[安装uv](https://docs.astral.sh/uv/getting-started/installation/)
+
+**⚠️ 安装UV之前请勿继续**
+
+### Claude桌面版集成
+
+[观看设置说明视频](https://www.youtube.com/watch?v=neoK_WMq92g)(假设你已经安装了uv)
+
+转到Claude > 设置 > 开发者 > 编辑配置 > claude_desktop_config.json,包含以下内容:
+
+```json
+{
+    "mcpServers": {
+        "blender": {
+            "command": "uvx",
+            "args": [
+                "blender-mcp"
+            ]
+        }
+    }
+}
+```
+
+### Cursor集成
+
+对于Mac用户,转到设置 > MCP并粘贴以下内容
+
+- 要用作全局服务器,使用"添加新的全局MCP服务器"按钮并粘贴
+- 要用作项目特定服务器,在项目根目录创建`.cursor/mcp.json`并粘贴
+
+```json
+{
+    "mcpServers": {
+        "blender": {
+            "command": "uvx",
+            "args": [
+                "blender-mcp"
+            ]
+        }
+    }
+}
+```
+
+对于Windows用户,转到设置 > MCP > 添加服务器,使用以下设置添加新服务器:
+
+```json
+{
+    "mcpServers": {
+        "blender": {
+            "command": "cmd",
+            "args": [
+                "/c",
+                "uvx",
+                "blender-mcp"
+            ]
+        }
+    }
+}
+```
+
+[Cursor设置视频](https://www.youtube.com/watch?v=wgWsJshecac)
+
+**⚠️ 只运行一个MCP服务器实例(Cursor或Claude桌面版),不要同时运行两个**
+
+### 安装Blender插件
+
+1. 从此仓库下载`addon.py`文件
+2. 打开Blender
+3. 转到编辑 > 首选项 > 插件
+4. 点击"安装..."并选择`addon.py`文件
+5. 通过勾选"Interface: Blender MCP"旁边的复选框来启用插件
+
+## 使用方法
+
+### 开始连接
+
+1. 在Blender中,转到3D视图侧边栏(如果不可见请按N键)
+2. 找到"BlenderMCP"选项卡
+3. 如果你想要来自Poly Haven API的资源,请打开Poly Haven复选框(可选)
+4. 点击"连接到Claude"
+5. 确保MCP服务器在你的终端中运行
+
+### 与Claude一起使用
+
+在Claude上设置配置文件并在Blender上运行插件后,你将看到一个锤子图标,其中包含Blender MCP的工具。
+
+#### 功能
+
+- 获取场景和对象信息
+- 创建、删除和修改形状
+- 为对象应用或创建材质
+- 在Blender中执行任何Python代码
+- 通过[Poly Haven](https://polyhaven.com/)下载正确的模型、资源和HDRI
+- 通过[Hyper3D Rodin](https://hyper3d.ai/)生成AI 3D模型
+
+### 示例命令
+
+以下是一些你可以要求Claude执行的示例:
+
+- "在地牢中创建一个低多边形场景,有一条龙守护着一罐金子" [演示](https://www.youtube.com/watch?v=DqgKuLYUv00)
+- "使用HDRI、纹理和来自Poly Haven的岩石和植被等模型创建海滩氛围" [演示](https://www.youtube.com/watch?v=I29rn92gkC4)
+- 给出参考图像,并从中创建Blender场景 [演示](https://www.youtube.com/watch?v=FDRb03XPiRo)
+- "通过Hyper3D生成花园小矮人的3D模型"
+- "获取当前场景信息,并从中制作threejs草图" [演示](https://www.youtube.com/watch?v=jxbNI5L7AH8)
+- "让这辆车变成红色和金属质感"
+- "创建一个球体并将其放在立方体上方"
+- "让照明像工作室一样"
+- "将相机指向场景,并使其等距"
+
+## Hyper3D集成
+
+Hyper3D的免费试用密钥允许你每天生成有限数量的模型。如果达到每日限制,你可以等待第二天重置或从hyper3d.ai和fal.ai获取自己的密钥。
+
+## 故障排除
+
+- **连接问题**:确保Blender插件服务器正在运行,并且MCP服务器在Claude上配置,不要在终端中运行uvx命令。有时,第一个命令不会通过,但之后就开始工作了。
+- **超时错误**:尝试简化你的请求或将其分解为较小的步骤
+- **Poly Haven集成**:Claude有时行为不稳定
+- **你试过关机再开机吗?**:如果你仍然有连接错误,尝试重启Claude和Blender服务器
+
+## 技术细节
+
+### 通信协议
+
+系统使用基于TCP socket的简单JSON协议:
+
+- **命令**作为具有`type`和可选`params`的JSON对象发送
+- **响应**是具有`status`和`result`或`message`的JSON对象
+
+## 限制和安全考虑
+
+- `execute_blender_code`工具允许在Blender中运行任意Python代码,这可能很强大但也可能很危险。在生产环境中请谨慎使用。使用前请始终保存你的工作。
+- Poly Haven需要下载模型、纹理和HDRI图像。如果你不想使用它,请在Blender中的复选框中关闭它。
+- 复杂操作可能需要分解为较小的步骤
+
+## 贡献
+
+欢迎贡献!请随时提交Pull Request。
+
+## 免责声明
+
+这是第三方集成,不是由Blender制作的。由[Siddharth](https://x.com/sidahuj)制作

+ 218 - 0
mcp-servers/blender/README.md

@@ -0,0 +1,218 @@
+# BlenderMCP - Blender Model Context Protocol Integration
+
+> <https://github.com/ahujasid/blender-mcp>
+
+BlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
+
+[Full tutorial](https://www.youtube.com/watch?v=lCyQ717DuzQ)
+
+### Join the Community
+
+Give feedback, get inspired, and build on top of the MCP: [Discord](https://discord.gg/z5apgR8TFU)
+
+### Supporters
+
+**Top supporters:**
+
+[CodeRabbit](https://www.coderabbit.ai/)
+
+**All supporters:**
+
+[Support this project](https://github.com/sponsors/ahujasid)
+
+## Release notes (1.2.0)
+
+- View screenshots for Blender viewport to better understand the scene
+- Search and download Sketchfab models
+
+### Previously added features
+
+- Support for Poly Haven assets through their API
+- Support to generate 3D models using Hyper3D Rodin
+- For newcomers, you can go straight to Installation. For existing users, see the points below
+- Download the latest addon.py file and replace the older one, then add it to Blender
+- Delete the MCP server from Claude and add it back again, and you should be good to go!
+
+## Features
+
+- **Two-way communication**: Connect Claude AI to Blender through a socket-based server
+- **Object manipulation**: Create, modify, and delete 3D objects in Blender
+- **Material control**: Apply and modify materials and colors
+- **Scene inspection**: Get detailed information about the current Blender scene
+- **Code execution**: Run arbitrary Python code in Blender from Claude
+
+## Components
+
+The system consists of two main components:
+
+1. **Blender Addon (`addon.py`)**: A Blender addon that creates a socket server within Blender to receive and execute commands
+2. **MCP Server (`src/blender_mcp/server.py`)**: A Python server that implements the Model Context Protocol and connects to the Blender addon
+
+## Installation
+
+### Prerequisites
+
+- Blender 3.0 or newer
+- Python 3.10 or newer
+- uv package manager:
+
+**If you're on Mac, please install uv as**
+
+```bash
+brew install uv
+```
+
+**On Windows**
+
+```bash
+powershell -c "irm https://astral.sh/uv/install.ps1 | iex" 
+```
+
+and then
+
+```bash
+set Path=C:\Users\nntra\.local\bin;%Path%
+```
+
+Otherwise installation instructions are on their website: [Install uv](https://docs.astral.sh/uv/getting-started/installation/)
+
+**⚠️ Do not proceed before installing UV**
+
+### Claude for Desktop Integration
+
+[Watch the setup instruction video](https://www.youtube.com/watch?v=neoK_WMq92g) (Assuming you have already installed uv)
+
+Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
+
+```json
+{
+    "mcpServers": {
+        "blender": {
+            "command": "uvx",
+            "args": [
+                "blender-mcp"
+            ]
+        }
+    }
+}
+```
+
+### Cursor integration
+
+For Mac users, go to Settings > MCP and paste the following
+
+- To use as a global server, use "add new global MCP server" button and paste
+- To use as a project specific server, create `.cursor/mcp.json` in the root of the project and paste
+
+```json
+{
+    "mcpServers": {
+        "blender": {
+            "command": "uvx",
+            "args": [
+                "blender-mcp"
+            ]
+        }
+    }
+}
+```
+
+For Windows users, go to Settings > MCP > Add Server, add a new server with the following settings:
+
+```json
+{
+    "mcpServers": {
+        "blender": {
+            "command": "cmd",
+            "args": [
+                "/c",
+                "uvx",
+                "blender-mcp"
+            ]
+        }
+    }
+}
+```
+
+[Cursor setup video](https://www.youtube.com/watch?v=wgWsJshecac)
+
+**⚠️ Only run one instance of the MCP server (either on Cursor or Claude Desktop), not both**
+
+### Installing the Blender Addon
+
+1. Download the `addon.py` file from this repo
+1. Open Blender
+2. Go to Edit > Preferences > Add-ons
+3. Click "Install..." and select the `addon.py` file
+4. Enable the addon by checking the box next to "Interface: Blender MCP"
+
+## Usage
+
+### Starting the Connection
+
+1. In Blender, go to the 3D View sidebar (press N if not visible)
+2. Find the "BlenderMCP" tab
+3. Turn on the Poly Haven checkbox if you want assets from their API (optional)
+4. Click "Connect to Claude"
+5. Make sure the MCP server is running in your terminal
+
+### Using with Claude
+
+Once the config file has been set on Claude, and the addon is running on Blender, you will see a hammer icon with tools for the Blender MCP.
+
+#### Capabilities
+
+- Get scene and object information
+- Create, delete and modify shapes
+- Apply or create materials for objects
+- Execute any Python code in Blender
+- Download the right models, assets and HDRIs through [Poly Haven](https://polyhaven.com/)
+- AI generated 3D models through [Hyper3D Rodin](https://hyper3d.ai/)
+
+### Example Commands
+
+Here are some examples of what you can ask Claude to do:
+
+- "Create a low poly scene in a dungeon, with a dragon guarding a pot of gold" [Demo](https://www.youtube.com/watch?v=DqgKuLYUv00)
+- "Create a beach vibe using HDRIs, textures, and models like rocks and vegetation from Poly Haven" [Demo](https://www.youtube.com/watch?v=I29rn92gkC4)
+- Give a reference image, and create a Blender scene out of it [Demo](https://www.youtube.com/watch?v=FDRb03XPiRo)
+- "Generate a 3D model of a garden gnome through Hyper3D"
+- "Get information about the current scene, and make a threejs sketch from it" [Demo](https://www.youtube.com/watch?v=jxbNI5L7AH8)
+- "Make this car red and metallic"
+- "Create a sphere and place it above the cube"
+- "Make the lighting like a studio"
+- "Point the camera at the scene, and make it isometric"
+
+## Hyper3D integration
+
+Hyper3D's free trial key allows you to generate a limited number of models per day. If the daily limit is reached, you can wait for the next day's reset or obtain your own key from hyper3d.ai and fal.ai.
+
+## Troubleshooting
+
+- **Connection issues**: Make sure the Blender addon server is running, and the MCP server is configured on Claude, DO NOT run the uvx command in the terminal. Sometimes, the first command won't go through but after that it starts working.
+- **Timeout errors**: Try simplifying your requests or breaking them into smaller steps
+- **Poly Haven integration**: Claude is sometimes erratic with its behaviour
+- **Have you tried turning it off and on again?**: If you're still having connection errors, try restarting both Claude and the Blender server
+
+## Technical Details
+
+### Communication Protocol
+
+The system uses a simple JSON-based protocol over TCP sockets:
+
+- **Commands** are sent as JSON objects with a `type` and optional `params`
+- **Responses** are JSON objects with a `status` and `result` or `message`
+
+## Limitations & Security Considerations
+
+- The `execute_blender_code` tool allows running arbitrary Python code in Blender, which can be powerful but potentially dangerous. Use with caution in production environments. ALWAYS save your work before using it.
+- Poly Haven requires downloading models, textures, and HDRI images. If you do not want to use it, please turn it off in the checkbox in Blender.
+- Complex operations might need to be broken down into smaller steps
+
+## Contributing
+
+Contributions are welcome! Please feel free to submit a Pull Request.
+
+## Disclaimer
+
+This is a third-party integration and not made by Blender. Made by [Siddharth](https://x.com/sidahuj)

+ 38 - 0
mcp-servers/blender/init.go

@@ -0,0 +1,38 @@
+package blender
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"blender",
+			"Blender",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Blender"),
+			mcpservers.WithTags([]string{"3d"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/ahujasid/blender-mcp",
+			),
+			mcpservers.WithDescription(
+				"Connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to interact with and control Blender directly, enabling AI-assisted 3D modeling, scene operations, and rendering.",
+			),
+			mcpservers.WithDescriptionCN(
+				"通过模型上下文协议(MCP)将Blender连接到Claude AI,使Claude能够直接与Blender交互并对其进行控制,从而实现AI辅助的3D建模、场景操作和渲染。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 314 - 0
mcp-servers/browserbase/README.cn.md

@@ -0,0 +1,314 @@
+# Playwright Browserbase MCP 服务器
+
+> <https://github.com/browserbase/mcp-server-browserbase/tree/main/browserbase>
+
+模型上下文协议(MCP)是一个开放协议,能够在LLM应用程序与外部数据源和工具之间实现无缝集成。无论您是在构建AI驱动的IDE、增强聊天界面,还是创建自定义AI工作流,MCP都提供了一种标准化的方式来连接LLM与其所需的上下文。
+
+## 如何在MCP JSON中设置
+
+您可以使用我们托管在NPM上的服务器,或者通过克隆此仓库完全在本地运行。
+
+### 在NPM上运行(推荐)
+
+进入您的MCP配置JSON并添加Browserbase服务器:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command": "npx",
+         "args" : ["@browserbasehq/mcp"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+就是这样!重新加载您的MCP客户端,Claude就能够使用Browserbase了。
+
+### 100%本地运行
+
+```bash
+# 克隆仓库
+git clone https://github.com/browserbase/mcp-server-browserbase.git
+
+# 在正确的目录中安装依赖项并构建项目
+cd browserbase
+npm install && npm run build
+```
+
+然后在您的MCP配置JSON中运行服务器。要在本地运行,我们可以使用STDIO或通过SSE自托管。
+
+### STDIO
+
+在您的MCP配置JSON文件中添加以下内容:
+
+```json
+{
+"mcpServers": {
+   "browserbase": {
+      "command" : "node",
+      "args" : ["/path/to/mcp-server-browserbase/browserbase/cli.js"],
+      "env": {
+         "BROWSERBASE_API_KEY": "",
+         "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### SSE
+
+在终端中运行以下命令。您可以添加任何标志(见下面的选项)来自定义您的配置。
+
+```bash
+   node cli.js --port 8931
+```
+
+然后在您的MCP配置JSON文件中添加以下内容:
+
+```json
+   {
+      "mcpServers": {
+         "browserbase": {
+            "url": "http://localhost:8931/sse",
+            "env": {
+               "BROWSERBASE_API_KEY": "",
+               "BROWSERBASE_PROJECT_ID": ""
+            }
+         }
+      }
+   }
+```
+
+然后重新加载您的MCP客户端,您就可以开始使用了!
+
+## 标志说明
+
+Browserbase MCP服务器接受以下命令行标志:
+
+| 标志 | 描述 |
+|------|-------------|
+| `--browserbaseApiKey <key>` | 用于身份验证的Browserbase API密钥 |
+| `--browserbaseProjectId <id>` | 您的Browserbase项目ID |
+| `--proxies` | 为会话启用Browserbase代理 |
+| `--advancedStealth` | 启用Browserbase高级隐身模式(仅限Scale计划用户) |
+| `--contextId <contextId>` | 指定要使用的Browserbase上下文ID |
+| `--persist [boolean]` | 是否持久化Browserbase上下文(默认:true) |
+| `--port <port>` | HTTP/SSE传输监听端口 |
+| `--host <host>` | 服务器绑定主机(默认:localhost,使用0.0.0.0表示所有接口) |
+| `--cookies [json]` | 要注入到浏览器中的cookies的JSON数组 |
+| `--browserWidth <width>` | 浏览器视口宽度(默认:1024) |
+| `--browserHeight <height>` | 浏览器视口高度(默认:768) |
+
+这些标志可以直接传递给CLI或在您的MCP配置文件中配置。
+
+### 注意
+
+目前,这些标志只能与本地服务器(npx @browserbasehq/mcp)一起使用。
+
+____
+
+## 标志和示例配置
+
+### 代理
+
+这里是我们关于[代理](https://docs.browserbase.com/features/proxies)的文档。
+
+要在STDIO中使用代理,请在您的MCP配置中设置--proxies标志:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : ["@browserbasehq/mcp", "--proxies"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### 高级隐身
+
+这里是我们关于[高级隐身](https://docs.browserbase.com/features/stealth-mode#advanced-stealth-mode)的文档。
+
+要在STDIO中使用高级隐身,请在您的MCP配置中设置--advancedStealth标志:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : ["@browserbasehq/mcp", "--advancedStealth"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### 上下文
+
+这里是我们关于[上下文](https://docs.browserbase.com/features/contexts)的文档。
+
+要在STDIO中使用上下文,请在您的MCP配置中设置--contextId标志:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : ["@browserbasehq/mcp", "--contextId", "<YOUR_CONTEXT_ID>"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### Cookie注入
+
+为什么需要注入cookies?我们的上下文API目前适用于持久性cookies,但不适用于会话cookies。所以有时我们的持久身份验证可能不起作用(我们正在努力添加此功能)。
+
+您可以通过将cookies.json添加到您的MCP配置中来将cookies标记到MCP中。
+
+要在STDIO中使用代理,请在您的MCP配置中设置--proxies标志。您的cookies JSON必须是[Playwright Cookies](https://playwright.dev/docs/api/class-browsercontext#browser-context-cookies)类型:
+
+```json
+{
+   "mcpServers": {
+      "browserbase" {
+         "command" : "npx",
+         "args" : [
+            "@browserbasehq/mcp", "--cookies", 
+            '{
+               "cookies": json,
+            }'
+         ],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### 浏览器视口大小
+
+浏览器会话的默认视口大小为1024 x 768。您可以使用browserWidth和browserHeight标志调整浏览器视口大小。
+
+以下是如何使用自定义浏览器大小。我们建议坚持使用16:9的宽高比(即:1920 x 1080、1280 x 720、1024 x 768):
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : [
+            "@browserbasehq/mcp",
+            "--browserHeight 1080",
+            "--browserWidth 1920",
+         ],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+## 结构
+
+* `src/`: TypeScript源代码
+  * `index.ts`: 主入口点,环境检查,关闭
+  * `server.ts`: MCP服务器设置和请求路由
+  * `sessionManager.ts`: 处理Browserbase会话创建/管理
+  * `tools/`: 工具定义和实现
+  * `resources/`: 资源(截图)处理
+  * `types.ts`: 共享TypeScript类型
+* `dist/`: 编译的JavaScript输出
+* `tests/`: 测试占位符
+* `utils/`: 实用程序脚本占位符
+* `Dockerfile`: 用于构建Docker镜像
+* 配置文件(`.json`、`.ts`、`.mjs`、`.npmignore`)
+
+## 持久化上下文
+
+此服务器支持Browserbase的上下文功能,允许在浏览器会话之间持久化cookies、身份验证和缓存数据:
+
+1. **创建上下文**:
+
+   ```
+   browserbase_context_create: 创建新上下文,可选择使用友好名称
+   ```
+
+2. **在会话中使用上下文**:
+
+   ```
+   browserbase_session_create: 现在接受'context'参数:
+     - id: 要使用的上下文ID
+     - name: ID的替代方案,上下文的友好名称
+     - persist: 是否将更改(cookies、缓存)保存回上下文(默认:true)
+   ```
+
+3. **删除上下文**:
+
+   ```
+   browserbase_context_delete: 当您不再需要时删除上下文
+   ```
+
+上下文使以下操作变得更加容易:
+
+* 在会话之间维护登录状态
+* 通过保留缓存减少页面加载时间
+* 通过重用浏览器指纹避免验证码和检测
+
+## Cookie管理
+
+此服务器还提供直接的cookie管理功能:
+
+1. **添加Cookies**:
+
+   ```
+   browserbase_cookies_add: 向当前浏览器会话添加cookies,完全控制属性
+   ```
+
+2. **获取Cookies**:
+
+   ```
+   browserbase_cookies_get: 查看当前会话中的所有cookies(可选择按URL过滤)
+   ```
+
+3. **删除Cookies**:
+
+   ```
+   browserbase_cookies_delete: 删除特定cookies或清除会话中的所有cookies
+   ```
+
+这些工具对以下用途很有用:
+
+* 无需导航到登录页面即可设置身份验证cookies
+* 备份和恢复cookie状态
+* 调试与cookie相关的问题
+* 操作cookie属性(过期时间、安全标志等)
+
+## 待办事项/路线图
+
+* 为click、type、drag、hover、select_option实现真正的基于`ref`的交互逻辑。
+* 使用`ref`实现元素特定的截图。
+* 添加更多标准MCP工具(标签页、导航等)。
+* 添加测试。

+ 313 - 0
mcp-servers/browserbase/README.md

@@ -0,0 +1,313 @@
+# Playwright Browserbase MCP Server
+
+> <https://github.com/browserbase/mcp-server-browserbase/tree/main/browserbase>
+
+The Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. Whether you’re building an AI-powered IDE, enhancing a chat interface, or creating custom AI workflows, MCP provides a standardized way to connect LLMs with the context they need.
+
+## How to setup in MCP json
+
+You can either use our Server hosted on NPM or run it completely locally by cloning this repo.
+
+### To run on NPM (Recommended)
+
+Go into your MCP Config JSON and add the Browserbase Server:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command": "npx",
+         "args" : ["@browserbasehq/mcp"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+Thats it! Reload your MCP client and Claude will be able to use Browserbase.
+
+### To run 100% local
+
+```bash
+# Clone the Repo 
+git clone https://github.com/browserbase/mcp-server-browserbase.git
+
+# Install the dependencies in the proper directory and build the project
+cd browserbase
+npm install && npm run build
+
+```
+
+Then in your MCP Config JSON run the server. To run locally we can use STDIO or self-host over SSE.
+
+### STDIO
+
+To your MCP Config JSON file add the following:
+
+```json
+{
+"mcpServers": {
+   "browserbase": {
+      "command" : "node",
+      "args" : ["/path/to/mcp-server-browserbase/browserbase/cli.js"],
+      "env": {
+         "BROWSERBASE_API_KEY": "",
+         "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### SSE
+
+Run the following command in your terminal. You can add any flags (see options below) that you see fit to customize your configuration.
+
+```bash
+   node cli.js --port 8931
+```
+
+Then in your MCP Config JSON file put the following:
+
+```json
+   {
+      "mcpServers": {
+         "browserbase": {
+            "url": "http://localhost:8931/sse",
+            "env": {
+               "BROWSERBASE_API_KEY": "",
+               "BROWSERBASE_PROJECT_ID": ""
+            }
+         }
+      }
+   }
+```
+
+Then reload your MCP client and you should be good to go!
+
+## Flags Explained
+
+The Browserbase MCP server accepts the following command-line flags:
+
+| Flag | Description |
+|------|-------------|
+| `--browserbaseApiKey <key>` | Your Browserbase API key for authentication |
+| `--browserbaseProjectId <id>` | Your Browserbase project ID |
+| `--proxies` | Enable Browserbase proxies for the session |
+| `--advancedStealth` | Enable Browserbase Advanced Stealth (Only for Scale Plan Users) |
+| `--contextId <contextId>` | Specify a Browserbase Context ID to use |
+| `--persist [boolean]` | Whether to persist the Browserbase context (default: true) |
+| `--port <port>` | Port to listen on for HTTP/SSE transport |
+| `--host <host>` | Host to bind server to (default: localhost, use 0.0.0.0 for all interfaces) |
+| `--cookies [json]` | JSON array of cookies to inject into the browser |
+| `--browserWidth <width>` | Browser viewport width (default: 1024) |
+| `--browserHeight <height>` | Browser viewport height (default: 768) |
+
+These flags can be passed directly to the CLI or configured in your MCP configuration file.
+
+### NOTE
+
+Currently, these flags can only be used with the local server (npx @browserbasehq/mcp).
+
+____
+
+## Flags & Example Configs
+
+### Proxies
+
+Here are our docs on [Proxies](https://docs.browserbase.com/features/proxies).
+
+To use proxies in STDIO, set the --proxies flag in your MCP Config:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : ["@browserbasehq/mcp", "--proxies"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### Advanced Stealth
+
+Here are our docs on [Advanced Stealth](https://docs.browserbase.com/features/stealth-mode#advanced-stealth-mode).
+
+To use proxies in STDIO, set the --advancedStealth flag in your MCP Config:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : ["@browserbasehq/mcp", "--advancedStealth"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### Contexts
+
+Here are our docs on [Contexts](https://docs.browserbase.com/features/contexts)
+
+To use contexts in STDIO, set the --contextId flag in your MCP Config:
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : ["@browserbasehq/mcp", "--contextId", "<YOUR_CONTEXT_ID>"],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### Cookie Injection
+
+Why would you need to inject cookies? Our context API currently works on persistent cookies, but not session cookies. So sometimes our persistent auth might not work (we're working hard to add this functionality).
+
+You can flag cookies into the MCP by adding the cookies.json to your MCP Config.
+
+To use proxies in STDIO, set the --proxies flag in your MCP Config. Your cookies JSON must be in the type of [Playwright Cookies](https://playwright.dev/docs/api/class-browsercontext#browser-context-cookies)
+
+```json
+{
+   "mcpServers": {
+      "browserbase" {
+         "command" : "npx",
+         "args" : [
+            "@browserbasehq/mcp", "--cookies", 
+            '{
+               "cookies": json,
+            }'
+         ],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+### Browser Viewport Sizing
+
+The default viewport sizing for a browser session is 1024 x 768. You can adjust the Browser viewport sizing with browserWidth and browserHeight flags.
+
+Here's how to use it for custom browser sizing. We recommend to stick with 16:9 aspect ratios (ie: 1920 x 1080, 1280, 720, 1024 x 768)
+
+```json
+{
+   "mcpServers": {
+      "browserbase": {
+         "command" : "npx",
+         "args" : [
+            "@browserbasehq/mcp",
+            "--browserHeight 1080",
+            "--browserWidth 1920",
+         ],
+         "env": {
+            "BROWSERBASE_API_KEY": "",
+            "BROWSERBASE_PROJECT_ID": ""
+         }
+      }
+   }
+}
+```
+
+## Structure
+
+* `src/`: TypeScript source code
+  * `index.ts`: Main entry point, env checks, shutdown
+  * `server.ts`: MCP Server setup and request routing
+  * `sessionManager.ts`: Handles Browserbase session creation/management
+  * `tools/`: Tool definitions and implementations
+  * `resources/`: Resource (screenshot) handling
+  * `types.ts`: Shared TypeScript types
+* `dist/`: Compiled JavaScript output
+* `tests/`: Placeholder for tests
+* `utils/`: Placeholder for utility scripts
+* `Dockerfile`: For building a Docker image
+* Configuration files (`.json`, `.ts`, `.mjs`, `.npmignore`)
+
+## Contexts for Persistence
+
+This server supports Browserbase's Contexts feature, which allows persisting cookies, authentication, and cached data across browser sessions:
+
+1. **Creating a Context**:
+
+   ```
+   browserbase_context_create: Creates a new context, optionally with a friendly name
+   ```
+
+2. **Using a Context with a Session**:
+
+   ```
+   browserbase_session_create: Now accepts a 'context' parameter with:
+     - id: The context ID to use
+     - name: Alternative to ID, the friendly name of the context
+     - persist: Whether to save changes (cookies, cache) back to the context (default: true)
+   ```
+
+3. **Deleting a Context**:
+
+   ```
+   browserbase_context_delete: Deletes a context when you no longer need it
+   ```
+
+Contexts make it much easier to:
+* Maintain login state across sessions
+* Reduce page load times by preserving cache
+* Avoid CAPTCHAs and detection by reusing browser fingerprints
+
+## Cookie Management
+
+This server also provides direct cookie management capabilities:
+
+1. **Adding Cookies**:
+
+   ```
+   browserbase_cookies_add: Add cookies to the current browser session with full control over properties
+   ```
+
+2. **Getting Cookies**:
+
+   ```
+   browserbase_cookies_get: View all cookies in the current session (optionally filtered by URLs)
+   ```
+
+3. **Deleting Cookies**:
+
+   ```
+   browserbase_cookies_delete: Delete specific cookies or clear all cookies from the session
+   ```
+
+These tools are useful for:
+* Setting authentication cookies without navigating to login pages
+* Backing up and restoring cookie state
+* Debugging cookie-related issues
+* Manipulating cookie attributes (expiration, security flags, etc.)
+
+## TODO/Roadmap
+
+* Implement true `ref`-based interaction logic for click, type, drag, hover, select_option.
+* Implement element-specific screenshots using `ref`.
+* Add more standard MCP tools (tabs, navigation, etc.).
+* Add tests.

+ 38 - 0
mcp-servers/browserbase/init.go

@@ -0,0 +1,38 @@
+package browserbase
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"browserbase",
+			"BrowserBase Cloud Browser Automation",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("BrowserBase云浏览器自动化"),
+			mcpservers.WithTags([]string{"browser"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/browserbase/mcp-server-browserbase/tree/main/browserbase",
+			),
+			mcpservers.WithDescription(
+				"This server uses Browserbase, Puppeteer, and Stagehand to provide cloud browser automation features. This server allows large language models (LLMs) to interact with web pages, take screenshots, and execute JavaScript in a cloud browser environment.",
+			),
+			mcpservers.WithDescriptionCN(
+				"该服务器使用 Browserbase、Puppeteer 和 Stagehand 提供云浏览器自动化功能。此服务器使大型语言模型(LLMs)能够与网页交互、截屏以及在云浏览器环境中执行 JavaScript。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 133 - 0
mcp-servers/cfworker/README.cn.md

@@ -0,0 +1,133 @@
+# `workers-mcp`
+
+> <https://github.com/cloudflare/workers-mcp>
+
+> **让 Claude Desktop 与 Cloudflare Worker 对话!**
+
+> [!WARNING]  
+> 你应该从[这里](https://developers.cloudflare.com/agents/guides/remote-mcp-server/)开始 — 构建一个**远程** MCP 服务器
+>
+> 你可以[使用 mcp-remote](https://developers.cloudflare.com/agents/guides/test-remote-mcp-server/) 从 Claude Desktop、Cursor 和其他客户端连接到远程 MCP 服务器。
+
+### 什么是 `workers-mcp`?
+
+这个包提供了 CLI 工具和 Worker 内部逻辑,用于将 Claude Desktop(或任何 [MCP 客户端](https://modelcontextprotocol.io/))连接到你账户中的 Cloudflare Worker,这样你就可以根据需要进行自定义。它通过构建步骤工作,可以将你的 Worker 的 TypeScript 方法转换,例如:
+
+```ts
+export class ExampleWorkerMCP extends WorkerEntrypoint<Env> {
+  /**
+   * 生成一个随机数。这个随机数特别随机,因为它必须一路传输到
+   * 你最近的 Cloudflare PoP 来计算,这... 某种程度上与熔岩灯有关?
+   *
+   * @return {string} 包含超级随机数的消息
+   * */
+  async getRandomNumber() {
+    return `你的随机数是 ${Math.random()}`
+  }
+  
+  // ...等等
+}
+```
+
+...转换为本地 Node.js 服务器可以向 MCP 客户端公开的 MCP 工具。Node.js 服务器充当代理,在本地处理 stdio 传输,并调用运行在 Cloudflare 上的 Worker 的相关方法。这允许你将应用程序中的任何函数或 API,或 [Cloudflare 开发者平台](https://developers.cloudflare.com/products/)中的任何服务,暴露给编码代理、Claude Desktop 或其他 MCP 客户端中的 LLM。
+
+![image](https://github.com/user-attachments/assets/c16b2631-4eba-4914-8e26-d6ccea0fc578)
+
+> <sub>是的,我知道 `Math.random()` 在 Worker 上的工作方式与在本地机器上相同,但别告诉 Claude</sub> 🤫
+
+## 使用方法
+
+### 步骤 1:生成新的 Worker
+
+使用 `create-cloudflare` 生成新的 Worker。
+
+```shell
+npx create-cloudflare@latest my-new-worker
+```
+
+我建议选择 `Hello World` worker。
+
+### 步骤 2:安装 `workers-mcp`
+
+```shell
+cd my-new-worker # 我总是忘记这一步
+npm install workers-mcp
+```
+
+### 步骤 3:运行 `setup` 命令
+
+```shell
+npx workers-mcp setup
+```
+
+注意:如果出现问题,运行 `npx workers-mcp help`
+
+### 步骤 4..♾️:迭代
+
+更改 Worker 代码后,你只需要运行 `npm run deploy` 来同时更新 Claude 关于你函数的元数据和你的实时 Worker 实例。
+
+但是,如果你更改了方法的名称、参数,或者添加/删除了方法,Claude 不会看到更新,直到你重启它。
+
+你应该永远不需要重新运行 `npx workers-mcp install:claude`,但如果你想排除 Claude 配置作为错误源,这样做是安全的。
+
+## 与其他 MCP 客户端一起使用
+
+### Cursor
+
+要让你的 Cloudflare MCP 服务器在 Cursor 中工作,你需要将配置文件中的 'command' 和 'args' 合并成单个字符串,并使用类型 'command'。
+
+例如,如果你的配置文件如下所示:
+
+```json
+{
+  "mcpServers": {
+    "your-mcp-server-name": {
+      "command": "/path/to/workers-mcp",
+      "args": [
+        "run",
+        "your-mcp-server-name",
+        "https://your-server-url.workers.dev",
+        "/path/to/your/project"
+      ],
+      "env": {}
+    }
+  }
+}
+```
+
+在 Cursor 中,创建一个 MCP 服务器条目:
+
+* type: `command`
+* command: `/path/to/workers-mcp run your-mcp-server-name https://your-server-url.workers.dev /path/to/your/project`
+
+### 其他 MCP 客户端
+
+对于 Windsurf 和其他 MCP 客户端,更新你的配置文件以包含你的 worker,这样你就可以直接从客户端使用这些工具:
+
+```json
+{
+  "mcpServers": {
+    "your-mcp-server-name": {
+      "command": "/path/to/workers-mcp",
+      "args": [
+        "run",
+        "your-mcp-server-name",
+        "https://your-server-url.workers.dev",
+        "/path/to/your/project"
+      ],
+      "env": {}
+    }
+  }
+}
+```
+
+确保用你的实际服务器名称、URL 和项目路径替换占位符。
+
+## 示例
+
+查看 `examples` 目录以获取一些使用想法:
+
+* `examples/01-hello-world` 是按照上述安装说明后的快照
+* `examples/02-image-generation` 使用 Workers AI 运行 Flux 图像生成模型。Claude 非常擅长建议提示,实际上可以解释结果并决定尝试什么新提示来实现你想要的结果。
+* TODO 浏览器渲染
+* TODO Durable Objects

+ 133 - 0
mcp-servers/cfworker/README.md

@@ -0,0 +1,133 @@
+# `workers-mcp`
+
+> <https://github.com/cloudflare/workers-mcp>
+
+> **Talk to a Cloudflare Worker from Claude Desktop!**
+
+> [!WARNING]  
+> You should start [here](https://developers.cloudflare.com/agents/guides/remote-mcp-server/) instead — and build a **remote** MCP server
+>
+> You can connect to remote MCP servers from Claude Desktop, Cursor, and other clients [using mcp-remote](https://developers.cloudflare.com/agents/guides/test-remote-mcp-server/).
+
+### What is `workers-mcp`?
+
+This package provides both the CLI tooling and the in-Worker logic to connect Claude Desktop (or any [MCP Client](https://modelcontextprotocol.io/)) to a Cloudflare Worker on your account, so you can customise it to suit your needs. It works via a build step that can translate TypeScript methods of your Worker like this:
+
+```ts
+export class ExampleWorkerMCP extends WorkerEntrypoint<Env> {
+  /**
+   * Generates a random number. This is extra random because it had to travel all the way to
+   * your nearest Cloudflare PoP to be calculated which... something something lava lamps?
+   *
+   * @return {string} A message containing a super duper random number
+   * */
+  async getRandomNumber() {
+    return `Your random number is ${Math.random()}`
+  }
+  
+  // ...etc
+}
+```
+
+...into MCP tools that a local Node.js server can expose to MCP clients. The Node.js server acts as a proxy, handling stdio transport locally, and calling the relevant method of your Worker running on Cloudflare. This allows you to expose any function or API in your app, or any service in [Cloudflare's developer platform](https://developers.cloudflare.com/products/), back to a LLM in your coding agent, Claude Desktop or other MCP client.
+
+![image](https://github.com/user-attachments/assets/c16b2631-4eba-4914-8e26-d6ccea0fc578)
+
+> <sub>Yes, I know that `Math.random()` works the same on a Worker as it does on your local machine, but don't tell Claude</sub> 🤫
+
+## Usage
+
+### Step 1: Generate a new Worker
+
+Use `create-cloudflare` to generate a new Worker.
+
+```shell
+npx create-cloudflare@latest my-new-worker
+```
+
+I suggest choosing a `Hello World` worker.
+
+### Step 2: Install `workers-mcp`
+
+```shell
+cd my-new-worker # I always forget this bit
+npm install workers-mcp
+```
+
+### Step 3: Run the `setup` command
+
+```shell
+npx workers-mcp setup
+```
+
+Note: if something goes wrong, run `npx workers-mcp help`
+
+### Step 4..♾️: Iterating
+
+After changing your Worker code, you only need to run `npm run deploy` to update both Claude's metadata about your function and your live Worker instance.
+
+However, if you change the names of your methods, or their parameters, or add or remove methods, Claude will not see the updates until you restart it.
+
+You shouldn't ever need to rerun `npx workers-mcp install:claude`, but it's safe to do so if you want to rule out Claude config as a source of errors.
+
+## Using with Other MCP Clients
+
+### Cursor
+
+To get your Cloudflare MCP server working in Cursor, you need to combine the 'command' and 'args' from your config file into a single string and use type 'command'.
+
+For example, if your config file looks like:
+
+```json
+{
+  "mcpServers": {
+    "your-mcp-server-name": {
+      "command": "/path/to/workers-mcp",
+      "args": [
+        "run",
+        "your-mcp-server-name",
+        "https://your-server-url.workers.dev",
+        "/path/to/your/project"
+      ],
+      "env": {}
+    }
+  }
+}
+```
+
+In Cursor, create an MCP server entry with:
+
+* type: `command`
+* command: `/path/to/workers-mcp run your-mcp-server-name https://your-server-url.workers.dev /path/to/your/project`
+
+### Other MCP Clients
+
+For Windsurf and other MCP clients, update your configuration file to include your worker so you could use the tools directly from the client:
+
+```json
+{
+  "mcpServers": {
+    "your-mcp-server-name": {
+      "command": "/path/to/workers-mcp",
+      "args": [
+        "run",
+        "your-mcp-server-name",
+        "https://your-server-url.workers.dev",
+        "/path/to/your/project"
+      ],
+      "env": {}
+    }
+  }
+}
+```
+
+Make sure to replace the placeholders with your actual server name, URL, and project path.
+
+## Examples
+
+See the `examples` directory for a few ideas of what to use this for:
+
+* `examples/01-hello-world` is a snapshot taken after the installation instructions above
+* `examples/02-image-generation` uses Workers AI to run the Flux image generation model. Claude is really good at suggesting prompts and can actually interpret the outcome and decide what new prompts to try to achieve the outcome you want.
+* TODO Browser Rendering
+* TODO Durable Objects

+ 38 - 0
mcp-servers/cfworker/init.go

@@ -0,0 +1,38 @@
+package cfworker
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"cfworker",
+			"Cloudflare Workers",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Cloudflare Workers"),
+			mcpservers.WithTags([]string{"cloud"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/cloudflare/workers-mcp",
+			),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server for Cloudflare Workers, enabling custom functions to be accessed through natural language.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一个模型上下文协议(MCP)服务器,用于Cloudflare Workers,通过模型上下文协议(Model Context Protocol), enables 自定义功能可以通过自然语言访问。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 92 - 0
mcp-servers/chatsum/README.cn.md

@@ -0,0 +1,92 @@
+# mcp-server-chatsum
+
+这个 MCP 服务器用于总结您的聊天消息。
+
+![预览](https://github.com/chatmcp/mcp-server-chatsum/blob/main/preview.png?raw=true)
+
+> **在开始之前**
+>
+> 移动到 [chatbot](https://github.com/chatmcp/chatbot) 目录,按照 [README_CN.md](https://github.com/chatmcp/chatbot/blob/main/README_CN.md) 设置聊天数据库。
+>
+> 启动聊天机器人以保存您的聊天消息。
+
+## 功能特性
+
+### 资源
+
+### 工具
+
+- `query_chat_messages` - 查询聊天消息
+  - 使用给定参数查询聊天消息
+  - 根据查询提示总结聊天消息
+
+### 提示词
+
+## 开发
+
+1. 设置环境变量:
+
+在根目录创建 `.env` 文件,并设置您的聊天数据库路径。
+
+```txt
+CHAT_DB_PATH=path-to/chatbot/data/chat.db
+```
+
+2. 安装依赖:
+
+```bash
+pnpm install
+```
+
+构建服务器:
+
+```bash
+pnpm build
+```
+
+用于自动重新构建的开发模式:
+
+```bash
+pnpm watch
+```
+
+## 安装
+
+要与 Claude Desktop 一起使用,请添加服务器配置:
+
+MacOS 路径:`~/Library/Application Support/Claude/claude_desktop_config.json`
+Windows 路径:`%APPDATA%/Claude/claude_desktop_config.json`
+
+```json
+{
+  "mcpServers": {
+    "mcp-server-chatsum": {
+      "command": "path-to/bin/node",
+      "args": ["path-to/mcp-server-chatsum/build/index.js"],
+      "env": {
+        "CHAT_DB_PATH": "path-to/mcp-server-chatsum/chatbot/data/chat.db"
+      }
+    }
+  }
+}
+```
+
+### 调试
+
+由于 MCP 服务器通过标准输入输出进行通信,调试可能具有挑战性。我们建议使用 [MCP Inspector](https://github.com/modelcontextprotocol/inspector),可以通过包脚本使用:
+
+```bash
+pnpm inspector
+```
+
+Inspector 将提供一个 URL,用于在浏览器中访问调试工具。
+
+## 交流社区
+
+- [MCP Server Telegram](https://t.me/+N0gv4O9SXio2YWU1)
+- [MCP Server Discord](https://discord.gg/RsYPRrnyqg)
+
+## 关于作者
+
+- [idoubi](https://bento.me/idoubi)
+- [跟艾逗笔学全栈开发](https://1024.pagen.io)

+ 91 - 0
mcp-servers/chatsum/README.md

@@ -0,0 +1,91 @@
+# mcp-server-chatsum
+
+This MCP Server is used to summarize your chat messages.
+
+![preview](https://github.com/chatmcp/mcp-server-chatsum/blob/main/preview.png?raw=true)
+
+> **Before you start**
+>
+> move to [chatbot](https://github.com/chatmcp/chatbot) directory, follow the [README](https://github.com/chatmcp/chatbot/blob/main/README.md) to setup the chat database.
+>
+> start chatbot to save your chat messages.
+
+## Features
+
+### Resources
+
+### Tools
+
+- `query_chat_messages` - Query chat messages
+  - Query chat messages with given parameters
+  - Summarize chat messages based on the query prompt
+
+### Prompts
+
+## Development
+
+1. Set up environment variables:
+
+create `.env` file in the root directory, and set your chat database path.
+
+```txt
+CHAT_DB_PATH=path-to/chatbot/data/chat.db
+```
+
+2. Install dependencies:
+
+```bash
+pnpm install
+```
+
+Build the server:
+
+```bash
+pnpm build
+```
+
+For development with auto-rebuild:
+
+```bash
+pnpm watch
+```
+
+## Installation
+
+To use with Claude Desktop, add the server config:
+
+On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
+On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
+
+```json
+{
+  "mcpServers": {
+    "mcp-server-chatsum": {
+      "command": "path-to/bin/node",
+      "args": ["path-to/mcp-server-chatsum/build/index.js"],
+      "env": {
+        "CHAT_DB_PATH": "path-to/mcp-server-chatsum/chatbot/data/chat.db"
+      }
+    }
+  }
+}
+```
+
+### Debugging
+
+Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script:
+
+```bash
+pnpm inspector
+```
+
+The Inspector will provide a URL to access debugging tools in your browser.
+
+## Community
+
+- [MCP Server Telegram](https://t.me/+N0gv4O9SXio2YWU1)
+- [MCP Server Discord](https://discord.gg/RsYPRrnyqg)
+
+## About the author
+
+- [idoubi](https://bento.me/idoubi)

+ 38 - 0
mcp-servers/chatsum/init.go

@@ -0,0 +1,38 @@
+package chatsum
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"chatsum",
+			"ChatSum",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("聊天摘要"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/chatmcp/mcp-server-chatsum",
+			),
+			mcpservers.WithTags([]string{"chat"}),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server that allows LLMs to generate summaries of chat conversations using natural language.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一种用于生成聊天会话摘要的模型上下文协议(MCP)服务器。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 232 - 0
mcp-servers/elasticsearch/README.cn.md

@@ -0,0 +1,232 @@
+# Elasticsearch MCP 服务器
+
+> <https://github.com/elastic/mcp-server-elasticsearch>
+
+此存储库包含用于研究和评估的实验性功能,不适用于生产环境。
+
+使用模型上下文协议(MCP)从任何 MCP 客户端(如 Claude Desktop)直接连接到您的 Elasticsearch 数据。
+
+此服务器使用模型上下文协议将智能体连接到您的 Elasticsearch 数据。它允许您通过自然语言对话与 Elasticsearch 索引进行交互。
+
+## 可用工具
+
+* `list_indices`:列出所有可用的 Elasticsearch 索引
+* `get_mappings`:获取特定 Elasticsearch 索引的字段映射
+* `search`:使用提供的查询 DSL 执行 Elasticsearch 搜索
+* `get_shards`:获取所有或特定索引的分片信息
+
+## 先决条件
+
+* 一个 Elasticsearch 实例
+* Elasticsearch 身份验证凭据(API 密钥或用户名/密码)
+* MCP 客户端(例如 Claude Desktop)
+
+## 演示
+
+<https://github.com/user-attachments/assets/5dd292e1-a728-4ca7-8f01-1380d1bebe0c>
+
+## 安装和设置
+
+### 通过 Smithery 安装
+
+通过 [Smithery](https://smithery.ai/server/@elastic/mcp-server-elasticsearch) 自动为 Claude Desktop 安装 Elasticsearch MCP 服务器:
+
+```bash
+npx -y @smithery/cli install @elastic/mcp-server-elasticsearch --client claude
+```
+
+### 使用已发布的 NPM 包
+
+> [!TIP]
+> 使用 Elasticsearch MCP 服务器的最简单方法是通过已发布的 npm 包。
+
+1. **配置 MCP 客户端**
+   * 打开您的 MCP 客户端。查看 [MCP 客户端列表](https://modelcontextprotocol.io/clients),这里我们配置 Claude Desktop。
+   * 转到 **设置 > 开发者 > MCP 服务器**
+   * 点击 `编辑配置` 并添加一个新的 MCP 服务器,配置如下:
+
+   ```json
+   {
+     "mcpServers": {
+       "elasticsearch-mcp-server": {
+         "command": "npx",
+         "args": [
+           "-y",
+           "@elastic/mcp-server-elasticsearch"
+         ],
+         "env": {
+           "ES_URL": "your-elasticsearch-url",
+           "ES_API_KEY": "your-api-key"
+         }
+       }
+     }
+   }
+   ```
+
+2. **开始对话**
+   * 在您的 MCP 客户端中打开新对话
+   * MCP 服务器应该会自动连接
+   * 现在您可以询问关于 Elasticsearch 数据的问题
+
+### 配置选项
+
+Elasticsearch MCP 服务器支持配置选项来连接到您的 Elasticsearch:
+
+> [!NOTE]
+> 您必须提供 API 密钥或用户名和密码来进行身份验证。
+
+| 环境变量 | 描述 | 必需 |
+|---------|------|------|
+| `ES_URL` | 您的 Elasticsearch 实例 URL | 是 |
+| `ES_API_KEY` | 用于身份验证的 Elasticsearch API 密钥 | 否 |
+| `ES_USERNAME` | 用于基本身份验证的 Elasticsearch 用户名 | 否 |
+| `ES_PASSWORD` | 用于基本身份验证的 Elasticsearch 密码 | 否 |
+| `ES_CA_CERT` | Elasticsearch SSL/TLS 自定义 CA 证书路径 | 否 |
+| `ES_SSL_SKIP_VERIFY` | 设置为 '1' 或 'true' 以跳过 SSL 证书验证 | 否 |
+| `ES_PATH_PREFIX` | 在非根路径暴露的 Elasticsearch 实例的路径前缀 | 否 |
+| `ES_VERSION` | 服务器假设 Elasticsearch 9.x。设置为 `8` 以目标 Elasticsearch 8.x | 否 |
+
+### 本地开发
+
+> [!NOTE]
+> 如果您想修改或扩展 MCP 服务器,请按照这些本地开发步骤。
+
+1. **使用正确的 Node.js 版本**
+
+   ```bash
+   nvm use
+   ```
+
+2. **安装依赖**
+
+   ```bash
+   npm install
+   ```
+
+3. **构建项目**
+
+   ```bash
+   npm run build
+   ```
+
+4. **在 Claude Desktop 应用中本地运行**
+   * 打开 **Claude Desktop 应用**
+   * 转到 **设置 > 开发者 > MCP 服务器**
+   * 点击 `编辑配置` 并添加一个新的 MCP 服务器,配置如下:
+
+   ```json
+   {
+     "mcpServers": {
+       "elasticsearch-mcp-server-local": {
+         "command": "node",
+         "args": [
+           "/path/to/your/project/dist/index.js"
+         ],
+         "env": {
+           "ES_URL": "your-elasticsearch-url",
+           "ES_API_KEY": "your-api-key"
+         }
+       }
+     }
+   }
+   ```
+
+5. **使用 MCP Inspector 调试**
+
+   ```bash
+   ES_URL=your-elasticsearch-url ES_API_KEY=your-api-key npm run inspector
+   ```
+
+   这将启动 MCP Inspector,允许您调试和分析请求。您应该会看到:
+
+   ```bash
+   Starting MCP inspector...
+   Proxy server listening on port 3000
+
+   🔍 MCP Inspector is up and running at http://localhost:5173 🚀
+   ```
+
+#### Docker 镜像
+
+如果您想在容器中构建和运行服务器,可以使用 `Dockerfile`。要构建,运行:
+
+```sh
+docker build -t mcp-server-elasticsearch .
+```
+
+要运行,不使用上面的 `npx` 命令或自定义的 `node` 或 `npm` 命令,而是运行:
+
+```sh
+docker run -i \
+  -e ES_URL=<url> \
+  -e ES_API_KEY=<key> \
+  mcp-server-elasticsearch
+```
+
+## 贡献
+
+我们欢迎社区的贡献!有关如何贡献的详细信息,请参阅[贡献指南](/docs/CONTRIBUTING.md)。
+
+## 示例问题
+
+> [!TIP]
+> 这里是一些您可以在 MCP 客户端中尝试的自然语言查询。
+
+* "我的 Elasticsearch 集群中有哪些索引?"
+* "显示 'products' 索引的字段映射。"
+* "查找上个月所有超过 $500 的订单。"
+* "哪些产品收到了最多的 5 星评价?"
+
+## 工作原理
+
+1. MCP 客户端分析您的请求并确定需要哪些 Elasticsearch 操作。
+2. MCP 服务器执行这些操作(列出索引、获取映射、执行搜索)。
+3. MCP 客户端处理结果并以用户友好的格式呈现。
+
+## 安全最佳实践
+
+> [!WARNING]
+> 避免使用集群管理员权限。创建具有有限范围的专用 API 密钥,并在索引级别应用细粒度访问控制以防止未经授权的数据访问。
+
+您可以创建一个具有最小权限的专用 Elasticsearch API 密钥来控制对数据的访问:
+
+```
+POST /_security/api_key
+{
+  "name": "es-mcp-server-access",
+  "role_descriptors": {
+    "mcp_server_role": {
+      "cluster": [
+        "monitor"
+      ],
+      "indices": [
+        {
+          "names": [
+            "index-1",
+            "index-2",
+            "index-pattern-*"
+          ],
+          "privileges": [
+            "read",
+            "view_index_metadata"
+          ]
+        }
+      ]
+    }
+  }
+}
+```
+
+## 许可证
+
+此项目使用 Apache License 2.0 许可证。
+
+## 故障排除
+
+* 确保您的 MCP 配置正确。
+* 验证您的 Elasticsearch URL 可以从您的机器访问。
+* 检查您的身份验证凭据(API 密钥或用户名/密码)具有必要的权限。
+* 如果使用带有自定义 CA 的 SSL/TLS,验证证书路径正确且文件可读。
+* 查看终端输出中的错误消息。
+
+如果遇到问题,请随时在 GitHub 存储库上开启 issue。

+ 232 - 0
mcp-servers/elasticsearch/README.md

@@ -0,0 +1,232 @@
+# Elasticsearch MCP Server
+
+> <https://github.com/elastic/mcp-server-elasticsearch>
+
+This repository contains experimental features intended for research and evaluation and are not production-ready.
+
+Connect to your Elasticsearch data directly from any MCP Client (like Claude Desktop) using the Model Context Protocol (MCP).
+
+This server connects agents to your Elasticsearch data using the Model Context Protocol. It allows you to interact with your Elasticsearch indices through natural language conversations.
+
+## Available Tools
+
+* `list_indices`: List all available Elasticsearch indices
+* `get_mappings`: Get field mappings for a specific Elasticsearch index
+* `search`: Perform an Elasticsearch search with the provided query DSL
+* `get_shards`: Get shard information for all or specific indices
+
+## Prerequisites
+
+* An Elasticsearch instance
+* Elasticsearch authentication credentials (API key or username/password)
+* MCP Client (e.g. Claude Desktop)
+
+## Demo
+
+<https://github.com/user-attachments/assets/5dd292e1-a728-4ca7-8f01-1380d1bebe0c>
+
+## Installation & Setup
+
+### Installing via Smithery
+
+To install Elasticsearch MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@elastic/mcp-server-elasticsearch):
+
+```bash
+npx -y @smithery/cli install @elastic/mcp-server-elasticsearch --client claude
+```
+
+### Using the Published NPM Package
+
+> [!TIP]
+> The easiest way to use Elasticsearch MCP Server is through the published npm package.
+
+1. **Configure MCP Client**
+   * Open your MCP Client. See the [list of MCP Clients](https://modelcontextprotocol.io/clients), here we are configuring Claude Desktop.
+   * Go to **Settings > Developer > MCP Servers**
+   * Click `Edit Config` and add a new MCP Server with the following configuration:
+
+   ```json
+   {
+     "mcpServers": {
+       "elasticsearch-mcp-server": {
+         "command": "npx",
+         "args": [
+           "-y",
+           "@elastic/mcp-server-elasticsearch"
+         ],
+         "env": {
+           "ES_URL": "your-elasticsearch-url",
+           "ES_API_KEY": "your-api-key"
+         }
+       }
+     }
+   }
+   ```
+
+2. **Start a Conversation**
+   * Open a new conversation in your MCP Client
+   * The MCP server should connect automatically
+   * You can now ask questions about your Elasticsearch data
+
+### Configuration Options
+
+The Elasticsearch MCP Server supports configuration options to connect to your Elasticsearch:
+
+> [!NOTE]
+> You must provide either an API key or both username and password for authentication.
+
+| Environment Variable | Description | Required |
+|---------------------|-------------|----------|
+| `ES_URL` | Your Elasticsearch instance URL | Yes |
+| `ES_API_KEY` | Elasticsearch API key for authentication | No |
+| `ES_USERNAME` | Elasticsearch username for basic authentication | No |
+| `ES_PASSWORD` | Elasticsearch password for basic authentication | No |
+| `ES_CA_CERT` | Path to custom CA certificate for Elasticsearch SSL/TLS | No |
+| `ES_SSL_SKIP_VERIFY` | Set to '1' or 'true' to skip SSL certificate verification | No |
+| `ES_PATH_PREFIX` | Path prefix for Elasticsearch instance exposed at a non-root path | No |
+| `ES_VERSION` | Server assumes Elasticsearch 9.x. Set to `8` target Elasticsearch 8.x | No |
+
+### Developing Locally
+
+> [!NOTE]
+> If you want to modify or extend the MCP Server, follow these local development steps.
+
+1. **Use the correct Node.js version**
+
+   ```bash
+   nvm use
+   ```
+
+2. **Install Dependencies**
+
+   ```bash
+   npm install
+   ```
+
+3. **Build the Project**
+
+   ```bash
+   npm run build
+   ```
+
+4. **Run locally in Claude Desktop App**
+   * Open **Claude Desktop App**
+   * Go to **Settings > Developer > MCP Servers**
+   * Click `Edit Config` and add a new MCP Server with the following configuration:
+
+   ```json
+   {
+     "mcpServers": {
+       "elasticsearch-mcp-server-local": {
+         "command": "node",
+         "args": [
+           "/path/to/your/project/dist/index.js"
+         ],
+         "env": {
+           "ES_URL": "your-elasticsearch-url",
+           "ES_API_KEY": "your-api-key"
+         }
+       }
+     }
+   }
+   ```
+
+5. **Debugging with MCP Inspector**
+
+   ```bash
+   ES_URL=your-elasticsearch-url ES_API_KEY=your-api-key npm run inspector
+   ```
+
+   This will start the MCP Inspector, allowing you to debug and analyze requests. You should see:
+
+   ```bash
+   Starting MCP inspector...
+   Proxy server listening on port 3000
+
+   🔍 MCP Inspector is up and running at http://localhost:5173 🚀
+   ```
+
+#### Docker image
+
+A `Dockerfile` is available if you would like to build and run the server in a container. To build, run:
+
+```sh
+docker build -t mcp-server-elasticsearch .
+```
+
+And to run, rather than using the `npx` command above or a custom `node` or `npm` command, run:
+
+```sh
+docker run -i \
+  -e ES_URL=<url> \
+  -e ES_API_KEY=<key> \
+  mcp-server-elasticsearch
+```
+
+## Contributing
+
+We welcome contributions from the community! For details on how to contribute, please see [Contributing Guidelines](/docs/CONTRIBUTING.md).
+
+## Example Questions
+
+> [!TIP]
+> Here are some natural language queries you can try with your MCP Client.
+
+* "What indices do I have in my Elasticsearch cluster?"
+* "Show me the field mappings for the 'products' index."
+* "Find all orders over $500 from last month."
+* "Which products received the most 5-star reviews?"
+
+## How It Works
+
+1. The MCP Client analyzes your request and determines which Elasticsearch operations are needed.
+2. The MCP server carries out these operations (listing indices, fetching mappings, performing searches).
+3. The MCP Client processes the results and presents them in a user-friendly format.
+
+## Security Best Practices
+
+> [!WARNING]
+> Avoid using cluster-admin privileges. Create dedicated API keys with limited scope and apply fine-grained access control at the index level to prevent unauthorized data access.
+
+You can create a dedicated Elasticsearch API key with minimal permissions to control access to your data:
+
+```
+POST /_security/api_key
+{
+  "name": "es-mcp-server-access",
+  "role_descriptors": {
+    "mcp_server_role": {
+      "cluster": [
+        "monitor"
+      ],
+      "indices": [
+        {
+          "names": [
+            "index-1",
+            "index-2",
+            "index-pattern-*"
+          ],
+          "privileges": [
+            "read",
+            "view_index_metadata"
+          ]
+        }
+      ]
+    }
+  }
+}
+```
+
+## License
+
+This project is licensed under the Apache License 2.0.
+
+## Troubleshooting
+
+* Ensure your MCP configuration is correct.
+* Verify that your Elasticsearch URL is accessible from your machine.
+* Check that your authentication credentials (API key or username/password) have the necessary permissions.
+* If using SSL/TLS with a custom CA, verify that the certificate path is correct and the file is readable.
+* Look at the terminal output for error messages.
+
+If you encounter issues, feel free to open an issue on the GitHub repository.

+ 35 - 0
mcp-servers/elasticsearch/init.go

@@ -0,0 +1,35 @@
+package elasticsearch
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"elasticsearch",
+			"Elasticsearch",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithTags([]string{"database"}),
+			mcpservers.WithGitHubURL("https://github.com/elastic/mcp-server-elasticsearch"),
+			mcpservers.WithDescription(
+				"Connects Claude and other MCP clients to Elasticsearch data, allowing users to interact with their Elasticsearch indexes through natural language conversations.",
+			),
+			mcpservers.WithDescriptionCN(
+				"将Claude和其他MCP客户端连接到Elasticsearch数据,允许用户通过自然语言对话与其Elasticsearch索引进行交互。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 259 - 0
mcp-servers/everything-search/README.cn.md

@@ -0,0 +1,259 @@
+# Everything 搜索 MCP 服务器
+
+[![smithery badge](https://smithery.ai/badge/mcp-server-everything-search)](https://smithery.ai/server/mcp-server-everything-search)
+
+一个提供跨 Windows、macOS 和 Linux 快速文件搜索功能的 MCP 服务器。在 Windows 上,它使用 [Everything](https://www.voidtools.com/) SDK。在 macOS 上,它使用内置的 `mdfind` 命令。在 Linux 上,它使用 `locate`/`plocate` 命令。
+
+## 工具
+
+### search
+
+在您的系统中搜索文件和文件夹。搜索功能和语法支持因平台而异:
+
+- Windows:完整的 Everything SDK 功能(请参阅下面的语法指南)
+- macOS:使用 Spotlight 数据库进行基本文件名和内容搜索
+- Linux:使用 locate 数据库进行基本文件名搜索
+
+参数:
+
+- `query`(必需):搜索查询字符串。请参阅下面的平台特定说明。
+- `max_results`(可选):返回的最大结果数(默认:100,最大:1000)
+- `match_path`(可选):匹配完整路径而不是仅文件名(默认:false)
+- `match_case`(可选):启用区分大小写搜索(默认:false)
+- `match_whole_word`(可选):仅匹配完整单词(默认:false)
+- `match_regex`(可选):启用正则表达式搜索(默认:false)
+- `sort_by`(可选):结果排序顺序(默认:1)。可用选项:
+
+```
+  - 1: 按文件名排序(A 到 Z)
+  - 2: 按文件名排序(Z 到 A)
+  - 3: 按路径排序(A 到 Z)
+  - 4: 按路径排序(Z 到 A)
+  - 5: 按大小排序(最小优先)
+  - 6: 按大小排序(最大优先)
+  - 7: 按扩展名排序(A 到 Z)
+  - 8: 按扩展名排序(Z 到 A)
+  - 11: 按创建日期排序(最旧优先)
+  - 12: 按创建日期排序(最新优先)
+  - 13: 按修改日期排序(最旧优先)
+  - 14: 按修改日期排序(最新优先)
+```
+
+示例:
+
+```json
+{
+  "query": "*.py",
+  "max_results": 50,
+  "sort_by": 6
+}
+```
+
+```json
+{
+  "query": "ext:py datemodified:today",
+  "max_results": 10
+}
+```
+
+响应包括:
+
+- 文件/文件夹路径
+- 文件大小(字节)
+- 最后修改日期
+
+### 搜索语法指南
+
+有关每个平台(Windows、macOS 和 Linux)支持的搜索语法的详细信息,请参阅 [SEARCH_SYNTAX.md](SEARCH_SYNTAX.md)。
+
+## 先决条件
+
+### Windows
+
+1. [Everything](https://www.voidtools.com/) 搜索工具:
+   - 从 <https://www.voidtools.com/> 下载并安装
+   - **确保 Everything 服务正在运行**
+2. Everything SDK:
+   - 从 <https://www.voidtools.com/support/everything/sdk/> 下载
+   - 将 SDK 文件解压到系统上的某个位置
+
+### Linux
+
+1. 安装并初始化 `locate` 或 `plocate` 命令:
+   - Ubuntu/Debian:`sudo apt-get install plocate` 或 `sudo apt-get install mlocate`
+   - Fedora:`sudo dnf install mlocate`
+2. 安装后,更新数据库:
+   - 对于 plocate:`sudo updatedb`
+   - 对于 mlocate:`sudo /etc/cron.daily/mlocate`
+
+### macOS
+
+无需额外设置。服务器使用内置的 `mdfind` 命令。
+
+## 安装
+
+### 通过 Smithery 安装
+
+通过 [Smithery](https://smithery.ai/server/mcp-server-everything-search) 自动为 Claude Desktop 安装 Everything Search:
+
+```bash
+npx -y @smithery/cli install mcp-server-everything-search --client claude
+```
+
+### 使用 uv(推荐)
+
+使用 [`uv`](https://docs.astral.sh/uv/) 时无需特定安装。我们将使用 [`uvx`](https://docs.astral.sh/uv/guides/tools/) 直接运行 _mcp-server-everything-search_。
+
+### 使用 PIP
+
+或者,您可以通过 pip 安装 `mcp-server-everything-search`:
+
+```
+pip install mcp-server-everything-search
+```
+
+安装后,您可以使用以下命令作为脚本运行:
+
+```
+python -m mcp_server_everything_search
+```
+
+## 配置
+
+### Windows
+
+服务器需要 Everything SDK DLL 可用:
+
+环境变量:
+
+```
+EVERYTHING_SDK_PATH=path\to\Everything-SDK\dll\Everything64.dll
+```
+
+### Linux 和 macOS
+
+无需额外配置。
+
+### 与 Claude Desktop 一起使用
+
+根据您的平台,将以下配置之一添加到您的 `claude_desktop_config.json`:
+
+<details>
+<summary>Windows(使用 uvx)</summary>
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "uvx",
+    "args": ["mcp-server-everything-search"],
+    "env": {
+      "EVERYTHING_SDK_PATH": "path/to/Everything-SDK/dll/Everything64.dll"
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>Windows(使用 pip 安装)</summary>
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "python",
+    "args": ["-m", "mcp_server_everything_search"],
+    "env": {
+      "EVERYTHING_SDK_PATH": "path/to/Everything-SDK/dll/Everything64.dll"
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>Linux 和 macOS</summary>
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "uvx",
+    "args": ["mcp-server-everything-search"]
+  }
+}
+```
+
+或者如果使用 pip 安装:
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "python",
+    "args": ["-m", "mcp_server_everything_search"]
+  }
+}
+```
+
+</details>
+
+## 调试
+
+您可以使用 MCP 检查器来调试服务器。对于 uvx 安装:
+
+```
+npx @modelcontextprotocol/inspector uvx mcp-server-everything-search
+```
+
+或者如果您已将包安装在特定目录中或正在开发它:
+
+```
+git clone https://github.com/mamertofabian/mcp-everything-search.git
+cd mcp-everything-search/src/mcp_server_everything_search
+npx @modelcontextprotocol/inspector uv run mcp-server-everything-search
+```
+
+查看服务器日志:
+
+Linux/macOS:
+
+```bash
+tail -f ~/.config/Claude/logs/mcp*.log
+```
+
+Windows(PowerShell):
+
+```powershell
+Get-Content -Path "$env:APPDATA\Claude\logs\mcp*.log" -Tail 20 -Wait
+```
+
+## 开发
+
+如果您正在进行本地开发,有两种方法测试您的更改:
+
+1. 运行 MCP 检查器来测试您的更改。有关运行说明,请参阅[调试](#调试)。
+
+2. 使用 Claude 桌面应用程序进行测试。将以下内容添加到您的 `claude_desktop_config.json`:
+
+```json
+"everything-search": {
+  "command": "uv",
+  "args": [
+    "--directory",
+    "/path/to/mcp-everything-search/src/mcp_server_everything_search",
+    "run",
+    "mcp-server-everything-search"
+  ],
+  "env": {
+    "EVERYTHING_SDK_PATH": "path/to/Everything-SDK/dll/Everything64.dll"
+  }
+}
+```
+
+## 许可证
+
+此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。有关更多详细信息,请参阅项目存储库中的 LICENSE 文件。
+
+## 免责声明
+
+此项目与 voidtools(Everything 搜索工具的创建者)无关,未得到其认可或赞助。这是一个独立项目,使用公开可用的 Everything SDK。

+ 260 - 0
mcp-servers/everything-search/README.md

@@ -0,0 +1,260 @@
+# Everything Search MCP Server
+
+[![smithery badge](https://smithery.ai/badge/mcp-server-everything-search)](https://smithery.ai/server/mcp-server-everything-search)
+
+An MCP server that provides fast file searching capabilities across Windows, macOS, and Linux. On Windows, it uses the [Everything](https://www.voidtools.com/) SDK. On macOS, it uses the built-in `mdfind` command. On Linux, it uses the `locate`/`plocate` command.
+
+## Tools
+
+### search
+
+Search for files and folders across your system. The search capabilities and syntax support vary by platform:
+
+- Windows: Full Everything SDK features (see syntax guide below)
+- macOS: Basic filename and content search using Spotlight database
+- Linux: Basic filename search using locate database
+
+Parameters:
+
+- `query` (required): Search query string. See platform-specific notes below.
+- `max_results` (optional): Maximum number of results to return (default: 100, max: 1000)
+- `match_path` (optional): Match against full path instead of filename only (default: false)
+- `match_case` (optional): Enable case-sensitive search (default: false)
+- `match_whole_word` (optional): Match whole words only (default: false)
+- `match_regex` (optional): Enable regex search (default: false)
+- `sort_by` (optional): Sort order for results (default: 1). Available options:
+
+```
+  - 1: Sort by filename (A to Z)
+  - 2: Sort by filename (Z to A)
+  - 3: Sort by path (A to Z)
+  - 4: Sort by path (Z to A)
+  - 5: Sort by size (smallest first)
+  - 6: Sort by size (largest first)
+  - 7: Sort by extension (A to Z)
+  - 8: Sort by extension (Z to A)
+  - 11: Sort by creation date (oldest first)
+  - 12: Sort by creation date (newest first)
+  - 13: Sort by modification date (oldest first)
+  - 14: Sort by modification date (newest first)
+```
+
+Examples:
+
+```json
+{
+  "query": "*.py",
+  "max_results": 50,
+  "sort_by": 6
+}
+```
+
+```json
+{
+  "query": "ext:py datemodified:today",
+  "max_results": 10
+}
+```
+
+Response includes:
+
+- File/folder path
+- File size in bytes
+- Last modified date
+
+### Search Syntax Guide
+
+For detailed information about the search syntax supported on each platform (Windows, macOS, and Linux), please see [SEARCH_SYNTAX.md](SEARCH_SYNTAX.md).
+
+## Prerequisites
+
+### Windows
+
+1. [Everything](https://www.voidtools.com/) search utility:
+   - Download and install from <https://www.voidtools.com/>
+   - **Make sure the Everything service is running**
+2. Everything SDK:
+   - Download from <https://www.voidtools.com/support/everything/sdk/>
+   - Extract the SDK files to a location on your system
+
+### Linux
+
+1. Install and initialize the `locate` or `plocate` command:
+   - Ubuntu/Debian: `sudo apt-get install plocate` or `sudo apt-get install mlocate`
+   - Fedora: `sudo dnf install mlocate`
+2. After installation, update the database:
+   - For plocate: `sudo updatedb`
+   - For mlocate: `sudo /etc/cron.daily/mlocate`
+
+### macOS
+
+No additional setup required. The server uses the built-in `mdfind` command.
+
+## Installation
+
+### Installing via Smithery
+
+To install Everything Search for Claude Desktop automatically via [Smithery](https://smithery.ai/server/mcp-server-everything-search):
+
+```bash
+npx -y @smithery/cli install mcp-server-everything-search --client claude
+```
+
+### Using uv (recommended)
+
+When using [`uv`](https://docs.astral.sh/uv/) no specific installation is needed. We will
+use [`uvx`](https://docs.astral.sh/uv/guides/tools/) to directly run _mcp-server-everything-search_.
+
+### Using PIP
+
+Alternatively you can install `mcp-server-everything-search` via pip:
+
+```
+pip install mcp-server-everything-search
+```
+
+After installation, you can run it as a script using:
+
+```
+python -m mcp_server_everything_search
+```
+
+## Configuration
+
+### Windows
+
+The server requires the Everything SDK DLL to be available:
+
+Environment variable:
+
+```
+EVERYTHING_SDK_PATH=path\to\Everything-SDK\dll\Everything64.dll
+```
+
+### Linux and macOS
+
+No additional configuration required.
+
+### Usage with Claude Desktop
+
+Add one of these configurations to your `claude_desktop_config.json` based on your platform:
+
+<details>
+<summary>Windows (using uvx)</summary>
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "uvx",
+    "args": ["mcp-server-everything-search"],
+    "env": {
+      "EVERYTHING_SDK_PATH": "path/to/Everything-SDK/dll/Everything64.dll"
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>Windows (using pip installation)</summary>
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "python",
+    "args": ["-m", "mcp_server_everything_search"],
+    "env": {
+      "EVERYTHING_SDK_PATH": "path/to/Everything-SDK/dll/Everything64.dll"
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>Linux and macOS</summary>
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "uvx",
+    "args": ["mcp-server-everything-search"]
+  }
+}
+```
+
+Or if using pip installation:
+
+```json
+"mcpServers": {
+  "everything-search": {
+    "command": "python",
+    "args": ["-m", "mcp_server_everything_search"]
+  }
+}
+```
+
+</details>
+
+## Debugging
+
+You can use the MCP inspector to debug the server. For uvx installations:
+
+```
+npx @modelcontextprotocol/inspector uvx mcp-server-everything-search
+```
+
+Or if you've installed the package in a specific directory or are developing on it:
+
+```
+git clone https://github.com/mamertofabian/mcp-everything-search.git
+cd mcp-everything-search/src/mcp_server_everything_search
+npx @modelcontextprotocol/inspector uv run mcp-server-everything-search
+```
+
+To view server logs:
+
+Linux/macOS:
+
+```bash
+tail -f ~/.config/Claude/logs/mcp*.log
+```
+
+Windows (PowerShell):
+
+```powershell
+Get-Content -Path "$env:APPDATA\Claude\logs\mcp*.log" -Tail 20 -Wait
+```
+
+## Development
+
+If you are doing local development, there are two ways to test your changes:
+
+1. Run the MCP inspector to test your changes. See [Debugging](#debugging) for run instructions.
+
+2. Test using the Claude desktop app. Add the following to your `claude_desktop_config.json`:
+
+```json
+"everything-search": {
+  "command": "uv",
+  "args": [
+    "--directory",
+    "/path/to/mcp-everything-search/src/mcp_server_everything_search",
+    "run",
+    "mcp-server-everything-search"
+  ],
+  "env": {
+    "EVERYTHING_SDK_PATH": "path/to/Everything-SDK/dll/Everything64.dll"
+  }
+}
+```
+
+## License
+
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
+
+## Disclaimer
+
+This project is not affiliated with, endorsed by, or sponsored by voidtools (the creators of Everything search utility). This is an independent project that utilizes the publicly available Everything SDK.

+ 38 - 0
mcp-servers/everything-search/init.go

@@ -0,0 +1,38 @@
+package everythingsearch
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"everything-search",
+			"Everything Search",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Everything Search"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/mamertofabian/mcp-everything-search",
+			),
+			mcpservers.WithTags([]string{"search"}),
+			mcpservers.WithDescription(
+				"Use Everything SDK's fast file search functionality",
+			),
+			mcpservers.WithDescriptionCN(
+				"使用Everything SDK的快速文件搜索功能",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 183 - 0
mcp-servers/excel/README.cn.md

@@ -0,0 +1,183 @@
+# Excel MCP 服务器
+
+> <https://github.com/negokaz/excel-mcp-server>
+
+<img src="https://github.com/negokaz/excel-mcp-server/blob/main/docs/img/icon-800.png?raw=true" width="128">
+
+[![NPM Version](https://img.shields.io/npm/v/@negokaz/excel-mcp-server)](https://www.npmjs.com/package/@negokaz/excel-mcp-server)
+[![smithery badge](https://smithery.ai/badge/@negokaz/excel-mcp-server)](https://smithery.ai/server/@negokaz/excel-mcp-server)
+
+一个用于读取和写入 MS Excel 数据的模型上下文协议 (MCP) 服务器。
+
+## 功能特性
+
+- 读取/写入文本值
+- 读取/写入公式
+- 创建新工作表
+
+**🪟仅限 Windows:**
+
+- 实时编辑
+- 从工作表捕获屏幕图像
+
+更多详细信息,请参见[工具](#tools)部分。
+
+## 系统要求
+
+- Node.js 20.x 或更高版本
+
+## 支持的文件格式
+
+- xlsx (Excel 工作簿)
+- xlsm (Excel 启用宏的工作簿)
+- xltx (Excel 模板)
+- xltm (Excel 启用宏的模板)
+
+## 安装
+
+### 通过 NPM 安装
+
+通过在 MCP 服务器配置中添加以下配置,excel-mcp-server 会自动安装。
+
+Windows 系统:
+
+```json
+{
+    "mcpServers": {
+        "excel": {
+            "command": "cmd",
+            "args": ["/c", "npx", "--yes", "@negokaz/excel-mcp-server"],
+            "env": {
+                "EXCEL_MCP_PAGING_CELLS_LIMIT": "4000"
+            }
+        }
+    }
+}
+```
+
+其他平台:
+
+```json
+{
+    "mcpServers": {
+        "excel": {
+            "command": "npx",
+            "args": ["--yes", "@negokaz/excel-mcp-server"],
+            "env": {
+                "EXCEL_MCP_PAGING_CELLS_LIMIT": "4000"
+            }
+        }
+    }
+}
+```
+
+### 通过 Smithery 安装
+
+通过 [Smithery](https://smithery.ai/server/@negokaz/excel-mcp-server) 为 Claude Desktop 自动安装 Excel MCP 服务器:
+
+```bash
+npx -y @smithery/cli install @negokaz/excel-mcp-server --client claude
+```
+
+<h2 id="tools">工具</h2>
+
+### `excel_describe_sheets`
+
+列出指定 Excel 文件的所有工作表信息。
+
+**参数:**
+
+- `fileAbsolutePath`
+  - Excel 文件的绝对路径
+
+### `excel_read_sheet`
+
+分页读取 Excel 工作表中的值。
+
+**参数:**
+
+- `fileAbsolutePath`
+  - Excel 文件的绝对路径
+- `sheetName`
+  - Excel 文件中的工作表名称
+- `range`
+  - 要读取的 Excel 工作表中的单元格范围(例如:"A1:C10")。[默认:第一个分页范围]
+- `knownPagingRanges`
+  - 已读取的分页范围列表
+- `showFormula`
+  - 显示公式而不是值
+
+### `excel_screen_capture`
+
+**[仅限 Windows]** 分页截取 Excel 工作表的屏幕截图。
+
+**参数:**
+
+- `fileAbsolutePath`
+  - Excel 文件的绝对路径
+- `sheetName`
+  - Excel 文件中的工作表名称
+- `range`
+  - 要读取的 Excel 工作表中的单元格范围(例如:"A1:C10")。[默认:第一个分页范围]
+- `knownPagingRanges`
+  - 已读取的分页范围列表
+
+### `excel_write_to_sheet`
+
+向 Excel 工作表写入值。
+
+**参数:**
+
+- `fileAbsolutePath`
+  - Excel 文件的绝对路径
+- `sheetName`
+  - Excel 文件中的工作表名称
+- `newSheet`
+  - 如果为 true 则创建新工作表,否则写入现有工作表
+- `range`
+  - 要读取的 Excel 工作表中的单元格范围(例如:"A1:C10")
+- `values`
+  - 要写入 Excel 工作表的值。如果值是公式,应以"="开头
+
+### `excel_create_table`
+
+在 Excel 工作表中创建表格
+
+**参数:**
+
+- `fileAbsolutePath`
+  - Excel 文件的绝对路径
+- `sheetName`
+  - 创建表格的工作表名称
+- `range`
+  - 要成为表格的范围(例如:"A1:C10")
+- `tableName`
+  - 要创建的表格名称
+
+### `excel_copy_sheet`
+
+将现有工作表复制到新工作表
+
+**参数:**
+
+- `fileAbsolutePath`
+  - Excel 文件的绝对路径
+- `srcSheetName`
+  - Excel 文件中的源工作表名称
+- `dstSheetName`
+  - 要复制到的工作表名称
+
+<h2 id="configuration">配置</h2>
+
+您可以通过以下环境变量更改 MCP 服务器的行为:
+
+### `EXCEL_MCP_PAGING_CELLS_LIMIT`
+
+单次分页操作中读取的最大单元格数。  
+[默认:4000]
+
+## 许可证
+
+版权所有 (c) 2025 Kazuki Negoro
+
+excel-mcp-server 基于 [MIT 许可证](LICENSE) 发布

+ 183 - 0
mcp-servers/excel/README.md

@@ -0,0 +1,183 @@
+# Excel MCP Server
+
+> <https://github.com/negokaz/excel-mcp-server>
+
+<img src="https://github.com/negokaz/excel-mcp-server/blob/main/docs/img/icon-800.png?raw=true" width="128">
+
+[![NPM Version](https://img.shields.io/npm/v/@negokaz/excel-mcp-server)](https://www.npmjs.com/package/@negokaz/excel-mcp-server)
+[![smithery badge](https://smithery.ai/badge/@negokaz/excel-mcp-server)](https://smithery.ai/server/@negokaz/excel-mcp-server)
+
+A Model Context Protocol (MCP) server that reads and writes MS Excel data.
+
+## Features
+
+- Read/Write text values
+- Read/Write formulas
+- Create new sheets
+
+**🪟Windows only:**
+
+- Live editing
+- Capture screen image from a sheet
+
+For more details, see the [tools](#tools) section.
+
+## Requirements
+
+- Node.js 20.x or later
+
+## Supported file formats
+
+- xlsx (Excel book)
+- xlsm (Excel macro-enabled book)
+- xltx (Excel template)
+- xltm (Excel macro-enabled template)
+
+## Installation
+
+### Installing via NPM
+
+excel-mcp-server is automatically installed by adding the following configuration to the MCP servers configuration.
+
+For Windows:
+
+```json
+{
+    "mcpServers": {
+        "excel": {
+            "command": "cmd",
+            "args": ["/c", "npx", "--yes", "@negokaz/excel-mcp-server"],
+            "env": {
+                "EXCEL_MCP_PAGING_CELLS_LIMIT": "4000"
+            }
+        }
+    }
+}
+```
+
+For other platforms:
+
+```json
+{
+    "mcpServers": {
+        "excel": {
+            "command": "npx",
+            "args": ["--yes", "@negokaz/excel-mcp-server"],
+            "env": {
+                "EXCEL_MCP_PAGING_CELLS_LIMIT": "4000"
+            }
+        }
+    }
+}
+```
+
+### Installing via Smithery
+
+To install Excel MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@negokaz/excel-mcp-server):
+
+```bash
+npx -y @smithery/cli install @negokaz/excel-mcp-server --client claude
+```
+
+<h2 id="tools">Tools</h2>
+
+### `excel_describe_sheets`
+
+List all sheet information of specified Excel file.
+
+**Arguments:**
+
+- `fileAbsolutePath`
+  - Absolute path to the Excel file
+
+### `excel_read_sheet`
+
+Read values from Excel sheet with pagination.
+
+**Arguments:**
+
+- `fileAbsolutePath`
+  - Absolute path to the Excel file
+- `sheetName`
+  - Sheet name in the Excel file
+- `range`
+  - Range of cells to read in the Excel sheet (e.g., "A1:C10"). [default: first paging range]
+- `knownPagingRanges`
+  - List of already read paging ranges
+- `showFormula`
+  - Show formula instead of value
+
+### `excel_screen_capture`
+
+**[Windows only]** Take a screenshot of the Excel sheet with pagination.
+
+**Arguments:**
+
+- `fileAbsolutePath`
+  - Absolute path to the Excel file
+- `sheetName`
+  - Sheet name in the Excel file
+- `range`
+  - Range of cells to read in the Excel sheet (e.g., "A1:C10"). [default: first paging range]
+- `knownPagingRanges`
+  - List of already read paging ranges
+
+### `excel_write_to_sheet`
+
+Write values to the Excel sheet.
+
+**Arguments:**
+
+- `fileAbsolutePath`
+  - Absolute path to the Excel file
+- `sheetName`
+  - Sheet name in the Excel file
+- `newSheet`
+  - Create a new sheet if true, otherwise write to the existing sheet
+- `range`
+  - Range of cells to read in the Excel sheet (e.g., "A1:C10").
+- `values`
+  - Values to write to the Excel sheet. If the value is a formula, it should start with "="
+
+### `excel_create_table`
+
+Create a table in the Excel sheet
+
+**Arguments:**
+
+- `fileAbsolutePath`
+  - Absolute path to the Excel file
+- `sheetName`
+  - Sheet name where the table is created
+- `range`
+  - Range to be a table (e.g., "A1:C10")
+- `tableName`
+  - Table name to be created
+
+### `excel_copy_sheet`
+
+Copy existing sheet to a new sheet
+
+**Arguments:**
+
+- `fileAbsolutePath`
+  - Absolute path to the Excel file
+- `srcSheetName`
+  - Source sheet name in the Excel file
+- `dstSheetName`
+  - Sheet name to be copied
+
+<h2 id="configuration">Configuration</h2>
+
+You can change the MCP Server behaviors by the following environment variables:
+
+### `EXCEL_MCP_PAGING_CELLS_LIMIT`
+
+The maximum number of cells to read in a single paging operation.  
+[default: 4000]
+
+## License
+
+Copyright (c) 2025 Kazuki Negoro
+
+excel-mcp-server is released under the [MIT License](LICENSE)

+ 38 - 0
mcp-servers/excel/init.go

@@ -0,0 +1,38 @@
+package excel
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"excel",
+			"Excel",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Excel"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/negokaz/excel-mcp-server",
+			),
+			mcpservers.WithTags([]string{"excel"}),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server that allows LLMs to read and write Excel files using natural language. Supports xlsx, xlsm, xltx, and xltm formats.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一种用于读写Excel文件的模型上下文协议(MCP)服务器,支持xlsx、xlsm、xltx和xltm等格式。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 219 - 0
mcp-servers/filesystem/README.cn.md

@@ -0,0 +1,219 @@
+# 文件系统 MCP 服务器
+
+> <https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem>
+
+实现模型上下文协议 (MCP) 的 Node.js 服务器,用于文件系统操作。
+
+## 功能特性
+
+- 读取/写入文件
+- 创建/列出/删除目录
+- 移动文件/目录
+- 搜索文件
+- 获取文件元数据
+
+**注意**:服务器只允许在通过 `args` 指定的目录内进行操作。
+
+## API
+
+### 资源
+
+- `file://system`:文件系统操作接口
+
+### 工具
+
+- **read_file**
+  - 读取文件的完整内容
+  - 输入:`path`(字符串)
+  - 使用 UTF-8 编码读取完整文件内容
+
+- **read_multiple_files**
+  - 同时读取多个文件
+  - 输入:`paths`(字符串数组)
+  - 读取失败不会停止整个操作
+
+- **write_file**
+  - 创建新文件或覆盖现有文件(使用时请谨慎)
+  - 输入:
+    - `path`(字符串):文件位置
+    - `content`(字符串):文件内容
+
+- **edit_file**
+  - 使用高级模式匹配和格式化进行选择性编辑
+  - 功能特性:
+    - 基于行和多行内容匹配
+    - 空白符规范化并保持缩进
+    - 多个同时编辑并正确定位
+    - 缩进样式检测和保持
+    - Git 风格的差异输出和上下文
+    - 预览更改的试运行模式
+  - 输入:
+    - `path`(字符串):要编辑的文件
+    - `edits`(数组):编辑操作列表
+      - `oldText`(字符串):要搜索的文本(可以是子字符串)
+      - `newText`(字符串):要替换的文本
+    - `dryRun`(布尔值):预览更改而不应用(默认:false)
+  - 试运行时返回详细的差异和匹配信息,否则应用更改
+  - 最佳实践:始终先使用 dryRun 预览更改,然后再应用
+
+- **create_directory**
+  - 创建新目录或确保其存在
+  - 输入:`path`(字符串)
+  - 如需要会创建父目录
+  - 如果目录已存在则静默成功
+
+- **list_directory**
+  - 列出目录内容,带有 [FILE] 或 [DIR] 前缀
+  - 输入:`path`(字符串)
+
+- **move_file**
+  - 移动或重命名文件和目录
+  - 输入:
+    - `source`(字符串)
+    - `destination`(字符串)
+  - 如果目标已存在则失败
+
+- **search_files**
+  - 递归搜索文件/目录
+  - 输入:
+    - `path`(字符串):起始目录
+    - `pattern`(字符串):搜索模式
+    - `excludePatterns`(字符串数组):排除模式。支持 Glob 格式。
+  - 不区分大小写匹配
+  - 返回匹配项的完整路径
+
+- **get_file_info**
+  - 获取详细的文件/目录元数据
+  - 输入:`path`(字符串)
+  - 返回:
+    - 大小
+    - 创建时间
+    - 修改时间
+    - 访问时间
+    - 类型(文件/目录)
+    - 权限
+
+- **list_allowed_directories**
+  - 列出服务器允许访问的所有目录
+  - 无需输入
+  - 返回:
+    - 此服务器可以读取/写入的目录
+
+## 与 Claude Desktop 一起使用
+
+将此内容添加到您的 `claude_desktop_config.json`:
+
+注意:您可以通过将沙盒目录挂载到 `/projects` 来为服务器提供沙盒目录。添加 `ro` 标志将使目录对服务器只读。
+
+### Docker
+
+注意:默认情况下,所有目录都必须挂载到 `/projects`。
+
+```json
+{
+  "mcpServers": {
+    "filesystem": {
+      "command": "docker",
+      "args": [
+        "run",
+        "-i",
+        "--rm",
+        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
+        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
+        "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
+        "mcp/filesystem",
+        "/projects"
+      ]
+    }
+  }
+}
+```
+
+### NPX
+
+```json
+{
+  "mcpServers": {
+    "filesystem": {
+      "command": "npx",
+      "args": [
+        "-y",
+        "@modelcontextprotocol/server-filesystem",
+        "/Users/username/Desktop",
+        "/path/to/other/allowed/dir"
+      ]
+    }
+  }
+}
+```
+
+## 与 VS Code 一起使用
+
+快速安装,请点击下面的安装按钮...
+
+[![在 VS Code 中使用 NPX 安装](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-filesystem%22%2C%22%24%7BworkspaceFolder%7D%22%5D%7D) [![在 VS Code Insiders 中使用 NPX 安装](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-filesystem%22%2C%22%24%7BworkspaceFolder%7D%22%5D%7D&quality=insiders)
+
+[![在 VS Code 中使用 Docker 安装](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fprojects%2Fworkspace%22%2C%22mcp%2Ffilesystem%22%2C%22%2Fprojects%22%5D%7D) [![在 VS Code Insiders 中使用 Docker 安装](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fprojects%2Fworkspace%22%2C%22mcp%2Ffilesystem%22%2C%22%2Fprojects%22%5D%7D&quality=insiders)
+
+手动安装时,将以下 JSON 块添加到 VS Code 的用户设置 (JSON) 文件中。您可以按 `Ctrl + Shift + P` 并输入 `Preferences: Open Settings (JSON)` 来执行此操作。
+
+可选地,您可以将其添加到工作区中名为 `.vscode/mcp.json` 的文件中。这将允许您与他人共享配置。
+
+> 注意在 `.vscode/mcp.json` 文件中不需要 `mcp` 键。
+
+您可以通过将沙盒目录挂载到 `/projects` 来为服务器提供沙盒目录。添加 `ro` 标志将使目录对服务器只读。
+
+### Docker
+
+注意:默认情况下,所有目录都必须挂载到 `/projects`。
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "filesystem": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "--rm",
+          "--mount", "type=bind,src=${workspaceFolder},dst=/projects/workspace",
+          "mcp/filesystem",
+          "/projects"
+        ]
+      }
+    }
+  }
+}
+```
+
+### NPX
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "filesystem": {
+        "command": "npx",
+        "args": [
+          "-y",
+          "@modelcontextprotocol/server-filesystem",
+          "${workspaceFolder}"
+        ]
+      }
+    }
+  }
+}
+```
+
+## 构建
+
+Docker 构建:
+
+```bash
+docker build -t mcp/filesystem -f src/filesystem/Dockerfile .
+```
+
+## 许可证
+
+此 MCP 服务器根据 MIT 许可证授权。这意味着您可以自由使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。有关更多详细信息,请参阅项目存储库中的 LICENSE 文件。

+ 219 - 0
mcp-servers/filesystem/README.md

@@ -0,0 +1,219 @@
+# Filesystem MCP Server
+
+> <https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem>
+
+Node.js server implementing Model Context Protocol (MCP) for filesystem operations.
+
+## Features
+
+- Read/write files
+- Create/list/delete directories
+- Move files/directories
+- Search files
+- Get file metadata
+
+**Note**: The server will only allow operations within directories specified via `args`.
+
+## API
+
+### Resources
+
+- `file://system`: File system operations interface
+
+### Tools
+
+- **read_file**
+  - Read complete contents of a file
+  - Input: `path` (string)
+  - Reads complete file contents with UTF-8 encoding
+
+- **read_multiple_files**
+  - Read multiple files simultaneously
+  - Input: `paths` (string[])
+  - Failed reads won't stop the entire operation
+
+- **write_file**
+  - Create new file or overwrite existing (exercise caution with this)
+  - Inputs:
+    - `path` (string): File location
+    - `content` (string): File content
+
+- **edit_file**
+  - Make selective edits using advanced pattern matching and formatting
+  - Features:
+    - Line-based and multi-line content matching
+    - Whitespace normalization with indentation preservation
+    - Multiple simultaneous edits with correct positioning
+    - Indentation style detection and preservation
+    - Git-style diff output with context
+    - Preview changes with dry run mode
+  - Inputs:
+    - `path` (string): File to edit
+    - `edits` (array): List of edit operations
+      - `oldText` (string): Text to search for (can be substring)
+      - `newText` (string): Text to replace with
+    - `dryRun` (boolean): Preview changes without applying (default: false)
+  - Returns detailed diff and match information for dry runs, otherwise applies changes
+  - Best Practice: Always use dryRun first to preview changes before applying them
+
+- **create_directory**
+  - Create new directory or ensure it exists
+  - Input: `path` (string)
+  - Creates parent directories if needed
+  - Succeeds silently if directory exists
+
+- **list_directory**
+  - List directory contents with [FILE] or [DIR] prefixes
+  - Input: `path` (string)
+
+- **move_file**
+  - Move or rename files and directories
+  - Inputs:
+    - `source` (string)
+    - `destination` (string)
+  - Fails if destination exists
+
+- **search_files**
+  - Recursively search for files/directories
+  - Inputs:
+    - `path` (string): Starting directory
+    - `pattern` (string): Search pattern
+    - `excludePatterns` (string[]): Exclude any patterns. Glob formats are supported.
+  - Case-insensitive matching
+  - Returns full paths to matches
+
+- **get_file_info**
+  - Get detailed file/directory metadata
+  - Input: `path` (string)
+  - Returns:
+    - Size
+    - Creation time
+    - Modified time
+    - Access time
+    - Type (file/directory)
+    - Permissions
+
+- **list_allowed_directories**
+  - List all directories the server is allowed to access
+  - No input required
+  - Returns:
+    - Directories that this server can read/write from
+
+## Usage with Claude Desktop
+
+Add this to your `claude_desktop_config.json`:
+
+Note: you can provide sandboxed directories to the server by mounting them to `/projects`. Adding the `ro` flag will make the directory readonly by the server.
+
+### Docker
+
+Note: all directories must be mounted to `/projects` by default.
+
+```json
+{
+  "mcpServers": {
+    "filesystem": {
+      "command": "docker",
+      "args": [
+        "run",
+        "-i",
+        "--rm",
+        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
+        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
+        "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
+        "mcp/filesystem",
+        "/projects"
+      ]
+    }
+  }
+}
+```
+
+### NPX
+
+```json
+{
+  "mcpServers": {
+    "filesystem": {
+      "command": "npx",
+      "args": [
+        "-y",
+        "@modelcontextprotocol/server-filesystem",
+        "/Users/username/Desktop",
+        "/path/to/other/allowed/dir"
+      ]
+    }
+  }
+}
+```
+
+## Usage with VS Code
+
+For quick installation, click the installation buttons below...
+
+[![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-filesystem%22%2C%22%24%7BworkspaceFolder%7D%22%5D%7D) [![Install with NPX in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-filesystem%22%2C%22%24%7BworkspaceFolder%7D%22%5D%7D&quality=insiders)
+
+[![Install with Docker in VS Code](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fprojects%2Fworkspace%22%2C%22mcp%2Ffilesystem%22%2C%22%2Fprojects%22%5D%7D) [![Install with Docker in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fprojects%2Fworkspace%22%2C%22mcp%2Ffilesystem%22%2C%22%2Fprojects%22%5D%7D&quality=insiders)
+
+For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing `Ctrl + Shift + P` and typing `Preferences: Open Settings (JSON)`.
+
+Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace. This will allow you to share the configuration with others.
+
+> Note that the `mcp` key is not needed in the `.vscode/mcp.json` file.
+
+You can provide sandboxed directories to the server by mounting them to `/projects`. Adding the `ro` flag will make the directory readonly by the server.
+
+### Docker
+
+Note: all directories must be mounted to `/projects` by default.
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "filesystem": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "--rm",
+          "--mount", "type=bind,src=${workspaceFolder},dst=/projects/workspace",
+          "mcp/filesystem",
+          "/projects"
+        ]
+      }
+    }
+  }
+}
+```
+
+### NPX
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "filesystem": {
+        "command": "npx",
+        "args": [
+          "-y",
+          "@modelcontextprotocol/server-filesystem",
+          "${workspaceFolder}"
+        ]
+      }
+    }
+  }
+}
+```
+
+## Build
+
+Docker build:
+
+```bash
+docker build -t mcp/filesystem -f src/filesystem/Dockerfile .
+```
+
+## License
+
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

+ 38 - 0
mcp-servers/filesystem/init.go

@@ -0,0 +1,38 @@
+package filesystem
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"filesystem",
+			"Filesystem",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("文件系统"),
+			mcpservers.WithTags([]string{"filesystem"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem",
+			),
+			mcpservers.WithDescription(
+				"A Node.js MCP server for file system operations.",
+			),
+			mcpservers.WithDescriptionCN(
+				"实现用于文件系统操作的模型上下文协议(MCP)的 Node.js 服务器。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 23 - 1
mcp-servers/gezhe/README.cn.md

@@ -13,5 +13,27 @@
 
 ## 使用指引
 
+### 方法 1:Streamable HTTP
+
 1. 访问并登录 <https://pro.gezhe.com/settings>
-2. 进入「设置-MCP 服务器」页面,复制页面中提供的 URL 地址
+2. 进入「设置-MCP 服务器」页面,获取页面中提供的 URL 地址
+
+### 方法 2:本地执行
+
+1. 访问并登录 <https://gezhe.com/>
+2. 进入「设置-MCP 服务器」页面,获取页面中提供的 URL 地址
+3. 复制以下配置,填入到 Cherry Studio、Cursor 等客户端中使用。
+
+```json
+{
+  "mcpServers": {
+    "歌者PPT": {
+      "command": "npx",
+      "args": ["-y", "gezhe-mcp-server@latest"],
+      "env": {
+        "API_KEY": "替换为获取的 API_KEY"
+      }
+    }
+  }
+}
+```

+ 22 - 0
mcp-servers/gezhe/README.md

@@ -13,5 +13,27 @@ Gezhe PPT MCP server, can generate PPTs based on topics.
 
 ## Usage Guide
 
+### Method 1: Streamable HTTP
+
 1. Visit and log in to <https://pro.gezhe.com/settings>
 2. Go to the "Settings - MCP Server" page and copy the URL provided on the page.
+
+### Method 2: Local Execution
+
+1. Visit and log in to <https://gezhe.com/>
+2. Go to the "Settings - MCP Server" page and copy the URL provided on the page.
+3. Copy the following configuration and fill it into Cherry Studio, Cursor, etc.
+
+```json
+{
+  "mcpServers": {
+    "Gezhe PPT": {
+      "command": "npx",
+      "args": ["-y", "gezhe-mcp-server@latest"],
+      "env": {
+        "API_KEY": "Replace with the API_KEY you get"
+      }
+    }
+  }
+}
+```

+ 321 - 0
mcp-servers/git/README.cn.md

@@ -0,0 +1,321 @@
+# mcp-server-git: Git MCP 服务器
+
+> <https://github.com/modelcontextprotocol/servers/tree/main/src/git>
+
+## 概述
+
+一个用于 Git 仓库交互和自动化的模型上下文协议服务器。该服务器提供工具,通过大型语言模型来读取、搜索和操作 Git 仓库。
+
+请注意,mcp-server-git 目前处于早期开发阶段。随着我们继续开发和改进服务器,功能和可用工具可能会发生变化和扩展。
+
+### 工具
+
+1. `git_status`
+   - 显示工作树状态
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+   - 返回:工作目录的当前状态文本输出
+
+2. `git_diff_unstaged`
+   - 显示工作目录中尚未暂存的更改
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+   - 返回:未暂存更改的差异输出
+
+3. `git_diff_staged`
+   - 显示已暂存等待提交的更改
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+   - 返回:已暂存更改的差异输出
+
+4. `git_diff`
+   - 显示分支或提交之间的差异
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+     - `target` (字符串):要比较的目标分支或提交
+   - 返回:当前状态与目标的差异输出
+
+5. `git_commit`
+   - 将更改记录到仓库
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+     - `message` (字符串):提交消息
+   - 返回:带有新提交哈希的确认信息
+
+6. `git_add`
+   - 将文件内容添加到暂存区
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+     - `files` (字符串数组):要暂存的文件路径数组
+   - 返回:已暂存文件的确认信息
+
+7. `git_reset`
+   - 取消暂存所有已暂存的更改
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+   - 返回:重置操作的确认信息
+
+8. `git_log`
+   - 显示提交日志
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+     - `max_count` (数字,可选):要显示的最大提交数量(默认:10)
+   - 返回:包含哈希、作者、日期和消息的提交条目数组
+
+9. `git_create_branch`
+   - 创建新分支
+   - 输入:
+     - `repo_path` (字符串):Git 仓库路径
+     - `branch_name` (字符串):新分支名称
+     - `start_point` (字符串,可选):新分支的起始点
+   - 返回:分支创建的确认信息
+
+10. `git_checkout`
+    - 切换分支
+    - 输入:
+      - `repo_path` (字符串):Git 仓库路径
+      - `branch_name` (字符串):要切换到的分支名称
+    - 返回:分支切换的确认信息
+
+11. `git_show`
+    - 显示提交的内容
+    - 输入:
+      - `repo_path` (字符串):Git 仓库路径
+      - `revision` (字符串):要显示的修订版本(提交哈希、分支名称、标签)
+    - 返回:指定提交的内容
+
+12. `git_init`
+    - 初始化 Git 仓库
+    - 输入:
+      - `repo_path` (字符串):要初始化 git 仓库的目录路径
+    - 返回:仓库初始化的确认信息
+
+## 安装
+
+### 使用 uv(推荐)
+
+使用 [`uv`](https://docs.astral.sh/uv/) 时不需要特定的安装。我们将使用 [`uvx`](https://docs.astral.sh/uv/guides/tools/) 直接运行 *mcp-server-git*。
+
+### 使用 PIP
+
+或者您可以通过 pip 安装 `mcp-server-git`:
+
+```
+pip install mcp-server-git
+```
+
+安装后,您可以使用以下命令作为脚本运行:
+
+```
+python -m mcp_server_git
+```
+
+## 配置
+
+### 与 Claude Desktop 一起使用
+
+将以下内容添加到您的 `claude_desktop_config.json`:
+
+<details>
+<summary>使用 uvx</summary>
+
+```json
+"mcpServers": {
+  "git": {
+    "command": "uvx",
+    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>使用 docker</summary>
+
+- 注意:将 '/Users/username' 替换为您希望此工具可访问的路径
+
+```json
+"mcpServers": {
+  "git": {
+    "command": "docker",
+    "args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>使用 pip 安装</summary>
+
+```json
+"mcpServers": {
+  "git": {
+    "command": "python",
+    "args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
+  }
+}
+```
+
+</details>
+
+### 与 VS Code 一起使用
+
+要快速安装,请使用下面的一键安装按钮...
+
+[![在 VS Code 中使用 UV 安装](https://img.shields.io/badge/VS_Code-UV-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-git%22%5D%7D) [![在 VS Code Insiders 中使用 UV 安装](https://img.shields.io/badge/VS_Code_Insiders-UV-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-git%22%5D%7D&quality=insiders)
+
+[![在 VS Code 中使用 Docker 安装](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fworkspace%22%2C%22mcp%2Fgit%22%5D%7D) [![在 VS Code Insiders 中使用 Docker 安装](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fworkspace%22%2C%22mcp%2Fgit%22%5D%7D&quality=insiders)
+
+要手动安装,请将以下 JSON 块添加到 VS Code 中的用户设置(JSON)文件。您可以按 `Ctrl + Shift + P` 并输入 `Preferences: Open Settings (JSON)` 来执行此操作。
+
+或者,您可以将其添加到工作区中名为 `.vscode/mcp.json` 的文件中。这将允许您与他人共享配置。
+
+> 注意在 `.vscode/mcp.json` 文件中不需要 `mcp` 键。
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "git": {
+        "command": "uvx",
+        "args": ["mcp-server-git"]
+      }
+    }
+  }
+}
+```
+
+Docker 安装:
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "git": {
+        "command": "docker",
+        "args": [
+          "run",
+          "--rm",
+          "-i",
+          "--mount", "type=bind,src=${workspaceFolder},dst=/workspace",
+          "mcp/git"
+        ]
+      }
+    }
+  }
+}
+```
+
+### 与 [Zed](https://github.com/zed-industries/zed) 一起使用
+
+添加到您的 Zed settings.json:
+
+<details>
+<summary>使用 uvx</summary>
+
+```json
+"context_servers": [
+  "mcp-server-git": {
+    "command": {
+      "path": "uvx",
+      "args": ["mcp-server-git"]
+    }
+  }
+],
+```
+
+</details>
+
+<details>
+<summary>使用 pip 安装</summary>
+
+```json
+"context_servers": {
+  "mcp-server-git": {
+    "command": {
+      "path": "python",
+      "args": ["-m", "mcp_server_git"]
+    }
+  }
+},
+```
+
+</details>
+
+## 调试
+
+您可以使用 MCP 检查器来调试服务器。对于 uvx 安装:
+
+```
+npx @modelcontextprotocol/inspector uvx mcp-server-git
+```
+
+或者如果您在特定目录中安装了包或正在开发它:
+
+```
+cd path/to/servers/src/git
+npx @modelcontextprotocol/inspector uv run mcp-server-git
+```
+
+运行 `tail -n 20 -f ~/Library/Logs/Claude/mcp*.log` 将显示服务器的日志,可能有助于您调试任何问题。
+
+## 开发
+
+如果您正在进行本地开发,有两种方法可以测试您的更改:
+
+1. 运行 MCP 检查器来测试您的更改。运行说明请参见[调试](#调试)。
+
+2. 使用 Claude 桌面应用程序进行测试。将以下内容添加到您的 `claude_desktop_config.json`:
+
+### Docker
+
+```json
+{
+  "mcpServers": {
+    "git": {
+      "command": "docker",
+      "args": [
+        "run",
+        "--rm",
+        "-i",
+        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
+        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
+        "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
+        "mcp/git"
+      ]
+    }
+  }
+}
+```
+
+### UVX
+
+```json
+{
+"mcpServers": {
+  "git": {
+    "command": "uv",
+    "args": [ 
+      "--directory",
+      "/<path to mcp-servers>/mcp-servers/src/git",
+      "run",
+      "mcp-server-git"
+    ]
+  }
+}
+```
+
+## 构建
+
+Docker 构建:
+
+```bash
+cd src/git
+docker build -t mcp/git .
+```
+
+## 许可证
+
+此 MCP 服务器根据 MIT 许可证授权。这意味着您可以自由使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。有关更多详细信息,请参阅项目仓库中的 LICENSE 文件。

+ 325 - 0
mcp-servers/git/README.md

@@ -0,0 +1,325 @@
+# mcp-server-git: A git MCP server
+
+> <https://github.com/modelcontextprotocol/servers/tree/main/src/git>
+
+## Overview
+
+A Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.
+
+Please note that mcp-server-git is currently in early development. The functionality and available tools are subject to change and expansion as we continue to develop and improve the server.
+
+### Tools
+
+1. `git_status`
+   - Shows the working tree status
+   - Input:
+     - `repo_path` (string): Path to Git repository
+   - Returns: Current status of working directory as text output
+
+2. `git_diff_unstaged`
+   - Shows changes in working directory not yet staged
+   - Input:
+     - `repo_path` (string): Path to Git repository
+   - Returns: Diff output of unstaged changes
+
+3. `git_diff_staged`
+   - Shows changes that are staged for commit
+   - Input:
+     - `repo_path` (string): Path to Git repository
+   - Returns: Diff output of staged changes
+
+4. `git_diff`
+   - Shows differences between branches or commits
+   - Inputs:
+     - `repo_path` (string): Path to Git repository
+     - `target` (string): Target branch or commit to compare with
+   - Returns: Diff output comparing current state with target
+
+5. `git_commit`
+   - Records changes to the repository
+   - Inputs:
+     - `repo_path` (string): Path to Git repository
+     - `message` (string): Commit message
+   - Returns: Confirmation with new commit hash
+
+6. `git_add`
+   - Adds file contents to the staging area
+   - Inputs:
+     - `repo_path` (string): Path to Git repository
+     - `files` (string[]): Array of file paths to stage
+   - Returns: Confirmation of staged files
+
+7. `git_reset`
+   - Unstages all staged changes
+   - Input:
+     - `repo_path` (string): Path to Git repository
+   - Returns: Confirmation of reset operation
+
+8. `git_log`
+   - Shows the commit logs
+   - Inputs:
+     - `repo_path` (string): Path to Git repository
+     - `max_count` (number, optional): Maximum number of commits to show (default: 10)
+   - Returns: Array of commit entries with hash, author, date, and message
+
+9. `git_create_branch`
+   - Creates a new branch
+   - Inputs:
+     - `repo_path` (string): Path to Git repository
+     - `branch_name` (string): Name of the new branch
+     - `start_point` (string, optional): Starting point for the new branch
+   - Returns: Confirmation of branch creation
+10. `git_checkout`
+
+- Switches branches
+- Inputs:
+  - `repo_path` (string): Path to Git repository
+  - `branch_name` (string): Name of branch to checkout
+- Returns: Confirmation of branch switch
+
+11. `git_show`
+
+- Shows the contents of a commit
+- Inputs:
+  - `repo_path` (string): Path to Git repository
+  - `revision` (string): The revision (commit hash, branch name, tag) to show
+- Returns: Contents of the specified commit
+
+12. `git_init`
+
+- Initializes a Git repository
+- Inputs:
+  - `repo_path` (string): Path to directory to initialize git repo
+- Returns: Confirmation of repository initialization
+
+## Installation
+
+### Using uv (recommended)
+
+When using [`uv`](https://docs.astral.sh/uv/) no specific installation is needed. We will
+use [`uvx`](https://docs.astral.sh/uv/guides/tools/) to directly run *mcp-server-git*.
+
+### Using PIP
+
+Alternatively you can install `mcp-server-git` via pip:
+
+```
+pip install mcp-server-git
+```
+
+After installation, you can run it as a script using:
+
+```
+python -m mcp_server_git
+```
+
+## Configuration
+
+### Usage with Claude Desktop
+
+Add this to your `claude_desktop_config.json`:
+
+<details>
+<summary>Using uvx</summary>
+
+```json
+"mcpServers": {
+  "git": {
+    "command": "uvx",
+    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>Using docker</summary>
+
+- Note: replace '/Users/username' with the a path that you want to be accessible by this tool
+
+```json
+"mcpServers": {
+  "git": {
+    "command": "docker",
+    "args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
+  }
+}
+```
+
+</details>
+
+<details>
+<summary>Using pip installation</summary>
+
+```json
+"mcpServers": {
+  "git": {
+    "command": "python",
+    "args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
+  }
+}
+```
+
+</details>
+
+### Usage with VS Code
+
+For quick installation, use one of the one-click install buttons below...
+
+[![Install with UV in VS Code](https://img.shields.io/badge/VS_Code-UV-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-git%22%5D%7D) [![Install with UV in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-UV-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-git%22%5D%7D&quality=insiders)
+
+[![Install with Docker in VS Code](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fworkspace%22%2C%22mcp%2Fgit%22%5D%7D) [![Install with Docker in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fworkspace%22%2C%22mcp%2Fgit%22%5D%7D&quality=insiders)
+
+For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing `Ctrl + Shift + P` and typing `Preferences: Open Settings (JSON)`.
+
+Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace. This will allow you to share the configuration with others.
+
+> Note that the `mcp` key is not needed in the `.vscode/mcp.json` file.
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "git": {
+        "command": "uvx",
+        "args": ["mcp-server-git"]
+      }
+    }
+  }
+}
+```
+
+For Docker installation:
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "git": {
+        "command": "docker",
+        "args": [
+          "run",
+          "--rm",
+          "-i",
+          "--mount", "type=bind,src=${workspaceFolder},dst=/workspace",
+          "mcp/git"
+        ]
+      }
+    }
+  }
+}
+```
+
+### Usage with [Zed](https://github.com/zed-industries/zed)
+
+Add to your Zed settings.json:
+
+<details>
+<summary>Using uvx</summary>
+
+```json
+"context_servers": [
+  "mcp-server-git": {
+    "command": {
+      "path": "uvx",
+      "args": ["mcp-server-git"]
+    }
+  }
+],
+```
+
+</details>
+
+<details>
+<summary>Using pip installation</summary>
+
+```json
+"context_servers": {
+  "mcp-server-git": {
+    "command": {
+      "path": "python",
+      "args": ["-m", "mcp_server_git"]
+    }
+  }
+},
+```
+
+</details>
+
+## Debugging
+
+You can use the MCP inspector to debug the server. For uvx installations:
+
+```
+npx @modelcontextprotocol/inspector uvx mcp-server-git
+```
+
+Or if you've installed the package in a specific directory or are developing on it:
+
+```
+cd path/to/servers/src/git
+npx @modelcontextprotocol/inspector uv run mcp-server-git
+```
+
+Running `tail -n 20 -f ~/Library/Logs/Claude/mcp*.log` will show the logs from the server and may
+help you debug any issues.
+
+## Development
+
+If you are doing local development, there are two ways to test your changes:
+
+1. Run the MCP inspector to test your changes. See [Debugging](#debugging) for run instructions.
+
+2. Test using the Claude desktop app. Add the following to your `claude_desktop_config.json`:
+
+### Docker
+
+```json
+{
+  "mcpServers": {
+    "git": {
+      "command": "docker",
+      "args": [
+        "run",
+        "--rm",
+        "-i",
+        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
+        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
+        "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
+        "mcp/git"
+      ]
+    }
+  }
+}
+```
+
+### UVX
+
+```json
+{
+"mcpServers": {
+  "git": {
+    "command": "uv",
+    "args": [ 
+      "--directory",
+      "/<path to mcp-servers>/mcp-servers/src/git",
+      "run",
+      "mcp-server-git"
+    ]
+  }
+}
+```
+
+## Build
+
+Docker build:
+
+```bash
+cd src/git
+docker build -t mcp/git .
+```
+
+## License
+
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

+ 38 - 0
mcp-servers/git/init.go

@@ -0,0 +1,38 @@
+package git
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"git",
+			"Git",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Git"),
+			mcpservers.WithTags([]string{"git"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/modelcontextprotocol/servers/tree/main/src/git",
+			),
+			mcpservers.WithDescription(
+				"A Node.js MCP server for Git operations.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一个用于Git操作的Node.js MCP服务器。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 293 - 0
mcp-servers/knowledge-graph-memory/README.cn.md

@@ -0,0 +1,293 @@
+# 知识图谱记忆服务器
+
+> <https://github.com/modelcontextprotocol/servers/tree/main/src/memory>
+
+使用本地知识图谱的持久化内存基本实现。这让 Claude 能够跨聊天记住用户的信息。
+
+## 核心概念
+
+### 实体
+
+实体是知识图谱中的主要节点。每个实体包含:
+
+- 唯一名称(标识符)
+- 实体类型(例如:"person"、"organization"、"event")
+- 观察列表
+
+示例:
+
+```json
+{
+  "name": "John_Smith",
+  "entityType": "person",
+  "observations": ["说流利的西班牙语"]
+}
+```
+
+### 关系
+
+关系定义实体之间的有向连接。它们总是以主动语态存储,描述实体之间的交互或关联方式。
+
+示例:
+
+```json
+{
+  "from": "John_Smith",
+  "to": "Anthropic",
+  "relationType": "works_at"
+}
+```
+
+### 观察
+
+观察是关于实体的离散信息片段。它们具有以下特点:
+
+- 以字符串形式存储
+- 附属于特定实体
+- 可以独立添加或删除
+- 应该是原子性的(每个观察一个事实)
+
+示例:
+
+```json
+{
+  "entityName": "John_Smith",
+  "observations": [
+    "说流利的西班牙语",
+    "2019年毕业",
+    "喜欢上午开会"
+  ]
+}
+```
+
+## API
+
+### 工具
+
+- **create_entities**
+  - 在知识图谱中创建多个新实体
+  - 输入:`entities`(对象数组)
+    - 每个对象包含:
+      - `name`(字符串):实体标识符
+      - `entityType`(字符串):类型分类
+      - `observations`(字符串数组):关联观察
+  - 忽略已存在名称的实体
+
+- **create_relations**
+  - 在实体之间创建多个新关系
+  - 输入:`relations`(对象数组)
+    - 每个对象包含:
+      - `from`(字符串):源实体名称
+      - `to`(字符串):目标实体名称
+      - `relationType`(字符串):主动语态的关系类型
+  - 跳过重复关系
+
+- **add_observations**
+  - 向现有实体添加新观察
+  - 输入:`observations`(对象数组)
+    - 每个对象包含:
+      - `entityName`(字符串):目标实体
+      - `contents`(字符串数组):要添加的新观察
+  - 返回每个实体添加的观察
+  - 如果实体不存在则失败
+
+- **delete_entities**
+  - 删除实体及其关系
+  - 输入:`entityNames`(字符串数组)
+  - 级联删除关联关系
+  - 如果实体不存在则静默操作
+
+- **delete_observations**
+  - 从实体中删除特定观察
+  - 输入:`deletions`(对象数组)
+    - 每个对象包含:
+      - `entityName`(字符串):目标实体
+      - `observations`(字符串数组):要删除的观察
+  - 如果观察不存在则静默操作
+
+- **delete_relations**
+  - 从图谱中删除特定关系
+  - 输入:`relations`(对象数组)
+    - 每个对象包含:
+      - `from`(字符串):源实体名称
+      - `to`(字符串):目标实体名称
+      - `relationType`(字符串):关系类型
+  - 如果关系不存在则静默操作
+
+- **read_graph**
+  - 读取整个知识图谱
+  - 无需输入
+  - 返回包含所有实体和关系的完整图谱结构
+
+- **search_nodes**
+  - 基于查询搜索节点
+  - 输入:`query`(字符串)
+  - 搜索范围:
+    - 实体名称
+    - 实体类型
+    - 观察内容
+  - 返回匹配的实体及其关系
+
+- **open_nodes**
+  - 按名称检索特定节点
+  - 输入:`names`(字符串数组)
+  - 返回:
+    - 请求的实体
+    - 请求实体之间的关系
+  - 静默跳过不存在的节点
+
+# 在 Claude Desktop 中使用
+
+### 设置
+
+将以下内容添加到您的 claude_desktop_config.json:
+
+#### Docker
+
+```json
+{
+  "mcpServers": {
+    "memory": {
+      "command": "docker",
+      "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
+    }
+  }
+}
+```
+
+#### NPX
+
+```json
+{
+  "mcpServers": {
+    "memory": {
+      "command": "npx",
+      "args": [
+        "-y",
+        "@modelcontextprotocol/server-memory"
+      ]
+    }
+  }
+}
+```
+
+#### NPX 自定义设置
+
+服务器可以使用以下环境变量进行配置:
+
+```json
+{
+  "mcpServers": {
+    "memory": {
+      "command": "npx",
+      "args": [
+        "-y",
+        "@modelcontextprotocol/server-memory"
+      ],
+      "env": {
+        "MEMORY_FILE_PATH": "/path/to/custom/memory.json"
+      }
+    }
+  }
+}
+```
+
+- `MEMORY_FILE_PATH`:内存存储 JSON 文件的路径(默认:服务器目录中的 `memory.json`)
+
+# VS Code 安装说明
+
+快速安装,请使用下面的一键安装按钮:
+
+[![在 VS Code 中使用 NPX 安装](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-memory%22%5D%7D) [![在 VS Code Insiders 中使用 NPX 安装](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-memory%22%5D%7D&quality=insiders)
+
+[![在 VS Code 中使用 Docker 安装](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22-v%22%2C%22claude-memory%3A%2Fapp%2Fdist%22%2C%22--rm%22%2C%22mcp%2Fmemory%22%5D%7D) [![在 VS Code Insiders 中使用 Docker 安装](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22-v%22%2C%22claude-memory%3A%2Fapp%2Fdist%22%2C%22--rm%22%2C%22mcp%2Fmemory%22%5D%7D&quality=insiders)
+
+手动安装时,将以下 JSON 块添加到 VS Code 的用户设置(JSON)文件中。您可以按 `Ctrl + Shift + P` 并输入 `Preferences: Open Settings (JSON)` 来实现。
+
+可选地,您可以将其添加到工作区中名为 `.vscode/mcp.json` 的文件中。这将允许您与他人共享配置。
+
+> 注意:在 `.vscode/mcp.json` 文件中不需要 `mcp` 键。
+
+#### NPX
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "memory": {
+        "command": "npx",
+        "args": [
+          "-y",
+          "@modelcontextprotocol/server-memory"
+        ]
+      }
+    }
+  }
+}
+```
+
+#### Docker
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "memory": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "-v",
+          "claude-memory:/app/dist",
+          "--rm",
+          "mcp/memory"
+        ]
+      }
+    }
+  }
+}
+```
+
+### 系统提示
+
+使用内存的提示取决于用例。更改提示将帮助模型确定创建内存的频率和类型。
+
+以下是聊天个性化的示例提示。您可以在 [Claude.ai 项目](https://www.anthropic.com/news/projects) 的"自定义指令"字段中使用此提示。
+
+```
+对于每次交互,请遵循以下步骤:
+
+1. 用户识别:
+   - 您应该假设您正在与 default_user 交互
+   - 如果您尚未识别 default_user,请主动尝试识别
+
+2. 内存检索:
+   - 始终在聊天开始时只说"正在回忆..."并从知识图谱中检索所有相关信息
+   - 始终将您的知识图谱称为您的"记忆"
+
+3. 记忆
+   - 在与用户对话时,请注意属于以下类别的任何新信息:
+     a) 基本身份(年龄、性别、位置、职位、教育水平等)
+     b) 行为(兴趣、习惯等)
+     c) 偏好(沟通风格、首选语言等)
+     d) 目标(目标、目的、愿望等)
+     e) 关系(最多三度分离的个人和职业关系)
+
+4. 记忆更新:
+   - 如果在交互过程中收集到任何新信息,请按以下方式更新您的记忆:
+     a) 为经常出现的组织、人员和重要事件创建实体
+     b) 使用关系将它们连接到当前实体
+     c) 将关于它们的事实存储为观察
+```
+
+## 构建
+
+Docker:
+
+```sh
+docker build -t mcp/memory -f src/memory/Dockerfile . 
+```
+
+## 许可证
+
+此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。

+ 293 - 0
mcp-servers/knowledge-graph-memory/README.md

@@ -0,0 +1,293 @@
+# Knowledge Graph Memory Server
+
+> <https://github.com/modelcontextprotocol/servers/tree/main/src/memory>
+
+A basic implementation of persistent memory using a local knowledge graph. This lets Claude remember information about the user across chats.
+
+## Core Concepts
+
+### Entities
+
+Entities are the primary nodes in the knowledge graph. Each entity has:
+
+- A unique name (identifier)
+- An entity type (e.g., "person", "organization", "event")
+- A list of observations
+
+Example:
+
+```json
+{
+  "name": "John_Smith",
+  "entityType": "person",
+  "observations": ["Speaks fluent Spanish"]
+}
+```
+
+### Relations
+
+Relations define directed connections between entities. They are always stored in active voice and describe how entities interact or relate to each other.
+
+Example:
+
+```json
+{
+  "from": "John_Smith",
+  "to": "Anthropic",
+  "relationType": "works_at"
+}
+```
+
+### Observations
+
+Observations are discrete pieces of information about an entity. They are:
+
+- Stored as strings
+- Attached to specific entities
+- Can be added or removed independently
+- Should be atomic (one fact per observation)
+
+Example:
+
+```json
+{
+  "entityName": "John_Smith",
+  "observations": [
+    "Speaks fluent Spanish",
+    "Graduated in 2019",
+    "Prefers morning meetings"
+  ]
+}
+```
+
+## API
+
+### Tools
+
+- **create_entities**
+  - Create multiple new entities in the knowledge graph
+  - Input: `entities` (array of objects)
+    - Each object contains:
+      - `name` (string): Entity identifier
+      - `entityType` (string): Type classification
+      - `observations` (string[]): Associated observations
+  - Ignores entities with existing names
+
+- **create_relations**
+  - Create multiple new relations between entities
+  - Input: `relations` (array of objects)
+    - Each object contains:
+      - `from` (string): Source entity name
+      - `to` (string): Target entity name
+      - `relationType` (string): Relationship type in active voice
+  - Skips duplicate relations
+
+- **add_observations**
+  - Add new observations to existing entities
+  - Input: `observations` (array of objects)
+    - Each object contains:
+      - `entityName` (string): Target entity
+      - `contents` (string[]): New observations to add
+  - Returns added observations per entity
+  - Fails if entity doesn't exist
+
+- **delete_entities**
+  - Remove entities and their relations
+  - Input: `entityNames` (string[])
+  - Cascading deletion of associated relations
+  - Silent operation if entity doesn't exist
+
+- **delete_observations**
+  - Remove specific observations from entities
+  - Input: `deletions` (array of objects)
+    - Each object contains:
+      - `entityName` (string): Target entity
+      - `observations` (string[]): Observations to remove
+  - Silent operation if observation doesn't exist
+
+- **delete_relations**
+  - Remove specific relations from the graph
+  - Input: `relations` (array of objects)
+    - Each object contains:
+      - `from` (string): Source entity name
+      - `to` (string): Target entity name
+      - `relationType` (string): Relationship type
+  - Silent operation if relation doesn't exist
+
+- **read_graph**
+  - Read the entire knowledge graph
+  - No input required
+  - Returns complete graph structure with all entities and relations
+
+- **search_nodes**
+  - Search for nodes based on query
+  - Input: `query` (string)
+  - Searches across:
+    - Entity names
+    - Entity types
+    - Observation content
+  - Returns matching entities and their relations
+
+- **open_nodes**
+  - Retrieve specific nodes by name
+  - Input: `names` (string[])
+  - Returns:
+    - Requested entities
+    - Relations between requested entities
+  - Silently skips non-existent nodes
+
+# Usage with Claude Desktop
+
+### Setup
+
+Add this to your claude_desktop_config.json:
+
+#### Docker
+
+```json
+{
+  "mcpServers": {
+    "memory": {
+      "command": "docker",
+      "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
+    }
+  }
+}
+```
+
+#### NPX
+
+```json
+{
+  "mcpServers": {
+    "memory": {
+      "command": "npx",
+      "args": [
+        "-y",
+        "@modelcontextprotocol/server-memory"
+      ]
+    }
+  }
+}
+```
+
+#### NPX with custom setting
+
+The server can be configured using the following environment variables:
+
+```json
+{
+  "mcpServers": {
+    "memory": {
+      "command": "npx",
+      "args": [
+        "-y",
+        "@modelcontextprotocol/server-memory"
+      ],
+      "env": {
+        "MEMORY_FILE_PATH": "/path/to/custom/memory.json"
+      }
+    }
+  }
+}
+```
+
+- `MEMORY_FILE_PATH`: Path to the memory storage JSON file (default: `memory.json` in the server directory)
+
+# VS Code Installation Instructions
+
+For quick installation, use one of the one-click installation buttons below:
+
+[![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-memory%22%5D%7D) [![Install with NPX in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-memory%22%5D%7D&quality=insiders)
+
+[![Install with Docker in VS Code](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22-v%22%2C%22claude-memory%3A%2Fapp%2Fdist%22%2C%22--rm%22%2C%22mcp%2Fmemory%22%5D%7D) [![Install with Docker in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22-v%22%2C%22claude-memory%3A%2Fapp%2Fdist%22%2C%22--rm%22%2C%22mcp%2Fmemory%22%5D%7D&quality=insiders)
+
+For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing `Ctrl + Shift + P` and typing `Preferences: Open Settings (JSON)`.
+
+Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace. This will allow you to share the configuration with others.
+
+> Note that the `mcp` key is not needed in the `.vscode/mcp.json` file.
+
+#### NPX
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "memory": {
+        "command": "npx",
+        "args": [
+          "-y",
+          "@modelcontextprotocol/server-memory"
+        ]
+      }
+    }
+  }
+}
+```
+
+#### Docker
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "memory": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "-v",
+          "claude-memory:/app/dist",
+          "--rm",
+          "mcp/memory"
+        ]
+      }
+    }
+  }
+}
+```
+
+### System Prompt
+
+The prompt for utilizing memory depends on the use case. Changing the prompt will help the model determine the frequency and types of memories created.
+
+Here is an example prompt for chat personalization. You could use this prompt in the "Custom Instructions" field of a [Claude.ai Project](https://www.anthropic.com/news/projects).
+
+```
+Follow these steps for each interaction:
+
+1. User Identification:
+   - You should assume that you are interacting with default_user
+   - If you have not identified default_user, proactively try to do so.
+
+2. Memory Retrieval:
+   - Always begin your chat by saying only "Remembering..." and retrieve all relevant information from your knowledge graph
+   - Always refer to your knowledge graph as your "memory"
+
+3. Memory
+   - While conversing with the user, be attentive to any new information that falls into these categories:
+     a) Basic Identity (age, gender, location, job title, education level, etc.)
+     b) Behaviors (interests, habits, etc.)
+     c) Preferences (communication style, preferred language, etc.)
+     d) Goals (goals, targets, aspirations, etc.)
+     e) Relationships (personal and professional relationships up to 3 degrees of separation)
+
+4. Memory Update:
+   - If any new information was gathered during the interaction, update your memory as follows:
+     a) Create entities for recurring organizations, people, and significant events
+     b) Connect them to the current entities using relations
+     b) Store facts about them as observations
+```
+
+## Building
+
+Docker:
+
+```sh
+docker build -t mcp/memory -f src/memory/Dockerfile . 
+```
+
+## License
+
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

+ 38 - 0
mcp-servers/knowledge-graph-memory/init.go

@@ -0,0 +1,38 @@
+package knowledgegraphmemory
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"knowledge-graph-memory",
+			"Knowledge Graph Memory",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("知识图谱记忆"),
+			mcpservers.WithTags([]string{"knowledge-graph"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/modelcontextprotocol/servers/tree/main/src/memory",
+			),
+			mcpservers.WithDescription(
+				"A basic method for implementing persistent memory using local knowledge graphs. This allows Claude to remember user-related information across multiple conversations.",
+			),
+			mcpservers.WithDescriptionCN(
+				"使用本地知识图谱实现持久内存的基本方法。这使得Claude能够在多次聊天中记住用户的相关信息。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 219 - 0
mcp-servers/magic/README.cn.md

@@ -0,0 +1,219 @@
+# 21st.dev Magic AI 智能代理
+
+> <https://github.com/21st-dev/magic-mcp>
+
+![MCP Banner](https://21st.dev/magic-agent-og-image.png)
+
+Magic Component Platform (MCP) 是一个强大的 AI 驱动工具,帮助开发者通过自然语言描述即时创建美观、现代的 UI 组件。它与流行的 IDE 无缝集成,为 UI 开发提供流畅的工作流程。
+
+## 🌟 功能特性
+
+- **AI 驱动的 UI 生成**:通过自然语言描述创建 UI 组件
+- **多 IDE 支持**:
+  - [Cursor](https://cursor.com) IDE 集成
+  - [Windsurf](https://windsurf.ai) 支持
+  - [VSCode](https://code.visualstudio.com/) 支持
+  - [VSCode + Cline](https://cline.bot) 集成 (测试版)
+- **现代组件库**:访问受 [21st.dev](https://21st.dev) 启发的大量预构建可定制组件
+- **实时预览**:创建组件时即时查看效果
+- **TypeScript 支持**:完整的 TypeScript 支持,确保类型安全开发
+- **SVGL 集成**:访问大量专业品牌资产和标志
+- **组件增强**:使用高级功能和动画改进现有组件(即将推出)
+
+## 🎯 工作原理
+
+1. **告诉代理您的需求**
+
+   - 在您的 AI 代理聊天中,只需输入 `/ui` 并描述您需要的组件
+   - 示例:`/ui 创建一个具有响应式设计的现代导航栏`
+
+2. **让 Magic 创建它**
+
+   - 您的 IDE 会提示您使用 Magic
+   - Magic 立即构建一个精美的 UI 组件
+   - 组件受 21st.dev 库的启发
+
+3. **无缝集成**
+   - 组件自动添加到您的项目中
+   - 立即开始使用您的新 UI 组件
+   - 所有组件都完全可定制
+
+## 🚀 快速开始
+
+### 前置要求
+
+- Node.js(推荐最新 LTS 版本)
+- 支持的 IDE 之一:
+  - Cursor
+  - Windsurf
+  - VSCode(带 Cline 扩展)
+
+### 安装
+
+1. **生成 API 密钥**
+
+   - 访问 [21st.dev Magic 控制台](https://21st.dev/magic/console)
+   - 生成新的 API 密钥
+
+2. **选择安装方法**
+
+#### 方法 1:CLI 安装(推荐)
+
+一条命令即可为您的 IDE 安装和配置 MCP:
+
+```bash
+npx @21st-dev/cli@latest install <client> --api-key <key>
+```
+
+支持的客户端:cursor、windsurf、cline、claude
+
+#### 方法 2:手动配置
+
+如果您更喜欢手动设置,请将此内容添加到您的 IDE 的 MCP 配置文件中:
+
+```json
+{
+  "mcpServers": {
+    "@21st-dev/magic": {
+      "command": "npx",
+      "args": ["-y", "@21st-dev/magic@latest", "API_KEY=\"your-api-key\""]
+    }
+  }
+}
+```
+
+配置文件位置:
+
+- Cursor:`~/.cursor/mcp.json`
+- Windsurf:`~/.codeium/windsurf/mcp_config.json`
+- Cline:`~/.cline/mcp_config.json`
+- Claude:`~/.claude/mcp_config.json`
+
+#### 方法 3:VS Code 安装
+
+一键安装,点击下面的安装按钮:
+
+[![在 VS Code 中使用 NPX 安装](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=%4021st-dev%2Fmagic&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%4021st-dev%2Fmagic%40latest%22%5D%2C%22env%22%3A%7B%22API_KEY%22%3A%22%24%7Binput%3AapiKey%7D%22%7D%7D&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22apiKey%22%2C%22description%22%3A%2221st.dev+Magic+API+Key%22%2C%22password%22%3Atrue%7D%5D) [![在 VS Code Insiders 中使用 NPX 安装](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=%4021st-dev%2Fmagic&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%4021st-dev%2Fmagic%40latest%22%5D%2C%22env%22%3A%7B%22API_KEY%22%3A%22%24%7Binput%3AapiKey%7D%22%7D%7D&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22apiKey%22%2C%22description%22%3A%2221st.dev+Magic+API+Key%22%2C%22password%22%3Atrue%7D%5D&quality=insiders)
+
+##### VS Code 手动设置
+
+首先,请检查上面的安装按钮进行一键安装。手动设置:
+
+将以下 JSON 块添加到 VS Code 的用户设置(JSON)文件中。您可以按 `Ctrl + Shift + P` 并输入 `首选项:打开用户设置(JSON)`:
+
+```json
+{
+  "mcp": {
+    "inputs": [
+      {
+        "type": "promptString",
+        "id": "apiKey",
+        "description": "21st.dev Magic API 密钥",
+        "password": true
+      }
+    ],
+    "servers": {
+      "@21st-dev/magic": {
+        "command": "npx",
+        "args": ["-y", "@21st-dev/magic@latest"],
+        "env": {
+          "API_KEY": "${input:apiKey}"
+        }
+      }
+    }
+  }
+}
+```
+
+或者,您可以将其添加到工作区中名为 `.vscode/mcp.json` 的文件中:
+
+```json
+{
+  "inputs": [
+    {
+      "type": "promptString",
+      "id": "apiKey",
+      "description": "21st.dev Magic API 密钥",
+      "password": true
+    }
+  ],
+  "servers": {
+    "@21st-dev/magic": {
+      "command": "npx",
+      "args": ["-y", "@21st-dev/magic@latest"],
+      "env": {
+        "API_KEY": "${input:apiKey}"
+      }
+    }
+  }
+}
+```
+
+## ❓ 常见问题
+
+### Magic AI 代理如何处理我的代码库?
+
+Magic AI 代理只会编写或修改与其生成的组件相关的文件。它遵循您项目的代码风格和结构,与现有代码库无缝集成,不会影响应用程序的其他部分。
+
+### 我可以自定义生成的组件吗?
+
+可以!所有生成的组件都完全可编辑,并具有良好的代码结构。您可以像修改代码库中的任何其他 React 组件一样修改样式、功能和行为。
+
+### 如果我用完了生成次数会怎样?
+
+如果您超过了每月生成限制,系统会提示您升级计划。您可以随时升级以继续生成组件。您现有的组件将保持完全功能。
+
+### 新组件多久会添加到 21st.dev 的库中?
+
+作者可以随时将组件发布到 21st.dev,Magic 代理将立即访问它们。这意味着您将始终能够访问社区中最新的组件和设计模式。
+
+### 组件复杂度有限制吗?
+
+Magic AI 代理可以处理各种复杂度的组件,从简单的按钮到复杂的交互式表单。但是,为了获得最佳效果,我们建议将非常复杂的 UI 分解为更小、更易管理的组件。
+
+## 🛠️ 开发
+
+### 项目结构
+
+```
+mcp/
+├── app/
+│   └── components/     # 核心 UI 组件
+├── types/             # TypeScript 类型定义
+├── lib/              # 实用函数
+└── public/           # 静态资源
+```
+
+### 关键组件
+
+- `IdeInstructions`:不同 IDE 的设置说明
+- `ApiKeySection`:API 密钥管理界面
+- `WelcomeOnboarding`:新用户引导流程
+
+## 🤝 贡献
+
+我们欢迎贡献!请加入我们的 [Discord 社区](https://discord.gg/Qx4rFunHfm) 并提供反馈以帮助改进 Magic 代理。源代码可在 [GitHub](https://github.com/serafimcloud/21st) 上获得。
+
+## 👥 社区与支持
+
+- [Discord 社区](https://discord.gg/Qx4rFunHfm) - 加入我们活跃的社区
+- [Twitter](https://x.com/serafimcloud) - 关注我们获取更新
+
+## ⚠️ 测试版声明
+
+Magic 代理目前处于测试版。在此期间所有功能都是免费的。我们感谢您的反馈和耐心,我们将继续改进平台。
+
+## 📝 许可证
+
+MIT 许可证
+
+## 🙏 致谢
+
+- 感谢我们的测试用户和社区成员
+- 特别感谢 Cursor、Windsurf 和 Cline 团队的合作
+- 与 [21st.dev](https://21st.dev) 集成获得组件灵感
+- [SVGL](https://svgl.app) 提供标志和品牌资产集成
+
+---
+
+更多信息,请加入我们的 [Discord 社区](https://discord.gg/Qx4rFunHfm) 或访问 [21st.dev/magic](https://21st.dev/magic)。

+ 219 - 0
mcp-servers/magic/README.md

@@ -0,0 +1,219 @@
+# 21st.dev Magic AI Agent
+
+> <https://github.com/21st-dev/magic-mcp>
+
+![MCP Banner](https://21st.dev/magic-agent-og-image.png)
+
+Magic Component Platform (MCP) is a powerful AI-driven tool that helps developers create beautiful, modern UI components instantly through natural language descriptions. It integrates seamlessly with popular IDEs and provides a streamlined workflow for UI development.
+
+## 🌟 Features
+
+- **AI-Powered UI Generation**: Create UI components by describing them in natural language
+- **Multi-IDE Support**:
+  - [Cursor](https://cursor.com) IDE integration
+  - [Windsurf](https://windsurf.ai) support
+  - [VSCode](https://code.visualstudio.com/) support
+  - [VSCode + Cline](https://cline.bot) integration (Beta)
+- **Modern Component Library**: Access to a vast collection of pre-built, customizable components inspired by [21st.dev](https://21st.dev)
+- **Real-time Preview**: Instantly see your components as you create them
+- **TypeScript Support**: Full TypeScript support for type-safe development
+- **SVGL Integration**: Access to a vast collection of professional brand assets and logos
+- **Component Enhancement**: Improve existing components with advanced features and animations (Coming Soon)
+
+## 🎯 How It Works
+
+1. **Tell Agent What You Need**
+
+   - In your AI Agent's chat, just type `/ui` and describe the component you're looking for
+   - Example: `/ui create a modern navigation bar with responsive design`
+
+2. **Let Magic Create It**
+
+   - Your IDE prompts you to use Magic
+   - Magic instantly builds a polished UI component
+   - Components are inspired by 21st.dev's library
+
+3. **Seamless Integration**
+   - Components are automatically added to your project
+   - Start using your new UI components right away
+   - All components are fully customizable
+
+## 🚀 Getting Started
+
+### Prerequisites
+
+- Node.js (Latest LTS version recommended)
+- One of the supported IDEs:
+  - Cursor
+  - Windsurf
+  - VSCode (with Cline extension)
+
+### Installation
+
+1. **Generate API Key**
+
+   - Visit [21st.dev Magic Console](https://21st.dev/magic/console)
+   - Generate a new API key
+
+2. **Choose Installation Method**
+
+#### Method 1: CLI Installation (Recommended)
+
+One command to install and configure MCP for your IDE:
+
+```bash
+npx @21st-dev/cli@latest install <client> --api-key <key>
+```
+
+Supported clients: cursor, windsurf, cline, claude
+
+#### Method 2: Manual Configuration
+
+If you prefer manual setup, add this to your IDE's MCP config file:
+
+```json
+{
+  "mcpServers": {
+    "@21st-dev/magic": {
+      "command": "npx",
+      "args": ["-y", "@21st-dev/magic@latest", "API_KEY=\"your-api-key\""]
+    }
+  }
+}
+```
+
+Config file locations:
+
+- Cursor: `~/.cursor/mcp.json`
+- Windsurf: `~/.codeium/windsurf/mcp_config.json`
+- Cline: `~/.cline/mcp_config.json`
+- Claude: `~/.claude/mcp_config.json`
+
+#### Method 3: VS Code Installation
+
+For one-click installation, click one of the install buttons below:
+
+[![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=%4021st-dev%2Fmagic&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%4021st-dev%2Fmagic%40latest%22%5D%2C%22env%22%3A%7B%22API_KEY%22%3A%22%24%7Binput%3AapiKey%7D%22%7D%7D&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22apiKey%22%2C%22description%22%3A%2221st.dev+Magic+API+Key%22%2C%22password%22%3Atrue%7D%5D) [![Install with NPX in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=%4021st-dev%2Fmagic&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%4021st-dev%2Fmagic%40latest%22%5D%2C%22env%22%3A%7B%22API_KEY%22%3A%22%24%7Binput%3AapiKey%7D%22%7D%7D&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22apiKey%22%2C%22description%22%3A%2221st.dev+Magic+API+Key%22%2C%22password%22%3Atrue%7D%5D&quality=insiders)
+
+##### Manual VS Code Setup
+
+First, check the install buttons above for one-click installation. For manual setup:
+
+Add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing `Ctrl + Shift + P` and typing `Preferences: Open User Settings (JSON)`:
+
+```json
+{
+  "mcp": {
+    "inputs": [
+      {
+        "type": "promptString",
+        "id": "apiKey",
+        "description": "21st.dev Magic API Key",
+        "password": true
+      }
+    ],
+    "servers": {
+      "@21st-dev/magic": {
+        "command": "npx",
+        "args": ["-y", "@21st-dev/magic@latest"],
+        "env": {
+          "API_KEY": "${input:apiKey}"
+        }
+      }
+    }
+  }
+}
+```
+
+Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace:
+
+```json
+{
+  "inputs": [
+    {
+      "type": "promptString",
+      "id": "apiKey",
+      "description": "21st.dev Magic API Key",
+      "password": true
+    }
+  ],
+  "servers": {
+    "@21st-dev/magic": {
+      "command": "npx",
+      "args": ["-y", "@21st-dev/magic@latest"],
+      "env": {
+        "API_KEY": "${input:apiKey}"
+      }
+    }
+  }
+}
+```
+
+## ❓ FAQ
+
+### How does Magic AI Agent handle my codebase?
+
+Magic AI Agent only writes or modifies files related to the components it generates. It follows your project's code style and structure, and integrates seamlessly with your existing codebase without affecting other parts of your application.
+
+### Can I customize the generated components?
+
+Yes! All generated components are fully editable and come with well-structured code. You can modify the styling, functionality, and behavior just like any other React component in your codebase.
+
+### What happens if I run out of generations?
+
+If you exceed your monthly generation limit, you'll be prompted to upgrade your plan. You can upgrade at any time to continue generating components. Your existing components will remain fully functional.
+
+### How soon do new components get added to 21st.dev's library?
+
+Authors can publish components to 21st.dev at any time, and Magic Agent will have immediate access to them. This means you'll always have access to the latest components and design patterns from the community.
+
+### Is there a limit to component complexity?
+
+Magic AI Agent can handle components of varying complexity, from simple buttons to complex interactive forms. However, for best results, we recommend breaking down very complex UIs into smaller, manageable components.
+
+## 🛠️ Development
+
+### Project Structure
+
+```
+mcp/
+├── app/
+│   └── components/     # Core UI components
+├── types/             # TypeScript type definitions
+├── lib/              # Utility functions
+└── public/           # Static assets
+```
+
+### Key Components
+
+- `IdeInstructions`: Setup instructions for different IDEs
+- `ApiKeySection`: API key management interface
+- `WelcomeOnboarding`: Onboarding flow for new users
+
+## 🤝 Contributing
+
+We welcome contributions! Please join our [Discord community](https://discord.gg/Qx4rFunHfm) and provide feedback to help improve Magic Agent. The source code is available on [GitHub](https://github.com/serafimcloud/21st).
+
+## 👥 Community & Support
+
+- [Discord Community](https://discord.gg/Qx4rFunHfm) - Join our active community
+- [Twitter](https://x.com/serafimcloud) - Follow us for updates
+
+## ⚠️ Beta Notice
+
+Magic Agent is currently in beta. All features are free during this period. We appreciate your feedback and patience as we continue to improve the platform.
+
+## 📝 License
+
+MIT License
+
+## 🙏 Acknowledgments
+
+- Thanks to our beta testers and community members
+- Special thanks to the Cursor, Windsurf, and Cline teams for their collaboration
+- Integration with [21st.dev](https://21st.dev) for component inspiration
+- [SVGL](https://svgl.app) for logo and brand asset integration
+
+---
+
+For more information, join our [Discord community](https://discord.gg/Qx4rFunHfm) or visit [21st.dev/magic](https://21st.dev/magic).

+ 38 - 0
mcp-servers/magic/init.go

@@ -0,0 +1,38 @@
+package magic
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"magic",
+			"Magic Component Generator",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("智能组件生成器"),
+			mcpservers.WithTags([]string{"ui"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/21st-dev/magic-mcp",
+			),
+			mcpservers.WithDescription(
+				"A powerful AI-driven tool that helps developers create beautiful, modern UI components instantly through natural language descriptions. It integrates seamlessly with popular IDEs and provides a streamlined workflow for UI development.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一个由人工智能驱动的工具,可以从自然语言描述生成现代UI组件,并与流行的IDE集成,以简化UI开发工作流程。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 95 - 0
mcp-servers/markdownify/README.cn.md

@@ -0,0 +1,95 @@
+# Markdownify MCP 服务器
+
+> 求助!我需要有 Windows 电脑的人帮助我为 Markdownify-MCP 添加 Windows 支持。已有 PR 但我无法测试。如有兴趣请在[这里](https://github.com/zcaceres/markdownify-mcp/issues/18)留言。
+
+Markdownify 是一个模型上下文协议 (MCP) 服务器,可以将各种文件类型和网页内容转换为 Markdown 格式。它提供了一套工具,可以将 PDF、图片、音频文件、网页等转换为易于阅读和分享的 Markdown 文本。
+
+<a href="https://glama.ai/mcp/servers/bn5q4b0ett"><img width="380" height="200" src="https://glama.ai/mcp/servers/bn5q4b0ett/badge" alt="Markdownify Server MCP server" /></a>
+
+## 功能特性
+
+- 将多种文件类型转换为 Markdown:
+  - PDF
+  - 图片
+  - 音频(带转录功能)
+  - DOCX
+  - XLSX
+  - PPTX
+- 将网页内容转换为 Markdown:
+  - YouTube 视频转录
+  - 必应搜索结果
+  - 一般网页
+- 检索现有的 Markdown 文件
+
+## 快速开始
+
+1. 克隆此仓库
+2. 安装依赖:
+
+   ```
+   pnpm install
+   ```
+
+注意:这也会安装 `uv` 和相关的 Python 依赖。
+
+3. 构建项目:
+
+   ```
+   pnpm run build
+   ```
+
+4. 启动服务器:
+
+   ```
+   pnpm start
+   ```
+
+## 开发
+
+- 使用 `pnpm run dev` 以监视模式启动 TypeScript 编译器
+- 修改 `src/server.ts` 来自定义服务器行为
+- 在 `src/tools.ts` 中添加或修改工具
+
+## 与桌面应用集成
+
+要将此服务器与桌面应用集成,请在应用的服务器配置中添加以下内容:
+
+```js
+{
+  "mcpServers": {
+    "markdownify": {
+      "command": "node",
+      "args": [
+        "{此处填写绝对路径}/dist/index.js"
+      ],
+      "env": {
+        // 默认情况下,服务器将使用 `uv` 的默认安装位置
+        "UV_PATH": "/path/to/uv"
+      }
+    }
+  }
+}
+```
+
+## 可用工具
+
+- `youtube-to-markdown`:将 YouTube 视频转换为 Markdown
+- `pdf-to-markdown`:将 PDF 文件转换为 Markdown
+- `bing-search-to-markdown`:将必应搜索结果转换为 Markdown
+- `webpage-to-markdown`:将网页转换为 Markdown
+- `image-to-markdown`:将图片转换为带元数据的 Markdown
+- `audio-to-markdown`:将音频文件转换为带转录的 Markdown
+- `docx-to-markdown`:将 DOCX 文件转换为 Markdown
+- `xlsx-to-markdown`:将 XLSX 文件转换为 Markdown
+- `pptx-to-markdown`:将 PPTX 文件转换为 Markdown
+- `get-markdown-file`:检索现有的 Markdown 文件。文件扩展名必须以:*.md、*.markdown 结尾。
+  
+  可选:设置 `MD_SHARE_DIR` 环境变量来限制可检索文件的目录,例如 `MD_SHARE_DIR=[某个路径] pnpm run start`
+
+## 贡献
+
+欢迎贡献!请随时提交 Pull Request。
+
+## 许可证
+
+本项目采用 MIT 许可证 - 详情请参阅 [LICENSE](LICENSE) 文件。

+ 95 - 0
mcp-servers/markdownify/README.md

@@ -0,0 +1,95 @@
+# Markdownify MCP Server
+
+> Help! I need someone with a Windows computer to help me add support for Markdownify-MCP on Windows. PRs exist but I cannot test them. Post [here](https://github.com/zcaceres/markdownify-mcp/issues/18) if interested.
+
+Markdownify is a Model Context Protocol (MCP) server that converts various file types and web content to Markdown format. It provides a set of tools to transform PDFs, images, audio files, web pages, and more into easily readable and shareable Markdown text.
+
+<a href="https://glama.ai/mcp/servers/bn5q4b0ett"><img width="380" height="200" src="https://glama.ai/mcp/servers/bn5q4b0ett/badge" alt="Markdownify Server MCP server" /></a>
+
+## Features
+
+- Convert multiple file types to Markdown:
+  - PDF
+  - Images
+  - Audio (with transcription)
+  - DOCX
+  - XLSX
+  - PPTX
+- Convert web content to Markdown:
+  - YouTube video transcripts
+  - Bing search results
+  - General web pages
+- Retrieve existing Markdown files
+
+## Getting Started
+
+1. Clone this repository
+2. Install dependencies:
+
+   ```
+   pnpm install
+   ```
+
+Note: this will also install `uv` and related Python depdencies.
+
+3. Build the project:
+
+   ```
+   pnpm run build
+   ```
+
+4. Start the server:
+
+   ```
+   pnpm start
+   ```
+
+## Development
+
+- Use `pnpm run dev` to start the TypeScript compiler in watch mode
+- Modify `src/server.ts` to customize server behavior
+- Add or modify tools in `src/tools.ts`
+
+## Usage with Desktop App
+
+To integrate this server with a desktop app, add the following to your app's server configuration:
+
+```js
+{
+  "mcpServers": {
+    "markdownify": {
+      "command": "node",
+      "args": [
+        "{ABSOLUTE PATH TO FILE HERE}/dist/index.js"
+      ],
+      "env": {
+        // By default, the server will use the default install location of `uv`
+        "UV_PATH": "/path/to/uv"
+      }
+    }
+  }
+}
+```
+
+## Available Tools
+
+- `youtube-to-markdown`: Convert YouTube videos to Markdown
+- `pdf-to-markdown`: Convert PDF files to Markdown
+- `bing-search-to-markdown`: Convert Bing search results to Markdown
+- `webpage-to-markdown`: Convert web pages to Markdown
+- `image-to-markdown`: Convert images to Markdown with metadata
+- `audio-to-markdown`: Convert audio files to Markdown with transcription
+- `docx-to-markdown`: Convert DOCX files to Markdown
+- `xlsx-to-markdown`: Convert XLSX files to Markdown
+- `pptx-to-markdown`: Convert PPTX files to Markdown
+- `get-markdown-file`: Retrieve an existing Markdown file. File extension must end with: *.md,*.markdown.
+  
+  OPTIONAL: set `MD_SHARE_DIR` env var to restrict the directory from which files can be retrieved, e.g. `MD_SHARE_DIR=[SOME_PATH] pnpm run start`
+
+## Contributing
+
+Contributions are welcome! Please feel free to submit a Pull Request.
+
+## License
+
+This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

+ 38 - 0
mcp-servers/markdownify/init.go

@@ -0,0 +1,38 @@
+package markdownify
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"markdownify",
+			"Markdownify",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Markdownify"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/zcaceres/markdownify-mcp",
+			),
+			mcpservers.WithTags([]string{"markdown"}),
+			mcpservers.WithDescription(
+				"Convert various file types and web content to Markdown format. It provides a set of tools that can convert PDF, image, audio file, web page, etc. to readable and shareable Markdown text.",
+			),
+			mcpservers.WithDescriptionCN(
+				"将各种文件类型和网页内容转换为Markdown格式。它提供了一套工具,可以将PDF、图像、音频文件、网页等转换为易读且易于分享的Markdown文本。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 33 - 0
mcp-servers/mcpregister/init.go

@@ -3,20 +3,53 @@ package mcpregister
 import (
 	// register embed mcp
 	_ "github.com/labring/aiproxy/mcp-servers/12306"
+	_ "github.com/labring/aiproxy/mcp-servers/ableton"
+	_ "github.com/labring/aiproxy/mcp-servers/academic-search"
 	_ "github.com/labring/aiproxy/mcp-servers/aiproxy-openapi"
+	_ "github.com/labring/aiproxy/mcp-servers/alibabacloud-dms"
 	_ "github.com/labring/aiproxy/mcp-servers/alipay"
+	_ "github.com/labring/aiproxy/mcp-servers/allvoicelab"
 	_ "github.com/labring/aiproxy/mcp-servers/amap"
 	_ "github.com/labring/aiproxy/mcp-servers/baidu-map"
 	_ "github.com/labring/aiproxy/mcp-servers/bingcn"
+	_ "github.com/labring/aiproxy/mcp-servers/blender"
+	_ "github.com/labring/aiproxy/mcp-servers/browserbase"
+	_ "github.com/labring/aiproxy/mcp-servers/cfworker"
+	_ "github.com/labring/aiproxy/mcp-servers/chatsum"
+	_ "github.com/labring/aiproxy/mcp-servers/elasticsearch"
+	_ "github.com/labring/aiproxy/mcp-servers/everything-search"
+	_ "github.com/labring/aiproxy/mcp-servers/excel"
 	_ "github.com/labring/aiproxy/mcp-servers/fetch"
+	_ "github.com/labring/aiproxy/mcp-servers/filesystem"
 	_ "github.com/labring/aiproxy/mcp-servers/firecrawl"
 	_ "github.com/labring/aiproxy/mcp-servers/flomo"
 	_ "github.com/labring/aiproxy/mcp-servers/gezhe"
+	_ "github.com/labring/aiproxy/mcp-servers/git"
 	_ "github.com/labring/aiproxy/mcp-servers/gpt-vis"
 	_ "github.com/labring/aiproxy/mcp-servers/hefeng-weather"
 	_ "github.com/labring/aiproxy/mcp-servers/howtocook"
 	_ "github.com/labring/aiproxy/mcp-servers/jina-tools"
+	_ "github.com/labring/aiproxy/mcp-servers/knowledge-graph-memory"
+	_ "github.com/labring/aiproxy/mcp-servers/magic"
+	_ "github.com/labring/aiproxy/mcp-servers/markdownify"
+	_ "github.com/labring/aiproxy/mcp-servers/mysql"
+	_ "github.com/labring/aiproxy/mcp-servers/oceanbase"
+	_ "github.com/labring/aiproxy/mcp-servers/office-word"
+	_ "github.com/labring/aiproxy/mcp-servers/openmemory"
+	_ "github.com/labring/aiproxy/mcp-servers/playwright"
+	_ "github.com/labring/aiproxy/mcp-servers/puppeteer"
+	_ "github.com/labring/aiproxy/mcp-servers/query_table"
+	_ "github.com/labring/aiproxy/mcp-servers/redbook-search-comment"
+	_ "github.com/labring/aiproxy/mcp-servers/redis"
+	_ "github.com/labring/aiproxy/mcp-servers/sqlite"
+	_ "github.com/labring/aiproxy/mcp-servers/stock-analysis"
 	_ "github.com/labring/aiproxy/mcp-servers/tavily"
 	_ "github.com/labring/aiproxy/mcp-servers/time"
+	_ "github.com/labring/aiproxy/mcp-servers/unionpay"
+	_ "github.com/labring/aiproxy/mcp-servers/weather"
 	_ "github.com/labring/aiproxy/mcp-servers/web-search"
+	_ "github.com/labring/aiproxy/mcp-servers/wecom-bot"
+	_ "github.com/labring/aiproxy/mcp-servers/xhs"
+	_ "github.com/labring/aiproxy/mcp-servers/xiyan"
+	_ "github.com/labring/aiproxy/mcp-servers/zhipuai"
 )

+ 171 - 0
mcp-servers/mysql/README.cn.md

@@ -0,0 +1,171 @@
+![Tests](https://github.com/designcomputer/mysql_mcp_server/actions/workflows/test.yml/badge.svg)
+![PyPI - Downloads](https://img.shields.io/pypi/dm/mysql-mcp-server)
+[![smithery badge](https://smithery.ai/badge/mysql-mcp-server)](https://smithery.ai/server/mysql-mcp-server)
+[![MseeP.ai Security Assessment Badge](https://mseep.net/mseep-audited.png)](https://mseep.ai/app/designcomputer-mysql-mcp-server)
+
+# MySQL MCP 服务器
+
+一个模型上下文协议(MCP)实现,可以安全地与 MySQL 数据库进行交互。该服务器组件通过受控接口促进 AI 应用程序(主机/客户端)与 MySQL 数据库之间的通信,使数据库探索和分析更加安全和结构化。
+
+> **注意**:MySQL MCP 服务器不是设计为独立服务器使用,而是作为 AI 应用程序与 MySQL 数据库之间的通信协议实现。
+
+## 功能特性
+
+- 将可用的 MySQL 表列为资源
+- 读取表内容
+- 执行 SQL 查询并进行适当的错误处理
+- 通过环境变量实现安全的数据库访问
+- 全面的日志记录
+
+## 安装
+
+### 手动安装
+
+```bash
+pip install mysql-mcp-server
+```
+
+### 通过 Smithery 安装
+
+通过 [Smithery](https://smithery.ai/server/mysql-mcp-server) 自动为 Claude Desktop 安装 MySQL MCP 服务器:
+
+```bash
+npx -y @smithery/cli install mysql-mcp-server --client claude
+```
+
+## 配置
+
+设置以下环境变量:
+
+```bash
+MYSQL_HOST=localhost     # 数据库主机
+MYSQL_PORT=3306         # 可选:数据库端口(如果未指定,默认为 3306)
+MYSQL_USER=your_username
+MYSQL_PASSWORD=your_password
+MYSQL_DATABASE=your_database
+```
+
+## 使用方法
+
+### 与 Claude Desktop 一起使用
+
+将以下内容添加到您的 `claude_desktop_config.json`:
+
+```json
+{
+  "mcpServers": {
+    "mysql": {
+      "command": "uv",
+      "args": [
+        "--directory",
+        "path/to/mysql_mcp_server",
+        "run",
+        "mysql_mcp_server"
+      ],
+      "env": {
+        "MYSQL_HOST": "localhost",
+        "MYSQL_PORT": "3306",
+        "MYSQL_USER": "your_username",
+        "MYSQL_PASSWORD": "your_password",
+        "MYSQL_DATABASE": "your_database"
+      }
+    }
+  }
+}
+```
+
+### 与 Visual Studio Code 一起使用
+
+将以下内容添加到您的 `mcp.json`:
+
+```json
+{
+  "servers": {
+      "mysql": {
+            "type": "stdio",
+            "command": "uvx",
+            "args": [
+                "--from",
+                "mysql-mcp-server",
+                "mysql_mcp_server"
+            ],
+      "env": {
+        "MYSQL_HOST": "localhost",
+        "MYSQL_PORT": "3306",
+        "MYSQL_USER": "your_username",
+        "MYSQL_PASSWORD": "your_password",
+        "MYSQL_DATABASE": "your_database"
+      }
+    }
+  }
+}
+```
+
+注意:需要安装 uv 才能正常工作
+
+### 使用 MCP Inspector 进行调试
+
+虽然 MySQL MCP 服务器不是设计为独立运行或直接从命令行使用 Python 运行,但您可以使用 MCP Inspector 来调试它。
+
+MCP Inspector 提供了一种方便的方式来测试和调试您的 MCP 实现:
+
+```bash
+# 安装依赖项
+pip install -r requirements.txt
+# 使用 MCP Inspector 进行调试(不要直接用 Python 运行)
+```
+
+MySQL MCP 服务器设计为与 Claude Desktop 等 AI 应用程序集成,不应直接作为独立的 Python 程序运行。
+
+## 开发
+
+```bash
+# 克隆仓库
+git clone https://github.com/designcomputer/mysql_mcp_server.git
+cd mysql_mcp_server
+# 创建虚拟环境
+python -m venv venv
+source venv/bin/activate  # 或在 Windows 上使用 `venv\Scripts\activate`
+# 安装开发依赖项
+pip install -r requirements-dev.txt
+# 运行测试
+pytest
+```
+
+## 安全注意事项
+
+- 永远不要提交环境变量或凭据
+- 使用具有最小必需权限的数据库用户
+- 考虑在生产环境中实施查询白名单
+- 监控和记录所有数据库操作
+
+## 安全最佳实践
+
+此 MCP 实现需要数据库访问权限才能运行。为了安全:
+
+1. **创建专用的 MySQL 用户**,具有最小权限
+2. **永远不要使用 root 凭据**或管理员账户
+3. **限制数据库访问**仅限于必要的操作
+4. **启用日志记录**用于审计目的
+5. **定期安全审查**数据库访问
+
+详细说明请参见 [MySQL 安全配置指南](https://github.com/designcomputer/mysql_mcp_server/blob/main/SECURITY.md):
+
+- 创建受限的 MySQL 用户
+- 设置适当的权限
+- 监控数据库访问
+- 安全最佳实践
+
+⚠️ 重要提示:在配置数据库访问时,始终遵循最小权限原则。
+
+## 许可证
+
+MIT 许可证 - 详情请参见 LICENSE 文件。
+
+## 贡献
+
+1. Fork 仓库
+2. 创建您的功能分支(`git checkout -b feature/amazing-feature`)
+3. 提交您的更改(`git commit -m 'Add some amazing feature'`)
+4. 推送到分支(`git push origin feature/amazing-feature`)
+5. 打开一个 Pull Request

+ 171 - 0
mcp-servers/mysql/README.md

@@ -0,0 +1,171 @@
+![Tests](https://github.com/designcomputer/mysql_mcp_server/actions/workflows/test.yml/badge.svg)
+![PyPI - Downloads](https://img.shields.io/pypi/dm/mysql-mcp-server)
+[![smithery badge](https://smithery.ai/badge/mysql-mcp-server)](https://smithery.ai/server/mysql-mcp-server)
+[![MseeP.ai Security Assessment Badge](https://mseep.net/mseep-audited.png)](https://mseep.ai/app/designcomputer-mysql-mcp-server)
+
+# MySQL MCP Server
+
+A Model Context Protocol (MCP) implementation that enables secure interaction with MySQL databases. This server component facilitates communication between AI applications (hosts/clients) and MySQL databases, making database exploration and analysis safer and more structured through a controlled interface.
+
+> **Note**: MySQL MCP Server is not designed to be used as a standalone server, but rather as a communication protocol implementation between AI applications and MySQL databases.
+
+## Features
+
+- List available MySQL tables as resources
+- Read table contents
+- Execute SQL queries with proper error handling
+- Secure database access through environment variables
+- Comprehensive logging
+
+## Installation
+
+### Manual Installation
+
+```bash
+pip install mysql-mcp-server
+```
+
+### Installing via Smithery
+
+To install MySQL MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/mysql-mcp-server):
+
+```bash
+npx -y @smithery/cli install mysql-mcp-server --client claude
+```
+
+## Configuration
+
+Set the following environment variables:
+
+```bash
+MYSQL_HOST=localhost     # Database host
+MYSQL_PORT=3306         # Optional: Database port (defaults to 3306 if not specified)
+MYSQL_USER=your_username
+MYSQL_PASSWORD=your_password
+MYSQL_DATABASE=your_database
+```
+
+## Usage
+
+### With Claude Desktop
+
+Add this to your `claude_desktop_config.json`:
+
+```json
+{
+  "mcpServers": {
+    "mysql": {
+      "command": "uv",
+      "args": [
+        "--directory",
+        "path/to/mysql_mcp_server",
+        "run",
+        "mysql_mcp_server"
+      ],
+      "env": {
+        "MYSQL_HOST": "localhost",
+        "MYSQL_PORT": "3306",
+        "MYSQL_USER": "your_username",
+        "MYSQL_PASSWORD": "your_password",
+        "MYSQL_DATABASE": "your_database"
+      }
+    }
+  }
+}
+```
+
+### With Visual Studio Code
+
+Add this to your `mcp.json`:
+
+```json
+{
+  "servers": {
+      "mysql": {
+            "type": "stdio",
+            "command": "uvx",
+            "args": [
+                "--from",
+                "mysql-mcp-server",
+                "mysql_mcp_server"
+            ],
+      "env": {
+        "MYSQL_HOST": "localhost",
+        "MYSQL_PORT": "3306",
+        "MYSQL_USER": "your_username",
+        "MYSQL_PASSWORD": "your_password",
+        "MYSQL_DATABASE": "your_database"
+      }
+    }
+  }
+}
+```
+
+Note: Will need to install uv for this to work
+
+### Debugging with MCP Inspector
+
+While MySQL MCP Server isn't intended to be run standalone or directly from the command line with Python, you can use the MCP Inspector to debug it.
+
+The MCP Inspector provides a convenient way to test and debug your MCP implementation:
+
+```bash
+# Install dependencies
+pip install -r requirements.txt
+# Use the MCP Inspector for debugging (do not run directly with Python)
+```
+
+The MySQL MCP Server is designed to be integrated with AI applications like Claude Desktop and should not be run directly as a standalone Python program.
+
+## Development
+
+```bash
+# Clone the repository
+git clone https://github.com/designcomputer/mysql_mcp_server.git
+cd mysql_mcp_server
+# Create virtual environment
+python -m venv venv
+source venv/bin/activate  # or `venv\Scripts\activate` on Windows
+# Install development dependencies
+pip install -r requirements-dev.txt
+# Run tests
+pytest
+```
+
+## Security Considerations
+
+- Never commit environment variables or credentials
+- Use a database user with minimal required permissions
+- Consider implementing query whitelisting for production use
+- Monitor and log all database operations
+
+## Security Best Practices
+
+This MCP implementation requires database access to function. For security:
+
+1. **Create a dedicated MySQL user** with minimal permissions
+2. **Never use root credentials** or administrative accounts
+3. **Restrict database access** to only necessary operations
+4. **Enable logging** for audit purposes
+5. **Regular security reviews** of database access
+
+See [MySQL Security Configuration Guide](https://github.com/designcomputer/mysql_mcp_server/blob/main/SECURITY.md) for detailed instructions on:
+
+- Creating a restricted MySQL user
+- Setting appropriate permissions
+- Monitoring database access
+- Security best practices
+
+⚠️ IMPORTANT: Always follow the principle of least privilege when configuring database access.
+
+## License
+
+MIT License - see LICENSE file for details.
+
+## Contributing
+
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add some amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request

+ 38 - 0
mcp-servers/mysql/init.go

@@ -0,0 +1,38 @@
+package mysql
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"mysql",
+			"MySQL",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("MySQL"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/designcomputer/mysql_mcp_server",
+			),
+			mcpservers.WithTags([]string{"database"}),
+			mcpservers.WithDescription(
+				"Allows AI assistants to list tables, read data, and execute SQL queries through a controlled interface, making database exploration and analysis safer and more structured.",
+			),
+			mcpservers.WithDescriptionCN(
+				"允许AI助手通过受控接口列出表、读取数据和执行SQL查询,使数据库的探索和分析更加安全和有结构。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 22 - 0
mcp-servers/oceanbase/README.cn.md

@@ -0,0 +1,22 @@
+# mcp-oceanbase
+
+> <https://github.com/oceanbase/mcp-oceanbase>
+
+OceanBase 数据库及其工具的 MCP Server
+
+## 功能
+
+本仓库提供了如下 MCP Server:
+
+| MCP Server           | 描述                                                |
+| -------------------- | --------------------------------------------------- |
+| OceanBase MCP Server | 一个可以和 OceanBase 数据库安全交互的MCP Server。   |
+| OCP MCP Server       | 一个可以和 OCP 交互的 MCP Server。                  |
+| OBCloud MCP Server   | 一个可以和 OBCloud 交互的 MCP Server。              |
+| OKCTL MCP Server     | 一个可以和 OceanBase 资源在 k8s 交互的 MCP Server。 |
+
+## 社区
+
+当你需要帮助时,你可以在 [https://ask.oceanbase.com](https://ask.oceanbase.com) 上找到开发者和其他的社区伙伴。
+
+当你发现项目缺陷时,请在 [issues](https://github.com/oceanbase/mcp-oceanbase/issues) 页面创建一个新的 issue。

+ 28 - 0
mcp-servers/oceanbase/README.md

@@ -0,0 +1,28 @@
+# mcp-oceanbase
+
+> <https://github.com/oceanbase/mcp-oceanbase>
+
+MCP Server for OceanBase database and its tools
+
+## Features
+
+This repository contains MCP Servers as following:
+
+| MCP Server           | Description                                                                                            |
+| -------------------- | ------------------------------------------------------------------------------------------------------ |
+| OceanBase MCP Server | A Model Context Protocol (MCP) server that enables secure interaction with OceanBase databases.        |
+| OCP MCP Server       | A Model Context Protocol (MCP) server that enables secure interaction with OCP.                        |
+| OBCloud MCP Server   | A Model Context Protocol (MCP) server that enables secure interaction with OBCloud.                    |
+| OKCTL MCP Server     | A Model Context Protocol (MCP) server that enables secure interaction with OceanBase resources in k8s. |
+
+## Community
+
+Don’t hesitate to ask!
+
+Contact the developers and community at [https://ask.oceanbase.com](https://ask.oceanbase.com) if you need any help.
+
+[Open an issue](https://github.com/oceanbase/mcp-oceanbase/issues) if you found a bug.
+
+## Licensing
+
+See [LICENSE](LICENSE) for more information.

+ 35 - 0
mcp-servers/oceanbase/init.go

@@ -0,0 +1,35 @@
+package oceanbase
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"oceanbase",
+			"OceanBase",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithTags([]string{"database"}),
+			mcpservers.WithGitHubURL("https://github.com/oceanbase/mcp-oceanbase"),
+			mcpservers.WithDescription(
+				"A model context protocol (MCP) server for secure interaction with OceanBase databases. This server allows AI assistants to list tables, read data, and execute SQL queries through controlled interfaces, making database exploration and analysis safer and more structured.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一个模型上下文协议 (MCP) 服务器,用于实现与 OceanBase 数据库的安全交互。该服务器允许 AI 助手通过受控接口列出表格、读取数据并执行 SQL 查询,从而使数据库的探索和分析更加安全、结构化。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 272 - 0
mcp-servers/office-word/README.cn.md

@@ -0,0 +1,272 @@
+# Office-Word-MCP-Server
+
+一个用于创建、读取和操作Microsoft Word文档的模型上下文协议(MCP)服务器。该服务器使AI助手能够通过标准化接口处理Word文档,提供丰富的文档编辑功能。
+
+<a href="https://glama.ai/mcp/servers/@GongRzhe/Office-Word-MCP-Server">
+  <img width="380" height="200" src="https://glama.ai/mcp/servers/@GongRzhe/Office-Word-MCP-Server/badge" alt="Office Word Server MCP server" />
+</a>
+
+![](https://badge.mcpx.dev?type=server "MCP Server")
+
+## 概述
+
+Office-Word-MCP-Server实现了[模型上下文协议](https://modelcontextprotocol.io/),将Word文档操作作为工具和资源公开。它作为AI助手和Microsoft Word文档之间的桥梁,允许文档创建、内容添加、格式化和分析。
+
+该服务器采用模块化架构,将核心功能、工具和实用程序分离,使其具有高度的可维护性和可扩展性,便于未来增强。
+
+### 示例
+
+#### 提示
+
+![image](https://github.com/user-attachments/assets/f49b0bcc-88b2-4509-bf50-995b9a40038c)
+
+#### 输出
+
+![image](https://github.com/user-attachments/assets/ff64385d-3822-4160-8cdf-f8a484ccc01a)
+
+## 功能特性
+
+### 文档管理
+
+- 创建带有元数据的新Word文档
+- 提取文本并分析文档结构
+- 查看文档属性和统计信息
+- 列出目录中的可用文档
+- 创建现有文档的副本
+- 将多个文档合并为单个文档
+- 将Word文档转换为PDF格式
+
+### 内容创建
+
+- 添加不同级别的标题
+- 插入带有可选样式的段落
+- 创建包含自定义数据的表格
+- 添加按比例缩放的图像
+- 插入分页符
+- 向文档添加脚注和尾注
+- 将脚注转换为尾注
+- 自定义脚注和尾注样式
+
+### 富文本格式化
+
+- 格式化特定文本部分(粗体、斜体、下划线)
+- 更改文本颜色和字体属性
+- 对文本元素应用自定义样式
+- 在整个文档中搜索和替换文本
+
+### 表格格式化
+
+- 使用边框和样式格式化表格
+- 创建具有独特格式的表头行
+- 应用单元格阴影和自定义边框
+- 构建表格以提高可读性
+
+### 高级文档操作
+
+- 删除段落
+- 创建自定义文档样式
+- 在整个文档中应用一致的格式
+- 对特定文本范围进行详细控制的格式化
+
+### 文档保护
+
+- 为文档添加密码保护
+- 实施带有可编辑部分的限制编辑
+- 为文档添加数字签名
+- 验证文档真实性和完整性
+
+## 安装
+
+### 通过Smithery安装
+
+通过[Smithery](https://smithery.ai/server/@GongRzhe/Office-Word-MCP-Server)自动为Claude Desktop安装Office Word文档服务器:
+
+```bash
+npx -y @smithery/cli install @GongRzhe/Office-Word-MCP-Server --client claude
+```
+
+### 先决条件
+
+- Python 3.8或更高版本
+- pip包管理器
+
+### 基本安装
+
+```bash
+# 克隆仓库
+git clone https://github.com/GongRzhe/Office-Word-MCP-Server.git
+cd Office-Word-MCP-Server
+
+# 安装依赖项
+pip install -r requirements.txt
+```
+
+### 使用安装脚本
+
+或者,您可以使用提供的安装脚本,它处理:
+
+- 检查先决条件
+- 设置虚拟环境
+- 安装依赖项
+- 生成MCP配置
+
+```bash
+python setup_mcp.py
+```
+
+## 与Claude Desktop配合使用
+
+### 配置
+
+#### 方法1:本地安装后
+
+1. 安装后,将服务器添加到您的Claude Desktop配置文件中:
+
+```json
+{
+  "mcpServers": {
+    "word-document-server": {
+      "command": "python",
+      "args": ["/path/to/word_mcp_server.py"]
+    }
+  }
+}
+```
+
+#### 方法2:无需安装(使用uvx)
+
+1. 您也可以配置Claude Desktop使用uvx包管理器来使用服务器,无需本地安装:
+
+```json
+{
+  "mcpServers": {
+    "word-document-server": {
+      "command": "uvx",
+      "args": ["--from", "office-word-mcp-server", "word_mcp_server"]
+    }
+  }
+}
+```
+
+2. 配置文件位置:
+
+   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
+   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+
+3. 重启Claude Desktop以加载配置。
+
+### 示例操作
+
+配置完成后,您可以要求Claude执行以下操作:
+
+- "创建一个名为'report.docx'的新文档,包含标题页"
+- "在我的文档中添加一个标题和三个段落"
+- "插入一个包含销售数据的4x4表格"
+- "将第2段中的'重要'一词格式化为粗体红色"
+- "搜索并替换所有'旧术语'为'新术语'"
+- "为章节标题创建自定义样式"
+- "对我文档中的表格应用格式"
+
+## API参考
+
+### 文档创建和属性
+
+```python
+create_document(filename, title=None, author=None)
+get_document_info(filename)
+get_document_text(filename)
+get_document_outline(filename)
+list_available_documents(directory=".")
+copy_document(source_filename, destination_filename=None)
+convert_to_pdf(filename, output_filename=None)
+```
+
+### 内容添加
+
+```python
+add_heading(filename, text, level=1)
+add_paragraph(filename, text, style=None)
+add_table(filename, rows, cols, data=None)
+add_picture(filename, image_path, width=None)
+add_page_break(filename)
+```
+
+### 内容提取
+
+```python
+get_document_text(filename)
+get_paragraph_text_from_document(filename, paragraph_index)
+find_text_in_document(filename, text_to_find, match_case=True, whole_word=False)
+```
+
+### 文本格式化
+
+```python
+format_text(filename, paragraph_index, start_pos, end_pos, bold=None,
+            italic=None, underline=None, color=None, font_size=None, font_name=None)
+search_and_replace(filename, find_text, replace_text)
+delete_paragraph(filename, paragraph_index)
+create_custom_style(filename, style_name, bold=None, italic=None,
+                    font_size=None, font_name=None, color=None, base_style=None)
+```
+
+### 表格格式化
+
+```python
+format_table(filename, table_index, has_header_row=None,
+             border_style=None, shading=None)
+```
+
+## 故障排除
+
+### 常见问题
+
+1. **缺少样式**
+
+   - 某些文档可能缺少标题和表格操作所需的样式
+   - 服务器将尝试创建缺少的样式或使用直接格式化
+   - 为获得最佳效果,请使用带有标准Word样式的模板
+
+2. **权限问题**
+
+   - 确保服务器有权限读取/写入文档路径
+   - 使用`copy_document`函数创建锁定文档的可编辑副本
+   - 如果操作失败,检查文件所有权和权限
+
+3. **图像插入问题**
+   - 对图像文件使用绝对路径
+   - 验证图像格式兼容性(推荐JPEG、PNG)
+   - 检查图像文件大小和权限
+
+### 调试
+
+通过设置环境变量启用详细日志记录:
+
+```bash
+export MCP_DEBUG=1  # Linux/macOS
+set MCP_DEBUG=1     # Windows
+```
+
+## 贡献
+
+欢迎贡献!请随时提交Pull Request。
+
+1. Fork仓库
+2. 创建您的功能分支 (`git checkout -b feature/amazing-feature`)
+3. 提交您的更改 (`git commit -m 'Add some amazing feature'`)
+4. 推送到分支 (`git push origin feature/amazing-feature`)
+5. 打开Pull Request
+
+## 许可证
+
+本项目采用MIT许可证 - 详情请参阅LICENSE文件。
+
+## 致谢
+
+- [模型上下文协议](https://modelcontextprotocol.io/) 提供协议规范
+- [python-docx](https://python-docx.readthedocs.io/) 用于Word文档操作
+- [FastMCP](https://github.com/modelcontextprotocol/python-sdk) 用于Python MCP实现
+
+---
+
+_注意:此服务器与您系统上的文档文件交互。在Claude Desktop或其他MCP客户端中确认操作之前,请始终验证请求的操作是否合适。_

+ 272 - 0
mcp-servers/office-word/README.md

@@ -0,0 +1,272 @@
+# Office-Word-MCP-Server
+
+A Model Context Protocol (MCP) server for creating, reading, and manipulating Microsoft Word documents. This server enables AI assistants to work with Word documents through a standardized interface, providing rich document editing capabilities.
+
+<a href="https://glama.ai/mcp/servers/@GongRzhe/Office-Word-MCP-Server">
+  <img width="380" height="200" src="https://glama.ai/mcp/servers/@GongRzhe/Office-Word-MCP-Server/badge" alt="Office Word Server MCP server" />
+</a>
+
+![](https://badge.mcpx.dev?type=server "MCP Server")
+
+## Overview
+
+Office-Word-MCP-Server implements the [Model Context Protocol](https://modelcontextprotocol.io/) to expose Word document operations as tools and resources. It serves as a bridge between AI assistants and Microsoft Word documents, allowing for document creation, content addition, formatting, and analysis.
+
+The server features a modular architecture that separates concerns into core functionality, tools, and utilities, making it highly maintainable and extensible for future enhancements.
+
+### Example
+
+#### Pormpt
+
+![image](https://github.com/user-attachments/assets/f49b0bcc-88b2-4509-bf50-995b9a40038c)
+
+#### Output
+
+![image](https://github.com/user-attachments/assets/ff64385d-3822-4160-8cdf-f8a484ccc01a)
+
+## Features
+
+### Document Management
+
+- Create new Word documents with metadata
+- Extract text and analyze document structure
+- View document properties and statistics
+- List available documents in a directory
+- Create copies of existing documents
+- Merge multiple documents into a single document
+- Convert Word documents to PDF format
+
+### Content Creation
+
+- Add headings with different levels
+- Insert paragraphs with optional styling
+- Create tables with custom data
+- Add images with proportional scaling
+- Insert page breaks
+- Add footnotes and endnotes to documents
+- Convert footnotes to endnotes
+- Customize footnote and endnote styling
+
+### Rich Text Formatting
+
+- Format specific text sections (bold, italic, underline)
+- Change text color and font properties
+- Apply custom styles to text elements
+- Search and replace text throughout documents
+
+### Table Formatting
+
+- Format tables with borders and styles
+- Create header rows with distinct formatting
+- Apply cell shading and custom borders
+- Structure tables for better readability
+
+### Advanced Document Manipulation
+
+- Delete paragraphs
+- Create custom document styles
+- Apply consistent formatting throughout documents
+- Format specific ranges of text with detailed control
+
+### Document Protection
+
+- Add password protection to documents
+- Implement restricted editing with editable sections
+- Add digital signatures to documents
+- Verify document authenticity and integrity
+
+## Installation
+
+### Installing via Smithery
+
+To install Office Word Document Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@GongRzhe/Office-Word-MCP-Server):
+
+```bash
+npx -y @smithery/cli install @GongRzhe/Office-Word-MCP-Server --client claude
+```
+
+### Prerequisites
+
+- Python 3.8 or higher
+- pip package manager
+
+### Basic Installation
+
+```bash
+# Clone the repository
+git clone https://github.com/GongRzhe/Office-Word-MCP-Server.git
+cd Office-Word-MCP-Server
+
+# Install dependencies
+pip install -r requirements.txt
+```
+
+### Using the Setup Script
+
+Alternatively, you can use the provided setup script which handles:
+
+- Checking prerequisites
+- Setting up a virtual environment
+- Installing dependencies
+- Generating MCP configuration
+
+```bash
+python setup_mcp.py
+```
+
+## Usage with Claude for Desktop
+
+### Configuration
+
+#### Method 1: After Local Installation
+
+1. After installation, add the server to your Claude for Desktop configuration file:
+
+```json
+{
+  "mcpServers": {
+    "word-document-server": {
+      "command": "python",
+      "args": ["/path/to/word_mcp_server.py"]
+    }
+  }
+}
+```
+
+#### Method 2: Without Installation (Using uvx)
+
+1. You can also configure Claude for Desktop to use the server without local installation by using the uvx package manager:
+
+```json
+{
+  "mcpServers": {
+    "word-document-server": {
+      "command": "uvx",
+      "args": ["--from", "office-word-mcp-server", "word_mcp_server"]
+    }
+  }
+}
+```
+
+2. Configuration file locations:
+
+   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
+   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
+
+3. Restart Claude for Desktop to load the configuration.
+
+### Example Operations
+
+Once configured, you can ask Claude to perform operations like:
+
+- "Create a new document called 'report.docx' with a title page"
+- "Add a heading and three paragraphs to my document"
+- "Insert a 4x4 table with sales data"
+- "Format the word 'important' in paragraph 2 to be bold and red"
+- "Search and replace all instances of 'old term' with 'new term'"
+- "Create a custom style for section headings"
+- "Apply formatting to the table in my document"
+
+## API Reference
+
+### Document Creation and Properties
+
+```python
+create_document(filename, title=None, author=None)
+get_document_info(filename)
+get_document_text(filename)
+get_document_outline(filename)
+list_available_documents(directory=".")
+copy_document(source_filename, destination_filename=None)
+convert_to_pdf(filename, output_filename=None)
+```
+
+### Content Addition
+
+```python
+add_heading(filename, text, level=1)
+add_paragraph(filename, text, style=None)
+add_table(filename, rows, cols, data=None)
+add_picture(filename, image_path, width=None)
+add_page_break(filename)
+```
+
+### Content Extraction
+
+```python
+get_document_text(filename)
+get_paragraph_text_from_document(filename, paragraph_index)
+find_text_in_document(filename, text_to_find, match_case=True, whole_word=False)
+```
+
+### Text Formatting
+
+```python
+format_text(filename, paragraph_index, start_pos, end_pos, bold=None,
+            italic=None, underline=None, color=None, font_size=None, font_name=None)
+search_and_replace(filename, find_text, replace_text)
+delete_paragraph(filename, paragraph_index)
+create_custom_style(filename, style_name, bold=None, italic=None,
+                    font_size=None, font_name=None, color=None, base_style=None)
+```
+
+### Table Formatting
+
+```python
+format_table(filename, table_index, has_header_row=None,
+             border_style=None, shading=None)
+```
+
+## Troubleshooting
+
+### Common Issues
+
+1. **Missing Styles**
+
+   - Some documents may lack required styles for heading and table operations
+   - The server will attempt to create missing styles or use direct formatting
+   - For best results, use templates with standard Word styles
+
+2. **Permission Issues**
+
+   - Ensure the server has permission to read/write to the document paths
+   - Use the `copy_document` function to create editable copies of locked documents
+   - Check file ownership and permissions if operations fail
+
+3. **Image Insertion Problems**
+   - Use absolute paths for image files
+   - Verify image format compatibility (JPEG, PNG recommended)
+   - Check image file size and permissions
+
+### Debugging
+
+Enable detailed logging by setting the environment variable:
+
+```bash
+export MCP_DEBUG=1  # Linux/macOS
+set MCP_DEBUG=1     # Windows
+```
+
+## Contributing
+
+Contributions are welcome! Please feel free to submit a Pull Request.
+
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add some amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
+
+## License
+
+This project is licensed under the MIT License - see the LICENSE file for details.
+
+## Acknowledgments
+
+- [Model Context Protocol](https://modelcontextprotocol.io/) for the protocol specification
+- [python-docx](https://python-docx.readthedocs.io/) for Word document manipulation
+- [FastMCP](https://github.com/modelcontextprotocol/python-sdk) for the Python MCP implementation
+
+---
+
+_Note: This server interacts with document files on your system. Always verify that requested operations are appropriate before confirming them in Claude for Desktop or other MCP clients._

+ 38 - 0
mcp-servers/office-word/init.go

@@ -0,0 +1,38 @@
+package officeword
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"office-word",
+			"Office Word",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Word文档"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/gongrzhe/office-word-mcp-server",
+			),
+			mcpservers.WithTags([]string{"word"}),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server that allows LLMs to interact with Microsoft Word documents using natural language. It provides a set of tools that can create, edit, and read Microsoft Word documents.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一种用于与Microsoft Word文档交互的模型上下文协议(MCP)服务器,允许LLM通过自然语言与Word文档进行交互。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 132 - 0
mcp-servers/openmemory/README.cn.md

@@ -0,0 +1,132 @@
+# OpenMemory
+
+> <https://github.com/mem0ai/mem0/tree/main/openmemory>
+
+OpenMemory 是您的个人化 LLM 记忆层 - 私有、便携且开源。您的记忆数据存储在本地,让您完全控制自己的数据。在保持数据安全的同时,构建具有个性化记忆的 AI 应用程序。
+
+![OpenMemory](https://github.com/user-attachments/assets/3c701757-ad82-4afa-bfbe-e049c2b4320b)
+
+## 简易安装
+
+### 前置要求
+
+- Docker
+- OpenAI API 密钥
+
+您可以通过运行以下命令快速运行 OpenMemory:
+
+```bash
+curl -sL https://raw.githubusercontent.com/mem0ai/mem0/main/openmemory/run.sh | bash
+```
+
+您应该将 `OPENAI_API_KEY` 设置为全局环境变量:
+
+```bash
+export OPENAI_API_KEY=your_api_key
+```
+
+您也可以将 `OPENAI_API_KEY` 作为脚本参数设置:
+
+```bash
+curl -sL https://raw.githubusercontent.com/mem0ai/mem0/main/openmemory/run.sh | OPENAI_API_KEY=your_api_key bash
+```
+
+## 前置要求
+
+- Docker 和 Docker Compose
+- Python 3.9+(用于后端开发)
+- Node.js(用于前端开发)
+- OpenAI API 密钥(LLM 交互必需,运行 `cp api/.env.example api/.env` 然后将 **OPENAI_API_KEY** 改为您的密钥)
+
+## 快速开始
+
+### 1. 设置环境变量
+
+在运行项目之前,您需要为 API 和 UI 配置环境变量。
+
+您可以通过以下方式之一完成:
+
+- **手动方式**:  
+  在以下目录中分别创建 `.env` 文件:
+  - `/api/.env`
+  - `/ui/.env`
+
+- **使用 `.env.example` 文件**:  
+  复制并重命名示例文件:
+
+  ```bash
+  cp api/.env.example api/.env
+  cp ui/.env.example ui/.env
+  ```
+
+- **使用 Makefile**(如果支持):  
+    运行:
+  
+   ```bash
+   make env
+   ```
+
+- #### `/api/.env` 示例
+
+```env
+OPENAI_API_KEY=sk-xxx
+USER=<user-id> # 您想要关联记忆的用户 ID
+```
+
+- #### `/ui/.env` 示例
+
+```env
+NEXT_PUBLIC_API_URL=http://localhost:8765
+NEXT_PUBLIC_USER_ID=<user-id> # 与 api 环境变量中的用户 ID 相同
+```
+
+### 2. 构建并运行项目
+
+您可以使用以下两个命令运行项目:
+
+```bash
+make build # 构建 mcp 服务器和 ui
+make up    # 运行 openmemory mcp 服务器和 ui
+```
+
+运行这些命令后,您将拥有:
+
+- OpenMemory MCP 服务器运行在:<http://localhost:8765(API> 文档可在 <http://localhost:8765/docs> 查看)
+- OpenMemory UI 运行在:<http://localhost:3000>
+
+#### UI 在 `localhost:3000` 无法正常工作?
+
+如果 UI 在 [http://localhost:3000](http://localhost:3000) 无法正常启动,请尝试手动运行:
+
+```bash
+cd ui
+pnpm install
+pnpm dev
+```
+
+## 项目结构
+
+- `api/` - 后端 API + MCP 服务器
+- `ui/` - 前端 React 应用程序
+
+## 贡献
+
+我们是一个对 AI 和开源软件未来充满热情的开发者团队。凭借在这两个领域多年的经验,我们相信社区驱动开发的力量,并致力于构建让 AI 更加易用和个性化的工具。
+
+我们欢迎各种形式的贡献:
+
+- 错误报告和功能请求
+- 文档改进
+- 代码贡献
+- 测试和反馈
+- 社区支持
+
+如何贡献:
+
+1. Fork 仓库
+2. 创建您的功能分支(`git checkout -b openmemory/feature/amazing-feature`)
+3. 提交您的更改(`git commit -m 'Add some amazing feature'`)
+4. 推送到分支(`git push origin openmemory/feature/amazing-feature`)
+5. 开启 Pull Request
+
+加入我们,共同构建 AI 记忆管理的未来!您的贡献将帮助 OpenMemory 为每个人变得更好。

+ 132 - 0
mcp-servers/openmemory/README.md

@@ -0,0 +1,132 @@
+# OpenMemory
+
+> <https://github.com/mem0ai/mem0/tree/main/openmemory>
+
+OpenMemory is your personal memory layer for LLMs - private, portable, and open-source. Your memories live locally, giving you complete control over your data. Build AI applications with personalized memories while keeping your data secure.
+
+![OpenMemory](https://github.com/user-attachments/assets/3c701757-ad82-4afa-bfbe-e049c2b4320b)
+
+## Easy Setup
+
+### Prerequisites
+
+- Docker
+- OpenAI API Key
+
+You can quickly run OpenMemory by running the following command:
+
+```bash
+curl -sL https://raw.githubusercontent.com/mem0ai/mem0/main/openmemory/run.sh | bash
+```
+
+You should set the `OPENAI_API_KEY` as a global environment variable:
+
+```bash
+export OPENAI_API_KEY=your_api_key
+```
+
+You can also set the `OPENAI_API_KEY` as a parameter to the script:
+
+```bash
+curl -sL https://raw.githubusercontent.com/mem0ai/mem0/main/openmemory/run.sh | OPENAI_API_KEY=your_api_key bash
+```
+
+## Prerequisites
+
+- Docker and Docker Compose
+- Python 3.9+ (for backend development)
+- Node.js (for frontend development)
+- OpenAI API Key (required for LLM interactions, run `cp api/.env.example api/.env` then change **OPENAI_API_KEY** to yours)
+
+## Quickstart
+
+### 1. Set Up Environment Variables
+
+Before running the project, you need to configure environment variables for both the API and the UI.
+
+You can do this in one of the following ways:
+
+- **Manually**:  
+  Create a `.env` file in each of the following directories:
+  - `/api/.env`
+  - `/ui/.env`
+
+- **Using `.env.example` files**:  
+  Copy and rename the example files:
+
+  ```bash
+  cp api/.env.example api/.env
+  cp ui/.env.example ui/.env
+  ```
+
+- **Using Makefile** (if supported):  
+    Run:
+  
+   ```bash
+   make env
+   ```
+
+- #### Example `/api/.env`
+
+```env
+OPENAI_API_KEY=sk-xxx
+USER=<user-id> # The User Id you want to associate the memories with 
+```
+
+- #### Example `/ui/.env`
+
+```env
+NEXT_PUBLIC_API_URL=http://localhost:8765
+NEXT_PUBLIC_USER_ID=<user-id> # Same as the user id for environment variable in api
+```
+
+### 2. Build and Run the Project
+
+You can run the project using the following two commands:
+
+```bash
+make build # builds the mcp server and ui
+make up  # runs openmemory mcp server and ui
+```
+
+After running these commands, you will have:
+
+- OpenMemory MCP server running at: <http://localhost:8765> (API documentation available at <http://localhost:8765/docs>)
+- OpenMemory UI running at: <http://localhost:3000>
+
+#### UI not working on `localhost:3000`?
+
+If the UI does not start properly on [http://localhost:3000](http://localhost:3000), try running it manually:
+
+```bash
+cd ui
+pnpm install
+pnpm dev
+```
+
+## Project Structure
+
+- `api/` - Backend APIs + MCP server
+- `ui/` - Frontend React application
+
+## Contributing
+
+We are a team of developers passionate about the future of AI and open-source software. With years of experience in both fields, we believe in the power of community-driven development and are excited to build tools that make AI more accessible and personalized.
+
+We welcome all forms of contributions:
+
+- Bug reports and feature requests
+- Documentation improvements
+- Code contributions
+- Testing and feedback
+- Community support
+
+How to contribute:
+
+1. Fork the repository
+2. Create your feature branch (`git checkout -b openmemory/feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add some amazing feature'`)
+4. Push to the branch (`git push origin openmemory/feature/amazing-feature`)
+5. Open a Pull Request
+
+Join us in building the future of AI memory management! Your contributions help make OpenMemory better for everyone.

+ 35 - 0
mcp-servers/openmemory/init.go

@@ -0,0 +1,35 @@
+package openmemory
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"openmemory",
+			"OpenMemory",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithTags([]string{"search"}),
+			mcpservers.WithGitHubURL("https://github.com/mem0ai/mem0/tree/main/openmemory"),
+			mcpservers.WithDescription(
+				"OpenMemory is your personal memory layer for large language models (LLMs) - private, portable, and open-source. Your memory data is stored locally, giving you full control over your data. While building AI applications with personalized memory, ensure your data remains secure.",
+			),
+			mcpservers.WithDescriptionCN(
+				"OpenMemory 是您的个人记忆层,适用于大型语言模型(LLM)——私有、便携且开源。您的记忆数据存储在本地,让您完全掌控自己的数据。在构建具有个性化记忆的AI应用程序的同时,确保您的数据安全。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 686 - 0
mcp-servers/playwright/README.cn.md

@@ -0,0 +1,686 @@
+## Playwright MCP
+
+> <https://github.com/microsoft/playwright-mcp>
+
+一个模型上下文协议 (MCP) 服务器,使用 [Playwright](https://playwright.dev) 提供浏览器自动化功能。该服务器使 LLM 能够通过结构化的无障碍快照与网页交互,无需截图或视觉调优模型。
+
+### 主要特性
+
+- **快速且轻量级**。使用 Playwright 的无障碍树,而非基于像素的输入。
+- **LLM 友好**。无需视觉模型,纯粹基于结构化数据操作。
+- **确定性工具应用**。避免了基于截图方法常见的模糊性。
+
+### 系统要求
+
+- Node.js 18 或更新版本
+- VS Code、Cursor、Windsurf、Claude Desktop 或任何其他 MCP 客户端
+
+### 快速开始
+
+首先,在您的客户端中安装 Playwright MCP 服务器。典型配置如下:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+[<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="在 VS Code 中安装">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D) [<img alt="在 VS Code Insiders 中安装" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D)
+
+<details><summary><b>在 VS Code 中安装</b></summary>
+
+您也可以使用 VS Code CLI 安装 Playwright MCP 服务器:
+
+```bash
+# 对于 VS Code
+code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
+```
+
+安装后,Playwright MCP 服务器将可在 VS Code 中与您的 GitHub Copilot 代理一起使用。
+</details>
+
+<details>
+<summary><b>在 Cursor 中安装</b></summary>
+
+#### 点击按钮安装
+
+[![安装 MCP 服务器](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=playwright&config=eyJjb21tYW5kIjoibnB4IEBwbGF5d3JpZ2h0L21jcEBsYXRlc3QifQ%3D%3D)
+
+#### 或手动安装
+
+前往 `Cursor Settings` -> `MCP` -> `Add new MCP Server`。随意命名,使用 `command` 类型,命令为 `npx @playwright/mcp`。您也可以通过点击 `Edit` 验证配置或添加命令行参数。
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary><b>在 Windsurf 中安装</b></summary>
+
+参考 Windsurf MCP [文档](https://docs.windsurf.com/windsurf/cascade/mcp)。使用以下配置:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary><b>在 Claude Desktop 中安装</b></summary>
+
+参考 MCP 安装[指南](https://modelcontextprotocol.io/quickstart/user),使用以下配置:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary><b>在 Qodo Gen 中安装</b></summary>
+
+在 VSCode 或 IntelliJ 中打开 [Qodo Gen](https://docs.qodo.ai/qodo-documentation/qodo-gen) 聊天面板 → Connect more tools → + Add new MCP → 粘贴以下配置:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+点击 <code>Save</code>。
+</details>
+
+### 配置
+
+Playwright MCP 服务器支持以下参数。它们可以在上述 JSON 配置中作为 `"args"` 列表的一部分提供:
+
+```
+> npx @playwright/mcp@latest --help
+  --allowed-origins <origins>  允许浏览器请求的源列表,用分号分隔。默认允许所有。
+  --blocked-origins <origins>  阻止浏览器请求的源列表,用分号分隔。阻止列表在允许列表之前评估。如果在没有允许列表的情况下使用,不匹配阻止列表的请求仍然被允许。
+  --block-service-workers      阻止 service workers
+  --browser <browser>          要使用的浏览器或 chrome 频道,可能的值:chrome、firefox、webkit、msedge。
+  --browser-agent <endpoint>   使用浏览器代理(实验性)。
+  --caps <caps>                要启用的功能列表,用逗号分隔,可能的值:tabs、pdf、history、wait、files、install。默认是全部。
+  --cdp-endpoint <endpoint>    要连接的 CDP 端点。
+  --config <path>              配置文件的路径。
+  --device <device>            要模拟的设备,例如:"iPhone 15"
+  --executable-path <path>     浏览器可执行文件的路径。
+  --headless                   在无头模式下运行浏览器,默认为有头模式
+  --host <host>                服务器绑定的主机。默认是 localhost。使用 0.0.0.0 绑定到所有接口。
+  --ignore-https-errors        忽略 https 错误
+  --isolated                   将浏览器配置文件保存在内存中,不保存到磁盘。
+  --image-responses <mode>     是否向客户端发送图像响应。可以是 "allow"、"omit" 或 "auto"。默认为 "auto",如果客户端可以显示图像则发送。
+  --no-sandbox                 为通常沙盒化的所有进程类型禁用沙盒。
+  --output-dir <path>          输出文件的目录路径。
+  --port <port>                SSE 传输监听的端口。
+  --proxy-bypass <bypass>      绕过代理的域列表,用逗号分隔,例如 ".com,chromium.org,.domain.com"
+  --proxy-server <proxy>       指定代理服务器,例如 "http://myproxy:3128" 或 "socks5://myproxy:8080"
+  --save-trace                 是否将会话的 Playwright Trace 保存到输出目录。
+  --storage-state <path>       隔离会话的存储状态文件路径。
+  --user-agent <ua string>     指定用户代理字符串
+  --user-data-dir <path>       用户数据目录的路径。如果未指定,将创建临时目录。
+  --viewport-size <size>       指定浏览器视口大小(像素),例如 "1280, 720"
+  --vision                     运行使用截图的服务器(默认使用 Aria 快照)
+```
+
+### 用户配置文件
+
+您可以使用持久配置文件(默认)像常规浏览器一样运行 Playwright MCP,或者在隔离上下文中用于测试会话。
+
+**持久配置文件**
+
+所有登录信息都将存储在持久配置文件中,如果您想清除离线状态,可以在会话之间删除它。
+持久配置文件位于以下位置,您可以使用 `--user-data-dir` 参数覆盖它。
+
+```bash
+# Windows
+%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-profile
+
+# macOS
+- ~/Library/Caches/ms-playwright/mcp-{channel}-profile
+
+# Linux
+- ~/.cache/ms-playwright/mcp-{channel}-profile
+```
+
+**隔离模式**
+
+在隔离模式下,每个会话都在隔离配置文件中启动。每次您要求 MCP 关闭浏览器时,
+会话都会关闭,该会话的所有存储状态都会丢失。您可以通过配置的 `contextOptions` 或通过 `--storage-state` 参数向浏览器提供初始存储状态。在[这里](https://playwright.dev/docs/auth)了解更多关于存储状态的信息。
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest",
+        "--isolated",
+        "--storage-state={path/to/storage.json}"
+      ]
+    }
+  }
+}
+```
+
+### 配置文件
+
+Playwright MCP 服务器可以使用 JSON 配置文件进行配置。您可以使用 `--config` 命令行选项指定配置文件:
+
+```bash
+npx @playwright/mcp@latest --config path/to/config.json
+```
+
+<details>
+<summary>配置文件架构</summary>
+
+```typescript
+{
+  // 浏览器配置
+  browser?: {
+    // 要使用的浏览器类型(chromium、firefox 或 webkit)
+    browserName?: 'chromium' | 'firefox' | 'webkit';
+
+    // 将浏览器配置文件保存在内存中,不保存到磁盘。
+    isolated?: boolean;
+
+    // 浏览器配置文件持久化的用户数据目录路径
+    userDataDir?: string;
+
+    // 浏览器启动选项(参见 Playwright 文档)
+    // @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch
+    launchOptions?: {
+      channel?: string;        // 浏览器频道(例如 'chrome')
+      headless?: boolean;      // 在无头模式下运行
+      executablePath?: string; // 浏览器可执行文件路径
+      // ... 其他 Playwright 启动选项
+    };
+
+    // 浏览器上下文选项
+    // @see https://playwright.dev/docs/api/class-browser#browser-new-context
+    contextOptions?: {
+      viewport?: { width: number, height: number };
+      // ... 其他 Playwright 上下文选项
+    };
+
+    // 用于连接到现有浏览器的 CDP 端点
+    cdpEndpoint?: string;
+
+    // 远程 Playwright 服务器端点
+    remoteEndpoint?: string;
+  },
+
+  // 服务器配置
+  server?: {
+    port?: number;  // 监听端口
+    host?: string;  // 绑定主机(默认:localhost)
+  },
+
+  // 启用的功能列表
+  capabilities?: Array<
+    'core' |    // 核心浏览器自动化
+    'tabs' |    // 标签页管理
+    'pdf' |     // PDF 生成
+    'history' | // 浏览器历史
+    'wait' |    // 等待工具
+    'files' |   // 文件处理
+    'install' | // 浏览器安装
+    'testing'   // 测试
+  >;
+
+  // 启用视觉模式(截图而非无障碍快照)
+  vision?: boolean;
+
+  // 输出文件目录
+  outputDir?: string;
+
+  // 网络配置
+  network?: {
+    // 允许浏览器请求的源列表。默认允许所有。同时匹配 `allowedOrigins` 和 `blockedOrigins` 的源将被阻止。
+    allowedOrigins?: string[];
+
+    // 阻止浏览器请求的源列表。同时匹配 `allowedOrigins` 和 `blockedOrigins` 的源将被阻止。
+    blockedOrigins?: string[];
+  };
+ 
+  /**
+   * 不向客户端发送图像响应。
+   */
+  noImageResponses?: boolean;
+}
+```
+
+</details>
+
+### 独立 MCP 服务器
+
+当在没有显示器的系统上运行有头浏览器或从 IDE 的工作进程运行时,
+从具有 DISPLAY 的环境运行 MCP 服务器并传递 `--port` 标志以启用 SSE 传输。
+
+```bash
+npx @playwright/mcp@latest --port 8931
+```
+
+然后在 MCP 客户端配置中,将 `url` 设置为 SSE 端点:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "url": "http://localhost:8931/sse"
+    }
+  }
+}
+```
+
+<details>
+<summary><b>Docker</b></summary>
+
+**注意:** Docker 实现目前仅支持无头 chromium。
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "docker",
+      "args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
+    }
+  }
+}
+```
+
+您可以自己构建 Docker 镜像。
+
+```
+docker build -t mcr.microsoft.com/playwright/mcp .
+```
+
+</details>
+
+<details>
+<summary><b>编程使用</b></summary>
+
+```js
+import http from 'http';
+
+import { createConnection } from '@playwright/mcp';
+import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
+
+http.createServer(async (req, res) => {
+  // ...
+
+  // 创建一个无头 Playwright MCP 服务器与 SSE 传输
+  const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
+  const transport = new SSEServerTransport('/messages', res);
+  await connection.sever.connect(transport);
+
+  // ...
+});
+```
+
+</details>
+
+### 工具
+
+工具有两种模式可用:
+
+1. **快照模式**(默认):使用无障碍快照以获得更好的性能和可靠性
+2. **视觉模式**:使用截图进行基于视觉的交互
+
+要使用视觉模式,在启动服务器时添加 `--vision` 标志:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest",
+        "--vision"
+      ]
+    }
+  }
+}
+```
+
+视觉模式最适合能够基于提供的截图使用 X Y 坐标空间与元素交互的计算机使用模型。
+
+<details>
+<summary><b>交互</b></summary>
+
+- **browser_snapshot**
+  - 标题:页面快照
+  - 描述:捕获当前页面的无障碍快照,这比截图更好
+  - 参数:无
+  - 只读:**是**
+
+- **browser_click**
+  - 标题:点击
+  - 描述:在网页上执行点击
+  - 参数:
+    - `element` (string):用于获得与元素交互权限的人类可读元素描述
+    - `ref` (string):来自页面快照的确切目标元素引用
+  - 只读:**否**
+
+- **browser_drag**
+  - 标题:拖拽鼠标
+  - 描述:在两个元素之间执行拖放
+  - 参数:
+    - `startElement` (string):用于获得与元素交互权限的人类可读源元素描述
+    - `startRef` (string):来自页面快照的确切源元素引用
+    - `endElement` (string):用于获得与元素交互权限的人类可读目标元素描述
+    - `endRef` (string):来自页面快照的确切目标元素引用
+  - 只读:**否**
+
+- **browser_hover**
+  - 标题:悬停鼠标
+  - 描述:在页面元素上悬停
+  - 参数:
+    - `element` (string):用于获得与元素交互权限的人类可读元素描述
+    - `ref` (string):来自页面快照的确切目标元素引用
+  - 只读:**是**
+
+- **browser_type**
+  - 标题:输入文本
+  - 描述:在可编辑元素中输入文本
+  - 参数:
+    - `element` (string):用于获得与元素交互权限的人类可读元素描述
+    - `ref` (string):来自页面快照的确切目标元素引用
+    - `text` (string):要输入到元素中的文本
+    - `submit` (boolean, 可选):是否提交输入的文本(之后按 Enter)
+    - `slowly` (boolean, 可选):是否一次输入一个字符。对于触发页面中的键处理程序很有用。默认情况下一次填入整个文本。
+  - 只读:**否**
+
+- **browser_select_option**
+  - 标题:选择选项
+  - 描述:在下拉菜单中选择选项
+  - 参数:
+    - `element` (string):用于获得与元素交互权限的人类可读元素描述
+    - `ref` (string):来自页面快照的确切目标元素引用
+    - `values` (array):在下拉菜单中选择的值数组。可以是单个值或多个值。
+  - 只读:**否**
+
+- **browser_press_key**
+  - 标题:按键
+  - 描述:在键盘上按键
+  - 参数:
+    - `key` (string):要按的键名或要生成的字符,如 `ArrowLeft` 或 `a`
+  - 只读:**否**
+
+- **browser_wait_for**
+  - 标题:等待
+  - 描述:等待文本出现或消失或指定时间过去
+  - 参数:
+    - `time` (number, 可选):等待时间(秒)
+    - `text` (string, 可选):要等待的文本
+    - `textGone` (string, 可选):要等待消失的文本
+  - 只读:**是**
+
+- **browser_file_upload**
+  - 标题:上传文件
+  - 描述:上传一个或多个文件
+  - 参数:
+    - `paths` (array):要上传的文件的绝对路径。可以是单个文件或多个文件。
+  - 只读:**否**
+
+- **browser_handle_dialog**
+  - 标题:处理对话框
+  - 描述:处理对话框
+  - 参数:
+    - `accept` (boolean):是否接受对话框。
+    - `promptText` (string, 可选):提示对话框的文本。
+  - 只读:**否**
+
+</details>
+
+<details>
+<summary><b>导航</b></summary>
+
+- **browser_navigate**
+  - 标题:导航到 URL
+  - 描述:导航到 URL
+  - 参数:
+    - `url` (string):要导航到的 URL
+  - 只读:**否**
+
+- **browser_navigate_back**
+  - 标题:后退
+  - 描述:返回到上一页
+  - 参数:无
+  - 只读:**是**
+
+- **browser_navigate_forward**
+  - 标题:前进
+  - 描述:前进到下一页
+  - 参数:无
+  - 只读:**是**
+
+</details>
+
+<details>
+<summary><b>资源</b></summary>
+
+- **browser_take_screenshot**
+  - 标题:截图
+  - 描述:截取当前页面的屏幕截图。您不能基于截图执行操作,请使用 browser_snapshot 进行操作。
+  - 参数:
+    - `raw` (boolean, 可选):是否返回无压缩(PNG 格式)。默认为 false,返回 JPEG 图像。
+    - `filename` (string, 可选):保存截图的文件名。如果未指定,默认为 `page-{timestamp}.{png|jpeg}`。
+    - `element` (string, 可选):用于获得截图元素权限的人类可读元素描述。如果未提供,将截取视口的截图。如果提供了 element,也必须提供 ref。
+    - `ref` (string, 可选):来自页面快照的确切目标元素引用。如果未提供,将截取视口的截图。如果提供了 ref,也必须提供 element。
+  - 只读:**是**
+
+- **browser_pdf_save**
+  - 标题:保存为 PDF
+  - 描述:将页面保存为 PDF
+  - 参数:
+    - `filename` (string, 可选):保存 PDF 的文件名。如果未指定,默认为 `page-{timestamp}.pdf`。
+  - 只读:**是**
+
+- **browser_network_requests**
+  - 标题:列出网络请求
+  - 描述:返回自加载页面以来的所有网络请求
+  - 参数:无
+  - 只读:**是**
+
+- **browser_console_messages**
+  - 标题:获取控制台消息
+  - 描述:返回所有控制台消息
+  - 参数:无
+  - 只读:**是**
+
+</details>
+
+<details>
+<summary><b>工具</b></summary>
+
+- **browser_install**
+  - 标题:安装配置中指定的浏览器
+  - 描述:安装配置中指定的浏览器。如果您收到关于浏览器未安装的错误,请调用此功能。
+  - 参数:无
+  - 只读:**否**
+
+- **browser_close**
+  - 标题:关闭浏览器
+  - 描述:关闭页面
+  - 参数:无
+  - 只读:**是**
+
+- **browser_resize**
+  - 标题:调整浏览器窗口大小
+  - 描述:调整浏览器窗口大小
+  - 参数:
+    - `width` (number):浏览器窗口宽度
+    - `height` (number):浏览器窗口高度
+  - 只读:**是**
+
+</details>
+
+<details>
+<summary><b>标签页</b></summary>
+
+- **browser_tab_list**
+  - 标题:列出标签页
+  - 描述:列出浏览器标签页
+  - 参数:无
+  - 只读:**是**
+
+- **browser_tab_new**
+  - 标题:打开新标签页
+  - 描述:打开新标签页
+  - 参数:
+    - `url` (string, 可选):在新标签页中导航到的 URL。如果未提供,新标签页将为空白。
+  - 只读:**是**
+
+- **browser_tab_select**
+  - 标题:选择标签页
+  - 描述:按索引选择标签页
+  - 参数:
+    - `index` (number):要选择的标签页索引
+  - 只读:**是**
+
+- **browser_tab_close**
+  - 标题:关闭标签页
+  - 描述:关闭标签页
+  - 参数:
+    - `index` (number, 可选):要关闭的标签页索引。如果未提供则关闭当前标签页。
+  - 只读:**否**
+
+</details>
+
+<details>
+<summary><b>测试</b></summary>
+
+- **browser_generate_playwright_test**
+  - 标题:生成 Playwright 测试
+  - 描述:为给定场景生成 Playwright 测试
+  - 参数:
+    - `name` (string):测试名称
+    - `description` (string):测试描述
+    - `steps` (array):测试步骤
+  - 只读:**是**
+
+</details>
+
+<details>
+<summary><b>视觉模式</b></summary>
+
+- **browser_screen_capture**
+  - 标题:截图
+  - 描述:截取当前页面的屏幕截图
+  - 参数:无
+  - 只读:**是**
+
+- **browser_screen_move_mouse**
+  - 标题:移动鼠标
+  - 描述:将鼠标移动到给定位置
+  - 参数:
+    - `element` (string):用于获得与元素交互权限的人类可读元素描述
+    - `x` (number):X 坐标
+    - `y` (number):Y 坐标
+  - 只读:**是**
+
+- **browser_screen_click**
+  - 标题:点击
+  - 描述:点击鼠标左键
+  - 参数:
+    - `element` (string):用于获得与元素交互权限的人类可读元素描述
+    - `x` (number):X 坐标
+    - `y` (number):Y 坐标
+  - 只读:**否**
+
+- **browser_screen_drag**
+  - 标题:拖拽鼠标
+  - 描述:拖拽鼠标左键
+  - 参数:
+    - `element` (string):用于获得与元素交互权限的人类可读元素描述
+    - `startX` (number):起始 X 坐标
+    - `startY` (number):起始 Y 坐标
+    - `endX` (number):结束 X 坐标
+    - `endY` (number):结束 Y 坐标
+  - 只读:**否**
+
+- **browser_screen_type**
+  - 标题:输入文本
+  - 描述:输入文本
+  - 参数:
+    - `text` (string):要输入到元素中的文本
+    - `submit` (boolean, 可选):是否提交输入的文本(之后按 Enter)
+  - 只读:**否**
+
+- **browser_press_key**
+  - 标题:按键
+  - 描述:在键盘上按键
+  - 参数:
+    - `key` (string):要按的键名或要生成的字符,如 `ArrowLeft` 或 `a`
+  - 只读:**否**
+
+- **browser_wait_for**
+  - 标题:等待
+  - 描述:等待文本出现或消失或指定时间过去
+  - 参数:
+    - `time` (number, 可选):等待时间(秒)
+    - `text` (string, 可选):要等待的文本
+    - `textGone` (string, 可选):要等待消失的文本
+  - 只读:**是**
+
+- **browser_file_upload**
+  - 标题:上传文件
+  - 描述:上传一个或多个文件
+  - 参数:
+    - `paths` (array):要上传的文件的绝对路径。可以是单个文件或多个文件。
+  - 只读:**否**
+
+- **browser_handle_dialog**
+  - 标题:处理对话框
+  - 描述:处理对话框
+  - 参数:
+    - `accept` (boolean):是否接受对话框。
+    - `promptText` (string, 可选):提示对话框的文本。
+  - 只读:**否**
+
+</details>

+ 792 - 0
mcp-servers/playwright/README.md

@@ -0,0 +1,792 @@
+## Playwright MCP
+
+> <https://github.com/microsoft/playwright-mcp>
+
+A Model Context Protocol (MCP) server that provides browser automation capabilities using [Playwright](https://playwright.dev). This server enables LLMs to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually-tuned models.
+
+### Key Features
+
+- **Fast and lightweight**. Uses Playwright's accessibility tree, not pixel-based input.
+- **LLM-friendly**. No vision models needed, operates purely on structured data.
+- **Deterministic tool application**. Avoids ambiguity common with screenshot-based approaches.
+
+### Requirements
+
+- Node.js 18 or newer
+- VS Code, Cursor, Windsurf, Claude Desktop or any other MCP client
+
+<!--
+// Generate using:
+node utils/generate-links.js
+-->
+
+### Getting started
+
+First, install the Playwright MCP server with your client. A typical configuration looks like this:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+[<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D) [<img alt="Install in VS Code Insiders" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D)
+
+<details><summary><b>Install in VS Code</b></summary>
+
+You can also install the Playwright MCP server using the VS Code CLI:
+
+```bash
+# For VS Code
+code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
+```
+
+After installation, the Playwright MCP server will be available for use with your GitHub Copilot agent in VS Code.
+</details>
+
+<details>
+<summary><b>Install in Cursor</b></summary>
+
+#### Click the button to install
+
+[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=playwright&config=eyJjb21tYW5kIjoibnB4IEBwbGF5d3JpZ2h0L21jcEBsYXRlc3QifQ%3D%3D)
+
+#### Or install manually
+
+Go to `Cursor Settings` -> `MCP` -> `Add new MCP Server`. Name to your liking, use `command` type with the command `npx @playwright/mcp`. You can also verify config or add command like arguments via clicking `Edit`.
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary><b>Install in Windsurf</b></summary>
+
+Follow Windsuff MCP [documentation](https://docs.windsurf.com/windsurf/cascade/mcp). Use following configuration:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary><b>Install in Claude Desktop</b></summary>
+
+Follow the MCP install [guide](https://modelcontextprotocol.io/quickstart/user), use following configuration:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+</details>
+
+<details>
+<summary><b>Install in Qodo Gen</b></summary>
+
+Open [Qodo Gen](https://docs.qodo.ai/qodo-documentation/qodo-gen) chat panel in VSCode or IntelliJ → Connect more tools → + Add new MCP → Paste the following configuration:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest"
+      ]
+    }
+  }
+}
+```
+
+Click <code>Save</code>.
+</details>
+
+### Configuration
+
+Playwright MCP server supports following arguments. They can be provided in the JSON configuration above, as a part of the `"args"` list:
+
+<!--- Options generated by update-readme.js -->
+
+```
+> npx @playwright/mcp@latest --help
+  --allowed-origins <origins>  semicolon-separated list of origins to allow the
+                               browser to request. Default is to allow all.
+  --blocked-origins <origins>  semicolon-separated list of origins to block the
+                               browser from requesting. Blocklist is evaluated
+                               before allowlist. If used without the allowlist,
+                               requests not matching the blocklist are still
+                               allowed.
+  --block-service-workers      block service workers
+  --browser <browser>          browser or chrome channel to use, possible
+                               values: chrome, firefox, webkit, msedge.
+  --browser-agent <endpoint>   Use browser agent (experimental).
+  --caps <caps>                comma-separated list of capabilities to enable,
+                               possible values: tabs, pdf, history, wait, files,
+                               install. Default is all.
+  --cdp-endpoint <endpoint>    CDP endpoint to connect to.
+  --config <path>              path to the configuration file.
+  --device <device>            device to emulate, for example: "iPhone 15"
+  --executable-path <path>     path to the browser executable.
+  --headless                   run browser in headless mode, headed by default
+  --host <host>                host to bind server to. Default is localhost. Use
+                               0.0.0.0 to bind to all interfaces.
+  --ignore-https-errors        ignore https errors
+  --isolated                   keep the browser profile in memory, do not save
+                               it to disk.
+  --image-responses <mode>     whether to send image responses to the client.
+                               Can be "allow", "omit", or "auto". Defaults to
+                               "auto", which sends images if the client can
+                               display them.
+  --no-sandbox                 disable the sandbox for all process types that
+                               are normally sandboxed.
+  --output-dir <path>          path to the directory for output files.
+  --port <port>                port to listen on for SSE transport.
+  --proxy-bypass <bypass>      comma-separated domains to bypass proxy, for
+                               example ".com,chromium.org,.domain.com"
+  --proxy-server <proxy>       specify proxy server, for example
+                               "http://myproxy:3128" or "socks5://myproxy:8080"
+  --save-trace                 Whether to save the Playwright Trace of the
+                               session into the output directory.
+  --storage-state <path>       path to the storage state file for isolated
+                               sessions.
+  --user-agent <ua string>     specify user agent string
+  --user-data-dir <path>       path to the user data directory. If not
+                               specified, a temporary directory will be created.
+  --viewport-size <size>       specify browser viewport size in pixels, for
+                               example "1280, 720"
+  --vision                     Run server that uses screenshots (Aria snapshots
+                               are used by default)
+```
+
+<!--- End of options generated section -->
+
+### User profile
+
+You can run Playwright MCP with persistent profile like a regular browser (default), or in the isolated contexts for the testing sessions.
+
+**Persistent profile**
+
+All the logged in information will be stored in the persistent profile, you can delete it between sessions if you'd like to clear the offline state.
+Persistent profile is located at the following locations and you can override it with the `--user-data-dir` argument.
+
+```bash
+# Windows
+%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-profile
+
+# macOS
+- ~/Library/Caches/ms-playwright/mcp-{channel}-profile
+
+# Linux
+- ~/.cache/ms-playwright/mcp-{channel}-profile
+```
+
+**Isolated**
+
+In the isolated mode, each session is started in the isolated profile. Every time you ask MCP to close the browser,
+the session is closed and all the storage state for this session is lost. You can provide initial storage state
+to the browser via the config's `contextOptions` or via the `--storage-state` argument. Learn more about the storage
+state [here](https://playwright.dev/docs/auth).
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest",
+        "--isolated",
+        "--storage-state={path/to/storage.json}"
+      ]
+    }
+  }
+}
+```
+
+### Configuration file
+
+The Playwright MCP server can be configured using a JSON configuration file. You can specify the configuration file
+using the `--config` command line option:
+
+```bash
+npx @playwright/mcp@latest --config path/to/config.json
+```
+
+<details>
+<summary>Configuration file schema</summary>
+
+```typescript
+{
+  // Browser configuration
+  browser?: {
+    // Browser type to use (chromium, firefox, or webkit)
+    browserName?: 'chromium' | 'firefox' | 'webkit';
+
+    // Keep the browser profile in memory, do not save it to disk.
+    isolated?: boolean;
+
+    // Path to user data directory for browser profile persistence
+    userDataDir?: string;
+
+    // Browser launch options (see Playwright docs)
+    // @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch
+    launchOptions?: {
+      channel?: string;        // Browser channel (e.g. 'chrome')
+      headless?: boolean;      // Run in headless mode
+      executablePath?: string; // Path to browser executable
+      // ... other Playwright launch options
+    };
+
+    // Browser context options
+    // @see https://playwright.dev/docs/api/class-browser#browser-new-context
+    contextOptions?: {
+      viewport?: { width: number, height: number };
+      // ... other Playwright context options
+    };
+
+    // CDP endpoint for connecting to existing browser
+    cdpEndpoint?: string;
+
+    // Remote Playwright server endpoint
+    remoteEndpoint?: string;
+  },
+
+  // Server configuration
+  server?: {
+    port?: number;  // Port to listen on
+    host?: string;  // Host to bind to (default: localhost)
+  },
+
+  // List of enabled capabilities
+  capabilities?: Array<
+    'core' |    // Core browser automation
+    'tabs' |    // Tab management
+    'pdf' |     // PDF generation
+    'history' | // Browser history
+    'wait' |    // Wait utilities
+    'files' |   // File handling
+    'install' | // Browser installation
+    'testing'   // Testing
+  >;
+
+  // Enable vision mode (screenshots instead of accessibility snapshots)
+  vision?: boolean;
+
+  // Directory for output files
+  outputDir?: string;
+
+  // Network configuration
+  network?: {
+    // List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
+    allowedOrigins?: string[];
+
+    // List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
+    blockedOrigins?: string[];
+  };
+ 
+  /**
+   * Do not send image responses to the client.
+   */
+  noImageResponses?: boolean;
+}
+```
+
+</details>
+
+### Standalone MCP server
+
+When running headed browser on system w/o display or from worker processes of the IDEs,
+run the MCP server from environment with the DISPLAY and pass the `--port` flag to enable SSE transport.
+
+```bash
+npx @playwright/mcp@latest --port 8931
+```
+
+And then in MCP client config, set the `url` to the SSE endpoint:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "url": "http://localhost:8931/sse"
+    }
+  }
+}
+```
+
+<details>
+<summary><b>Docker</b></summary>
+
+**NOTE:** The Docker implementation only supports headless chromium at the moment.
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "docker",
+      "args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
+    }
+  }
+}
+```
+
+You can build the Docker image yourself.
+
+```
+docker build -t mcr.microsoft.com/playwright/mcp .
+```
+
+</details>
+
+<details>
+<summary><b>Programmatic usage</b></summary>
+
+```js
+import http from 'http';
+
+import { createConnection } from '@playwright/mcp';
+import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
+
+http.createServer(async (req, res) => {
+  // ...
+
+  // Creates a headless Playwright MCP server with SSE transport
+  const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
+  const transport = new SSEServerTransport('/messages', res);
+  await connection.sever.connect(transport);
+
+  // ...
+});
+```
+
+</details>
+
+### Tools
+
+The tools are available in two modes:
+
+1. **Snapshot Mode** (default): Uses accessibility snapshots for better performance and reliability
+2. **Vision Mode**: Uses screenshots for visual-based interactions
+
+To use Vision Mode, add the `--vision` flag when starting the server:
+
+```js
+{
+  "mcpServers": {
+    "playwright": {
+      "command": "npx",
+      "args": [
+        "@playwright/mcp@latest",
+        "--vision"
+      ]
+    }
+  }
+}
+```
+
+Vision Mode works best with the computer use models that are able to interact with elements using
+X Y coordinate space, based on the provided screenshot.
+
+<!--- Tools generated by update-readme.js -->
+
+<details>
+<summary><b>Interactions</b></summary>
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_snapshot**
+  - Title: Page snapshot
+  - Description: Capture accessibility snapshot of the current page, this is better than screenshot
+  - Parameters: None
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_click**
+  - Title: Click
+  - Description: Perform click on a web page
+  - Parameters:
+    - `element` (string): Human-readable element description used to obtain permission to interact with the element
+    - `ref` (string): Exact target element reference from the page snapshot
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_drag**
+  - Title: Drag mouse
+  - Description: Perform drag and drop between two elements
+  - Parameters:
+    - `startElement` (string): Human-readable source element description used to obtain the permission to interact with the element
+    - `startRef` (string): Exact source element reference from the page snapshot
+    - `endElement` (string): Human-readable target element description used to obtain the permission to interact with the element
+    - `endRef` (string): Exact target element reference from the page snapshot
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_hover**
+  - Title: Hover mouse
+  - Description: Hover over element on page
+  - Parameters:
+    - `element` (string): Human-readable element description used to obtain permission to interact with the element
+    - `ref` (string): Exact target element reference from the page snapshot
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_type**
+  - Title: Type text
+  - Description: Type text into editable element
+  - Parameters:
+    - `element` (string): Human-readable element description used to obtain permission to interact with the element
+    - `ref` (string): Exact target element reference from the page snapshot
+    - `text` (string): Text to type into the element
+    - `submit` (boolean, optional): Whether to submit entered text (press Enter after)
+    - `slowly` (boolean, optional): Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_select_option**
+  - Title: Select option
+  - Description: Select an option in a dropdown
+  - Parameters:
+    - `element` (string): Human-readable element description used to obtain permission to interact with the element
+    - `ref` (string): Exact target element reference from the page snapshot
+    - `values` (array): Array of values to select in the dropdown. This can be a single value or multiple values.
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_press_key**
+  - Title: Press a key
+  - Description: Press a key on the keyboard
+  - Parameters:
+    - `key` (string): Name of the key to press or a character to generate, such as `ArrowLeft` or `a`
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_wait_for**
+  - Title: Wait for
+  - Description: Wait for text to appear or disappear or a specified time to pass
+  - Parameters:
+    - `time` (number, optional): The time to wait in seconds
+    - `text` (string, optional): The text to wait for
+    - `textGone` (string, optional): The text to wait for to disappear
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_file_upload**
+  - Title: Upload files
+  - Description: Upload one or multiple files
+  - Parameters:
+    - `paths` (array): The absolute paths to the files to upload. Can be a single file or multiple files.
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_handle_dialog**
+  - Title: Handle a dialog
+  - Description: Handle a dialog
+  - Parameters:
+    - `accept` (boolean): Whether to accept the dialog.
+    - `promptText` (string, optional): The text of the prompt in case of a prompt dialog.
+  - Read-only: **false**
+
+</details>
+
+<details>
+<summary><b>Navigation</b></summary>
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_navigate**
+  - Title: Navigate to a URL
+  - Description: Navigate to a URL
+  - Parameters:
+    - `url` (string): The URL to navigate to
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_navigate_back**
+  - Title: Go back
+  - Description: Go back to the previous page
+  - Parameters: None
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_navigate_forward**
+  - Title: Go forward
+  - Description: Go forward to the next page
+  - Parameters: None
+  - Read-only: **true**
+
+</details>
+
+<details>
+<summary><b>Resources</b></summary>
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_take_screenshot**
+  - Title: Take a screenshot
+  - Description: Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.
+  - Parameters:
+    - `raw` (boolean, optional): Whether to return without compression (in PNG format). Default is false, which returns a JPEG image.
+    - `filename` (string, optional): File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified.
+    - `element` (string, optional): Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too.
+    - `ref` (string, optional): Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too.
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_pdf_save**
+  - Title: Save as PDF
+  - Description: Save page as PDF
+  - Parameters:
+    - `filename` (string, optional): File name to save the pdf to. Defaults to `page-{timestamp}.pdf` if not specified.
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_network_requests**
+  - Title: List network requests
+  - Description: Returns all network requests since loading the page
+  - Parameters: None
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_console_messages**
+  - Title: Get console messages
+  - Description: Returns all console messages
+  - Parameters: None
+  - Read-only: **true**
+
+</details>
+
+<details>
+<summary><b>Utilities</b></summary>
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_install**
+  - Title: Install the browser specified in the config
+  - Description: Install the browser specified in the config. Call this if you get an error about the browser not being installed.
+  - Parameters: None
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_close**
+  - Title: Close browser
+  - Description: Close the page
+  - Parameters: None
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_resize**
+  - Title: Resize browser window
+  - Description: Resize the browser window
+  - Parameters:
+    - `width` (number): Width of the browser window
+    - `height` (number): Height of the browser window
+  - Read-only: **true**
+
+</details>
+
+<details>
+<summary><b>Tabs</b></summary>
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_tab_list**
+  - Title: List tabs
+  - Description: List browser tabs
+  - Parameters: None
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_tab_new**
+  - Title: Open a new tab
+  - Description: Open a new tab
+  - Parameters:
+    - `url` (string, optional): The URL to navigate to in the new tab. If not provided, the new tab will be blank.
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_tab_select**
+  - Title: Select a tab
+  - Description: Select a tab by index
+  - Parameters:
+    - `index` (number): The index of the tab to select
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_tab_close**
+  - Title: Close a tab
+  - Description: Close a tab
+  - Parameters:
+    - `index` (number, optional): The index of the tab to close. Closes current tab if not provided.
+  - Read-only: **false**
+
+</details>
+
+<details>
+<summary><b>Testing</b></summary>
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_generate_playwright_test**
+  - Title: Generate a Playwright test
+  - Description: Generate a Playwright test for given scenario
+  - Parameters:
+    - `name` (string): The name of the test
+    - `description` (string): The description of the test
+    - `steps` (array): The steps of the test
+  - Read-only: **true**
+
+</details>
+
+<details>
+<summary><b>Vision mode</b></summary>
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_screen_capture**
+  - Title: Take a screenshot
+  - Description: Take a screenshot of the current page
+  - Parameters: None
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_screen_move_mouse**
+  - Title: Move mouse
+  - Description: Move mouse to a given position
+  - Parameters:
+    - `element` (string): Human-readable element description used to obtain permission to interact with the element
+    - `x` (number): X coordinate
+    - `y` (number): Y coordinate
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_screen_click**
+  - Title: Click
+  - Description: Click left mouse button
+  - Parameters:
+    - `element` (string): Human-readable element description used to obtain permission to interact with the element
+    - `x` (number): X coordinate
+    - `y` (number): Y coordinate
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_screen_drag**
+  - Title: Drag mouse
+  - Description: Drag left mouse button
+  - Parameters:
+    - `element` (string): Human-readable element description used to obtain permission to interact with the element
+    - `startX` (number): Start X coordinate
+    - `startY` (number): Start Y coordinate
+    - `endX` (number): End X coordinate
+    - `endY` (number): End Y coordinate
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_screen_type**
+  - Title: Type text
+  - Description: Type text
+  - Parameters:
+    - `text` (string): Text to type into the element
+    - `submit` (boolean, optional): Whether to submit entered text (press Enter after)
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_press_key**
+  - Title: Press a key
+  - Description: Press a key on the keyboard
+  - Parameters:
+    - `key` (string): Name of the key to press or a character to generate, such as `ArrowLeft` or `a`
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_wait_for**
+  - Title: Wait for
+  - Description: Wait for text to appear or disappear or a specified time to pass
+  - Parameters:
+    - `time` (number, optional): The time to wait in seconds
+    - `text` (string, optional): The text to wait for
+    - `textGone` (string, optional): The text to wait for to disappear
+  - Read-only: **true**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_file_upload**
+  - Title: Upload files
+  - Description: Upload one or multiple files
+  - Parameters:
+    - `paths` (array): The absolute paths to the files to upload. Can be a single file or multiple files.
+  - Read-only: **false**
+
+<!-- NOTE: This has been generated via update-readme.js -->
+
+- **browser_handle_dialog**
+  - Title: Handle a dialog
+  - Description: Handle a dialog
+  - Parameters:
+    - `accept` (boolean): Whether to accept the dialog.
+    - `promptText` (string, optional): The text of the prompt in case of a prompt dialog.
+  - Read-only: **false**
+
+</details>
+
+<!--- End of tools generated section -->

+ 38 - 0
mcp-servers/playwright/init.go

@@ -0,0 +1,38 @@
+package playwright
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"playwright",
+			"Microsoft Playwright",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("微软Playwright"),
+			mcpservers.WithTags([]string{"browser"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/microsoft/playwright-mcp",
+			),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server implementation that allows large language models to interact with web pages through structured accessibility snapshots, without using visual models or screenshots.",
+			),
+			mcpservers.WithDescriptionCN(
+				"使大型语言模型能够通过结构化的可访问性快照与网页交互,而无需使用视觉模型或截图。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 219 - 0
mcp-servers/puppeteer/README.cn.md

@@ -0,0 +1,219 @@
+# Puppeteer
+
+> <https://github.com/modelcontextprotocol/servers-archived/tree/main/src/puppeteer>
+
+一个模型上下文协议服务器,使用 Puppeteer 提供浏览器自动化功能。该服务器使 LLM 能够与网页交互、截图并在真实浏览器环境中执行 JavaScript。
+
+> [!CAUTION]
+> 该服务器可以访问本地文件和本地/内部 IP 地址,因为它在您的机器上运行浏览器。使用此 MCP 服务器时请谨慎,确保不会暴露任何敏感数据。
+
+## 组件
+
+### 工具
+
+- **puppeteer_navigate**
+
+  - 在浏览器中导航到任何 URL
+  - 输入参数:
+    - `url`(字符串,必需):要导航到的 URL
+    - `launchOptions`(对象,可选):PuppeteerJS 启动选项。默认为 null。如果更改且不为 null,浏览器将重启。示例:`{ headless: true, args: ['--user-data-dir="C:/Data"'] }`
+    - `allowDangerous`(布尔值,可选):允许降低安全性的危险启动选项。当为 false 时,危险参数如 `--no-sandbox`、`--disable-web-security` 将抛出错误。默认为 false。
+
+- **puppeteer_screenshot**
+
+  - 捕获整个页面或特定元素的截图
+  - 输入参数:
+    - `name`(字符串,必需):截图名称
+    - `selector`(字符串,可选):要截图的元素的 CSS 选择器
+    - `width`(数字,可选,默认:800):截图宽度
+    - `height`(数字,可选,默认:600):截图高度
+    - `encoded`(布尔值,可选):如果为 true,将截图捕获为 base64 编码的数据 URI(作为文本)而不是二进制图像内容。默认为 false。
+
+- **puppeteer_click**
+
+  - 点击页面上的元素
+  - 输入参数:`selector`(字符串):要点击的元素的 CSS 选择器
+
+- **puppeteer_hover**
+
+  - 悬停页面上的元素
+  - 输入参数:`selector`(字符串):要悬停的元素的 CSS 选择器
+
+- **puppeteer_fill**
+
+  - 填写输入字段
+  - 输入参数:
+    - `selector`(字符串):输入字段的 CSS 选择器
+    - `value`(字符串):要填入的值
+
+- **puppeteer_select**
+
+  - 选择带有 SELECT 标签的元素
+  - 输入参数:
+    - `selector`(字符串):要选择的元素的 CSS 选择器
+    - `value`(字符串):要选择的值
+
+- **puppeteer_evaluate**
+  - 在浏览器控制台中执行 JavaScript
+  - 输入参数:`script`(字符串):要执行的 JavaScript 代码
+
+### 资源
+
+服务器提供两种类型的资源访问:
+
+1. **控制台日志**(`console://logs`)
+
+   - 以文本格式显示浏览器控制台输出
+   - 包括来自浏览器的所有控制台消息
+
+2. **截图**(`screenshot://<name>`)
+   - 捕获的截图的 PNG 图像
+   - 通过捕获时指定的截图名称访问
+
+## 主要功能
+
+- 浏览器自动化
+- 控制台日志监控
+- 截图功能
+- JavaScript 执行
+- 基本网页交互(导航、点击、表单填写)
+- 可自定义的 Puppeteer 启动选项
+
+## Puppeteer 服务器配置使用
+
+### 与 Claude Desktop 一起使用
+
+以下是使用 Puppeteer 服务器的 Claude Desktop 配置:
+
+### Docker
+
+**注意** Docker 实现将使用无头 Chromium,而 NPX 版本将打开浏览器窗口。
+
+```json
+{
+  "mcpServers": {
+    "puppeteer": {
+      "command": "docker",
+      "args": [
+        "run",
+        "-i",
+        "--rm",
+        "--init",
+        "-e",
+        "DOCKER_CONTAINER=true",
+        "mcp/puppeteer"
+      ]
+    }
+  }
+}
+```
+
+### NPX
+
+```json
+{
+  "mcpServers": {
+    "puppeteer": {
+      "command": "npx",
+      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
+    }
+  }
+}
+```
+
+### 与 VS Code 一起使用
+
+快速安装,请使用下面的一键安装按钮...
+
+[![在 VS Code 中使用 NPX 安装](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-puppeteer%22%5D%7D) [![在 VS Code Insiders 中使用 NPX 安装](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-puppeteer%22%5D%7D&quality=insiders)
+
+[![在 VS Code 中使用 Docker 安装](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--init%22%2C%22-e%22%2C%22DOCKER_CONTAINER%3Dtrue%22%2C%22mcp%2Fpuppeteer%22%5D%7D) [![在 VS Code Insiders 中使用 Docker 安装](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--init%22%2C%22-e%22%2C%22DOCKER_CONTAINER%3Dtrue%22%2C%22mcp%2Fpuppeteer%22%5D%7D&quality=insiders)
+
+手动安装,请将以下 JSON 块添加到 VS Code 的用户设置(JSON)文件中。您可以按 `Ctrl + Shift + P` 并输入 `Preferences: Open User Settings (JSON)` 来完成此操作。
+
+可选地,您可以将其添加到工作区中名为 `.vscode/mcp.json` 的文件中。这将允许您与他人共享配置。
+
+> 注意,在 `.vscode/mcp.json` 文件中不需要 `mcp` 键。
+
+NPX 安装(打开浏览器窗口):
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "puppeteer": {
+        "command": "npx",
+        "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
+      }
+    }
+  }
+}
+```
+
+Docker 安装(使用无头 Chromium):
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "puppeteer": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "--rm",
+          "--init",
+          "-e",
+          "DOCKER_CONTAINER=true",
+          "mcp/puppeteer"
+        ]
+      }
+    }
+  }
+}
+```
+
+### 启动选项
+
+您可以通过两种方式自定义 Puppeteer 的浏览器行为:
+
+1. **环境变量**:在 MCP 配置的 `env` 参数中设置带有 JSON 编码字符串的 `PUPPETEER_LAUNCH_OPTIONS`:
+
+   ```json
+   {
+     "mcpServers": {
+       "mcp-puppeteer": {
+         "command": "npx",
+         "args": ["-y", "@modelcontextprotocol/server-puppeteer"],
+         "env": {
+           "PUPPETEER_LAUNCH_OPTIONS": "{ \"headless\": false, \"executablePath\": \"C:/Program Files/Google/Chrome/Application/chrome.exe\", \"args\": [] }",
+           "ALLOW_DANGEROUS": "true"
+         }
+       }
+     }
+   }
+   ```
+
+2. **工具调用参数**:将 `launchOptions` 和 `allowDangerous` 参数传递给 `puppeteer_navigate` 工具:
+
+   ```json
+   {
+     "url": "https://example.com",
+     "launchOptions": {
+       "headless": false,
+       "defaultViewport": { "width": 1280, "height": 720 }
+     }
+   }
+   ```
+
+## 构建
+
+Docker 构建:
+
+```bash
+docker build -t mcp/puppeteer -f src/puppeteer/Dockerfile .
+```
+
+## 许可证
+
+此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。

+ 219 - 0
mcp-servers/puppeteer/README.md

@@ -0,0 +1,219 @@
+# Puppeteer
+
+> <https://github.com/modelcontextprotocol/servers-archived/tree/main/src/puppeteer>
+
+A Model Context Protocol server that provides browser automation capabilities using Puppeteer. This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.
+
+> [!CAUTION]
+> This server can access local files and local/internal IP addresses since it runs a browser on your machine. Exercise caution when using this MCP server to ensure this does not expose any sensitive data.
+
+## Components
+
+### Tools
+
+- **puppeteer_navigate**
+
+  - Navigate to any URL in the browser
+  - Inputs:
+    - `url` (string, required): URL to navigate to
+    - `launchOptions` (object, optional): PuppeteerJS LaunchOptions. Default null. If changed and not null, browser restarts. Example: `{ headless: true, args: ['--user-data-dir="C:/Data"'] }`
+    - `allowDangerous` (boolean, optional): Allow dangerous LaunchOptions that reduce security. When false, dangerous args like `--no-sandbox`, `--disable-web-security` will throw errors. Default false.
+
+- **puppeteer_screenshot**
+
+  - Capture screenshots of the entire page or specific elements
+  - Inputs:
+    - `name` (string, required): Name for the screenshot
+    - `selector` (string, optional): CSS selector for element to screenshot
+    - `width` (number, optional, default: 800): Screenshot width
+    - `height` (number, optional, default: 600): Screenshot height
+    - `encoded` (boolean, optional): If true, capture the screenshot as a base64-encoded data URI (as text) instead of binary image content. Default false.
+
+- **puppeteer_click**
+
+  - Click elements on the page
+  - Input: `selector` (string): CSS selector for element to click
+
+- **puppeteer_hover**
+
+  - Hover elements on the page
+  - Input: `selector` (string): CSS selector for element to hover
+
+- **puppeteer_fill**
+
+  - Fill out input fields
+  - Inputs:
+    - `selector` (string): CSS selector for input field
+    - `value` (string): Value to fill
+
+- **puppeteer_select**
+
+  - Select an element with SELECT tag
+  - Inputs:
+    - `selector` (string): CSS selector for element to select
+    - `value` (string): Value to select
+
+- **puppeteer_evaluate**
+  - Execute JavaScript in the browser console
+  - Input: `script` (string): JavaScript code to execute
+
+### Resources
+
+The server provides access to two types of resources:
+
+1. **Console Logs** (`console://logs`)
+
+   - Browser console output in text format
+   - Includes all console messages from the browser
+
+2. **Screenshots** (`screenshot://<name>`)
+   - PNG images of captured screenshots
+   - Accessible via the screenshot name specified during capture
+
+## Key Features
+
+- Browser automation
+- Console log monitoring
+- Screenshot capabilities
+- JavaScript execution
+- Basic web interaction (navigation, clicking, form filling)
+- Customizable Puppeteer launch options
+
+## Configuration to use Puppeteer Server
+
+### Usage with Claude Desktop
+
+Here's the Claude Desktop configuration to use the Puppeter server:
+
+### Docker
+
+**NOTE** The docker implementation will use headless chromium, where as the NPX version will open a browser window.
+
+```json
+{
+  "mcpServers": {
+    "puppeteer": {
+      "command": "docker",
+      "args": [
+        "run",
+        "-i",
+        "--rm",
+        "--init",
+        "-e",
+        "DOCKER_CONTAINER=true",
+        "mcp/puppeteer"
+      ]
+    }
+  }
+}
+```
+
+### NPX
+
+```json
+{
+  "mcpServers": {
+    "puppeteer": {
+      "command": "npx",
+      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
+    }
+  }
+}
+```
+
+### Usage with VS Code
+
+For quick installation, use one of the one-click install buttons below...
+
+[![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-puppeteer%22%5D%7D) [![Install with NPX in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-NPM-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-puppeteer%22%5D%7D&quality=insiders)
+
+[![Install with Docker in VS Code](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--init%22%2C%22-e%22%2C%22DOCKER_CONTAINER%3Dtrue%22%2C%22mcp%2Fpuppeteer%22%5D%7D) [![Install with Docker in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=puppeteer&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22--init%22%2C%22-e%22%2C%22DOCKER_CONTAINER%3Dtrue%22%2C%22mcp%2Fpuppeteer%22%5D%7D&quality=insiders)
+
+For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing `Ctrl + Shift + P` and typing `Preferences: Open User Settings (JSON)`.
+
+Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace. This will allow you to share the configuration with others.
+
+> Note that the `mcp` key is not needed in the `.vscode/mcp.json` file.
+
+For NPX installation (opens a browser window):
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "puppeteer": {
+        "command": "npx",
+        "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
+      }
+    }
+  }
+}
+```
+
+For Docker installation (uses headless chromium):
+
+```json
+{
+  "mcp": {
+    "servers": {
+      "puppeteer": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "--rm",
+          "--init",
+          "-e",
+          "DOCKER_CONTAINER=true",
+          "mcp/puppeteer"
+        ]
+      }
+    }
+  }
+}
+```
+
+### Launch Options
+
+You can customize Puppeteer's browser behavior in two ways:
+
+1. **Environment Variable**: Set `PUPPETEER_LAUNCH_OPTIONS` with a JSON-encoded string in the MCP configuration's `env` parameter:
+
+   ```json
+   {
+     "mcpServers": {
+       "mcp-puppeteer": {
+         "command": "npx",
+         "args": ["-y", "@modelcontextprotocol/server-puppeteer"],
+         "env": {
+           "PUPPETEER_LAUNCH_OPTIONS": "{ \"headless\": false, \"executablePath\": \"C:/Program Files/Google/Chrome/Application/chrome.exe\", \"args\": [] }",
+           "ALLOW_DANGEROUS": "true"
+         }
+       }
+     }
+   }
+   ```
+
+2. **Tool Call Arguments**: Pass `launchOptions` and `allowDangerous` parameters to the `puppeteer_navigate` tool:
+
+   ```json
+   {
+     "url": "https://example.com",
+     "launchOptions": {
+       "headless": false,
+       "defaultViewport": { "width": 1280, "height": 720 }
+     }
+   }
+   ```
+
+## Build
+
+Docker build:
+
+```bash
+docker build -t mcp/puppeteer -f src/puppeteer/Dockerfile .
+```
+
+## License
+
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

+ 38 - 0
mcp-servers/puppeteer/init.go

@@ -0,0 +1,38 @@
+package puppeteer
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"puppeteer",
+			"Puppeteer",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Puppeteer"),
+			mcpservers.WithTags([]string{"browser"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/modelcontextprotocol/servers-archived/tree/main/src/puppeteer",
+			),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server that provides browser automation capabilities using Puppeteer. This server allows LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一个使用Puppeteer提供浏览器自动化功能的Model Context Protocol服务器。此服务器使LLM能够与网页交互、截屏以及在真实的浏览器环境中执行JavaScript。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 185 - 0
mcp-servers/query_table/README.cn.md

@@ -0,0 +1,185 @@
+# mcp_query_table
+
+1. 基于`playwright`实现的财经网页表格爬虫,支持`Model Context Protocol (MCP)`。目前可查询来源为
+
+    - [同花顺问财](http://iwencai.com/)
+    - [通达信问小达](https://wenda.tdx.com.cn/)
+    - [东方财富条件选股](https://xuangu.eastmoney.com/)
+
+   实盘时,如果某网站宕机或改版,可以立即切换到其他网站。(注意:不同网站的表格结构不同,需要提前做适配)
+
+2. 基于`playwright`实现的大语言模型调用爬虫。目前可用来源为
+    - [纳米搜索](https://www.n.cn/)
+    - [腾讯元宝](https://yuanbao.tencent.com/)
+    - [百度AI搜索](https://chat.baidu.com/)
+
+   `RooCode`提供了`Human Reply`功能。但发现`纳米搜索`网页版复制时格式破坏,所以研发了此功能
+
+## 安装
+
+```commandline
+pip install -i https://pypi.org/simple --upgrade mcp_query_table
+pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade mcp_query_table
+```
+
+## 使用
+
+```python
+import asyncio
+
+from mcp_query_table import *
+
+
+async def main() -> None:
+    async with BrowserManager(endpoint="http://127.0.0.1:9222", executable_path=None, devtools=True) as bm:
+        # 问财需要保证浏览器宽度>768,防止界面变成适应手机
+        page = await bm.get_page()
+        df = await query(page, '收益最好的200只ETF', query_type=QueryType.ETF, max_page=1, site=Site.THS)
+        print(df.to_markdown())
+        df = await query(page, '年初至今收益率前50', query_type=QueryType.Fund, max_page=1, site=Site.TDX)
+        print(df.to_csv())
+        df = await query(page, '流通市值前10的行业板块', query_type=QueryType.Index, max_page=1, site=Site.TDX)
+        print(df.to_csv())
+        # TODO 东财翻页要提前登录
+        df = await query(page, '今日涨幅前5的概念板块;', query_type=QueryType.Board, max_page=3, site=Site.EastMoney)
+        print(df)
+
+        output = await chat(page, "1+2等于多少?", provider=Provider.YuanBao)
+        print(output)
+        output = await chat(page, "3+4等于多少?", provider=Provider.YuanBao, create=True)
+        print(output)
+
+        print('done')
+        bm.release_page(page)
+        await page.wait_for_timeout(2000)
+
+
+if __name__ == '__main__':
+    asyncio.run(main())
+
+```
+
+## 注意事项
+
+1. 浏览器最好是`Chrome`。如一定要使用`Edge`,除了关闭`Edge`所有窗口外,还要在任务管理器关闭`Microsoft Edge`
+   的所有进程,即`taskkill /f /im msedge.exe`
+2. 浏览器要保证窗口宽度,防止部分网站自动适配成手机版,导致表格查询失败
+3. 如有网站账号,请提前登录。此工具无自动登录功能
+4. 不同网站的表格结构不同,同条件返回股票数量也不同。需要查询后做适配
+
+## 工作原理
+
+不同于`requests`,`playwright`是基于浏览器的,模拟用户在浏览器中的操作。
+
+1. 不需要解决登录问题
+2. 不需要解决请求构造、响应解析
+3. 可以直接获取表格数据,所见即所得
+4. 运行速度慢于`requests`,但开发效率高
+
+数据的获取有:
+
+1. 直接解析HTML表格
+    1. 数字文本化了,不利于后期研究
+    2. 适用性最强
+2. 截获请求,获取返回的`json`数据
+    1. 类似于`requests`,需要做响应解析
+    2. 灵活性差点,网站改版后,需要重新做适配
+
+此项目采用的是模拟点击浏览器来发送请求,使用截获响应并解析的方法来获取数据。
+
+后期会根据不同的网站改版情况,使用更适合的方法。
+
+## 无头模式
+
+无头模式运行速度更快,但部分网站需要提前登录,所以,无头模式一定要指定`user_data_dir`,否则会出现需要登录的情况。
+
+- `endpoint=None`时,`headless=True`可无头启动新浏览器实例。指定`executable_path`和`user_data_dir`,才能确保无头模式下正常运行。
+- `endpoint`以`http://`开头,连接`CDP`模式启动的有头浏览器,参数必有`--remote-debugging-port`。`executable_path`为本地浏览器路径。
+- `endpoint`以`ws://`开头,连接远程`Playwright Server`。也是无头模式,但无法指定`user_data_dir`,所以使用受限
+  - 参考:<https://playwright.dev/python/docs/docker#running-the-playwright-server>
+
+## MCP支持
+
+确保可以在控制台中执行`python -m mcp_query_table -h`。如果不能,可能要先`pip install mcp_query_table`
+
+在`Cline`中可以配置如下。其中`command`是`python`的绝对路径,`timeout`是超时时间,单位为秒。 在各`AI`
+平台中由于返回时间常需1分钟以上,所以需要设置大的超时时间。
+
+### STDIO方式
+
+```json
+{
+  "mcpServers": {
+    "mcp_query_table": {
+      "timeout": 300,
+      "command": "D:\\Users\\Kan\\miniconda3\\envs\\py312\\python.exe",
+      "args": [
+        "-m",
+        "mcp_query_table",
+        "--format",
+        "markdown",
+        "--endpoint",
+        "http://127.0.0.1:9222",
+        "--executable_path",
+        "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
+      ]
+    }
+  }
+}
+```
+
+### SSE方式
+
+先在控制台中执行如下命令,启动`MCP`服务
+
+```commandline
+python -m mcp_query_table --format markdown --transport sse --port 8000 --endpoint http://127.0.0.1:9222
+```
+
+然后就可以连接到`MCP`服务了
+
+```json
+{
+  "mcpServers": {
+    "mcp_query_table": {
+      "timeout": 300,
+      "url": "http://127.0.0.1:8000/sse"
+    }
+  }
+}
+```
+
+## 使用`MCP Inspector`进行调试
+
+```commandline
+npx @modelcontextprotocol/inspector python -m mcp_query_table --format markdown --endpoint http://127.0.0.1:9222
+```
+
+打开浏览器并翻页是一个比较耗时的操作,会导致`MCP Inspector`页面超时,可以`http://localhost:5173/?timeout=300000`
+表示超时时间为300秒
+
+第一次尝试编写`MCP`项目,可能会有各种问题,欢迎大家交流。
+
+## `MCP`使用技巧
+
+1. 2024年涨幅最大的100只股票按2024年12月31日总市值排名。三个网站的结果都不一样
+    - 同花顺:显示了2201只股票。前5个是工商银行、农业银行、中国移动、中国石油、建设银行
+    - 通达信:显示了100只股票,前5个是寒武纪、正丹股份,汇金科技、万丰奥威、艾融软件
+    - 东方财富:显示了100只股票,前5个是海光信息、寒武纪、光启技术、润泽科技、新易盛
+
+2. 大语言模型对问题拆分能力弱,所以要能合理的提问,保证查询条件不会被改动。以下推荐第2、3种
+    - 2024年涨幅最大的100只股票按2024年12月31日总市值排名
+      > 大语言模型非常有可能拆分这句,导致一步查询被分成了多步查询
+    - 向东方财富查询“2024年涨幅最大的100只股票按2024年12月31日总市值排名”
+      > 用引号括起来,避免被拆分
+    - 向东方财富板块查询 “去年涨的最差的行业板块”,再查询此板块中去年涨的最好的5只股票
+      > 分成两步查询,先查询板块,再查询股票。但最好不要全自动,因为第一步的结果它不理解“今日涨幅”和“区间涨幅”,需要交互修正
+
+## 支持`Streamlit`
+
+实现在同一页面中查询金融数据,并手工输入到`AI`中进行深度分析。参考`streamlit`目录下的`README.md`文件。
+
+## 参考
+
+- [Selenium webdriver无法附加到edge实例,edge的--remote-debugging-port选项无效](https://blog.csdn.net/qq_30576521/article/details/142370538)
+- <https://github.com/AtuboDad/playwright_stealth/issues/31>

+ 182 - 0
mcp-servers/query_table/README.md

@@ -0,0 +1,182 @@
+# mcp_query_table
+
+1. A financial web table scraper based on `playwright` that supports `Model Context Protocol (MCP)`. Currently supports the following sources:
+
+    - [Tonghuashun iWencai](http://iwencai.com/)
+    - [Tongdaxin Ask Xiaoda](https://wenda.tdx.com.cn/)
+    - [East Money Stock Screener](https://xuangu.eastmoney.com/)
+
+   In live trading, if a website goes down or undergoes redesign, you can immediately switch to other websites. (Note: Different websites have different table structures and require adaptation in advance)
+
+2. A large language model calling scraper based on `playwright`. Currently supports the following sources:
+    - [Nano Search](https://www.n.cn/)
+    - [Tencent Yuanbao](https://yuanbao.tencent.com/)
+    - [Baidu AI Search](https://chat.baidu.com/)
+
+   `RooCode` provides `Human Reply` functionality. However, we found that the web version of `Nano Search` breaks formatting when copying, so we developed this feature.
+
+## Installation
+
+```commandline
+pip install -i https://pypi.org/simple --upgrade mcp_query_table
+pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade mcp_query_table
+```
+
+## Usage
+
+```python
+import asyncio
+
+from mcp_query_table import *
+
+
+async def main() -> None:
+    async with BrowserManager(endpoint="http://127.0.0.1:9222", executable_path=None, devtools=True) as bm:
+        # iWencai requires browser width > 768 to prevent mobile interface adaptation
+        page = await bm.get_page()
+        df = await query(page, 'Top 200 ETFs with best returns', query_type=QueryType.ETF, max_page=1, site=Site.THS)
+        print(df.to_markdown())
+        df = await query(page, 'Top 50 funds by year-to-date returns', query_type=QueryType.Fund, max_page=1, site=Site.TDX)
+        print(df.to_csv())
+        df = await query(page, 'Top 10 industry sectors by market cap', query_type=QueryType.Index, max_page=1, site=Site.TDX)
+        print(df.to_csv())
+        # TODO East Money pagination requires login in advance
+        df = await query(page, 'Top 5 concept sectors by today\'s gains;', query_type=QueryType.Board, max_page=3, site=Site.EastMoney)
+        print(df)
+
+        output = await chat(page, "What does 1+2 equal?", provider=Provider.YuanBao)
+        print(output)
+        output = await chat(page, "What does 3+4 equal?", provider=Provider.YuanBao, create=True)
+        print(output)
+
+        print('done')
+        bm.release_page(page)
+        await page.wait_for_timeout(2000)
+
+
+if __name__ == '__main__':
+    asyncio.run(main())
+
+```
+
+## Important Notes
+
+1. The browser should preferably be `Chrome`. If you must use `Edge`, besides closing all `Edge` windows, you also need to terminate all `Microsoft Edge` processes in Task Manager, i.e., `taskkill /f /im msedge.exe`
+2. The browser should maintain sufficient window width to prevent some websites from automatically adapting to mobile version, which could cause table query failures
+3. If you have website accounts, please log in in advance. This tool does not have automatic login functionality
+4. Different websites have different table structures, and the number of stocks returned under the same conditions also differs. Adaptation is needed after querying
+
+## How It Works
+
+Unlike `requests`, `playwright` is browser-based and simulates user operations in the browser.
+
+1. No need to solve login issues
+2. No need to solve request construction and response parsing
+3. Can directly obtain table data - what you see is what you get
+4. Runs slower than `requests`, but has higher development efficiency
+
+Data acquisition methods include:
+
+1. Direct HTML table parsing
+    1. Numbers are converted to text, not conducive to later research
+    2. Strongest applicability
+2. Intercepting requests to get returned `json` data
+    1. Similar to `requests`, requires response parsing
+    2. Less flexible, needs re-adaptation after website redesigns
+
+This project uses simulated browser clicks to send requests and intercepts responses for data parsing.
+
+Future adaptations will use more suitable methods based on different website redesign situations.
+
+## Headless Mode
+
+Headless mode runs faster, but some websites require login in advance, so headless mode must specify `user_data_dir`, otherwise login issues may occur.
+
+- When `endpoint=None`, `headless=True` can start a new browser instance headlessly. Specify `executable_path` and `user_data_dir` to ensure normal operation in headless mode.
+- When `endpoint` starts with `http://`, it connects to a headed browser started in `CDP` mode, with required parameter `--remote-debugging-port`. `executable_path` is the local browser path.
+- When `endpoint` starts with `ws://`, it connects to a remote `Playwright Server`. This is also headless mode, but cannot specify `user_data_dir`, so usage is limited
+  - Reference: <https://playwright.dev/python/docs/docker#running-the-playwright-server>
+
+## MCP Support
+
+Ensure you can execute `python -m mcp_query_table -h` in the console. If not, you may need to `pip install mcp_query_table` first.
+
+In `Cline`, you can configure as follows. Where `command` is the absolute path to `python`, and `timeout` is the timeout in seconds. Since AI platforms often require over 1 minute for responses, a large timeout value needs to be set.
+
+### STDIO Method
+
+```json
+{
+  "mcpServers": {
+    "mcp_query_table": {
+      "timeout": 300,
+      "command": "D:\\Users\\Kan\\miniconda3\\envs\\py312\\python.exe",
+      "args": [
+        "-m",
+        "mcp_query_table",
+        "--format",
+        "markdown",
+        "--endpoint",
+        "http://127.0.0.1:9222",
+        "--executable_path",
+        "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
+      ]
+    }
+  }
+}
+```
+
+### SSE Method
+
+First execute the following command in the console to start the `MCP` service:
+
+```commandline
+python -m mcp_query_table --format markdown --transport sse --port 8000 --endpoint http://127.0.0.1:9222
+```
+
+Then you can connect to the `MCP` service:
+
+```json
+{
+  "mcpServers": {
+    "mcp_query_table": {
+      "timeout": 300,
+      "url": "http://127.0.0.1:8000/sse"
+    }
+  }
+}
+```
+
+## Debugging with `MCP Inspector`
+
+```commandline
+npx @modelcontextprotocol/inspector python -m mcp_query_table --format markdown --endpoint http://127.0.0.1:9222
+```
+
+Opening browsers and pagination is a time-consuming operation that may cause `MCP Inspector` page timeouts. You can use `http://localhost:5173/?timeout=300000` to set a timeout of 300 seconds.
+
+This is my first attempt at writing an `MCP` project, so there may be various issues. Welcome everyone to communicate and exchange ideas.
+
+## `MCP` Usage Tips
+
+1. Top 100 stocks with highest gains in 2024 ranked by total market cap on December 31, 2024. Results differ across the three websites:
+    - Tonghuashun: Shows 2201 stocks. Top 5 are ICBC, Agricultural Bank, China Mobile, PetroChina, CCB
+    - Tongdaxin: Shows 100 stocks. Top 5 are Cambricon, Zhengdan, Huijin Tech, Wanfeng Auto, Airong Software
+    - East Money: Shows 100 stocks. Top 5 are Hygon, Cambricon, Kuang-Chi, Runze Tech, Innolight
+
+2. Large language models have weak question decomposition abilities, so questions should be asked reasonably to ensure query conditions aren't modified. Methods 2 and 3 below are recommended:
+    - Top 100 stocks with highest gains in 2024 ranked by total market cap on December 31, 2024
+      > LLMs may likely split this sentence, causing a single query to become multiple queries
+    - Query East Money for "Top 100 stocks with highest gains in 2024 ranked by total market cap on December 31, 2024"
+      > Use quotes to avoid splitting
+    - Query East Money sectors for "worst performing industry sectors last year", then query the top 5 best performing stocks in that sector last year
+      > Split into two queries: first query sectors, then stocks. But it's best not to be fully automatic, as it doesn't understand the difference between "today's gains" and "period gains" from the first step results, requiring interactive correction
+
+## Streamlit Support
+
+Implements querying financial data on the same page and manually inputting into AI for deep analysis. Refer to the `README.md` file in the `streamlit` directory.
+
+## References
+
+- [Selenium webdriver cannot attach to edge instance, edge's --remote-debugging-port option is ineffective](https://blog.csdn.net/qq_30576521/article/details/142370538)
+- <https://github.com/AtuboDad/playwright_stealth/issues/31>

+ 38 - 0
mcp-servers/query_table/init.go

@@ -0,0 +1,38 @@
+package querytable
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"query-table",
+			"Stock Data Query",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("股票数据查询"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/wukan1986/mcp_query_table",
+			),
+			mcpservers.WithTags([]string{"finance"}),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server that allows LLMs to query financial data from various websites using natural language.",
+			),
+			mcpservers.WithDescriptionCN(
+				"基于playwright实现的财经网页表格爬虫,支持Model Context Protocol (MCP),可查询同花顺问财、通达信问小达、东方财富条件选股等。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 434 - 0
mcp-servers/redbook-search-comment/README.cn.md

@@ -0,0 +1,434 @@
+# 小红书自动搜索评论工具(MCP Server 2.0)
+
+<div align="right">
+
+[English](README_EN.md) | 中文
+
+</div>
+
+> 本项目基于 [JonaFly/RednoteMCP](https://github.com/JonaFly/RednoteMCP.git) 并结合多次实战经验,进行全面优化和功能扩展(by windsurf)。在此向原作者的贡献表示由衷的感谢!
+
+这是一款基于 Playwright 开发的小红书自动搜索和评论工具,作为 MCP Server,可通过特定配置接入 MCP Client(如Claude for Desktop),帮助用户自动完成登录小红书、搜索关键词、获取笔记内容及发布AI生成评论等操作。
+
+## 主要特点与优势
+
+- **深度集成AI能力**:利用MCP客户端(如Claude)的大模型能力,生成更自然、更相关的评论内容
+- **模块化设计**:将功能分为笔记分析、评论生成和评论发布三个独立模块,提高代码可维护性
+- **强大的内容获取能力**:集成多种获取笔记内容的方法,确保能完整获取各类笔记的标题、作者和正文内容
+- **持久化登录**:使用持久化浏览器上下文,首次登录后无需重复登录
+- **两步式评论流程**:先获取笔记分析结果,然后由MCP客户端生成并发布评论
+
+## 2.0版本主要优化
+
+- **内容获取增强**:重构了笔记内容获取模块,增加页面加载等待时间和滚动操作,实现四种不同的内容获取方法
+- **AI评论生成**:重构评论功能,将笔记分析结果返回给MCP客户端,由客户端的AI能力生成更自然、更相关的评论
+- **功能模块化**:将功能分为笔记分析、评论生成和评论发布三个独立模块,提高代码可维护性
+- **搜索结果优化**:解决了搜索笔记时标题不显示的问题,提供更完整的搜索结果
+- **错误处理增强**:添加更详细的错误处理和调试信息输出
+
+## 一、核心功能
+
+### 1. 用户认证与登录
+
+- **持久化登录**:支持手动扫码登录,首次登录后保存状态,后续使用无需重复扫码
+- **登录状态管理**:自动检测登录状态,并在需要时提示用户登录
+
+### 2. 内容发现与获取
+
+- **智能关键词搜索**:支持多关键词搜索,可指定返回结果数量,并提供完整的笔记信息
+- **多维度内容获取**:集成四种不同的获取方法,确保能准确获取笔记的标题、作者、发布时间和正文内容
+- **评论数据获取**:支持获取笔记的评论内容,包括评论者、评论文本和时间信息
+
+### 3. 内容分析与生成
+
+- **笔记内容分析**:自动分析笔记内容,提取关键信息并识别笔记所属领域
+- **AI评论生成**:利用MCP客户端(如Claude)的AI能力,基于笔记内容生成自然、相关的评论
+- **多类型评论支持**:支持四种不同类型的评论生成:
+  - **引流型**:引导用户关注或私聊
+  - **点赞型**:简单互动获取好感
+  - **咨询型**:以问题形式增加互动
+  - **专业型**:展示专业知识建立权威
+
+### 4. 数据返回与反馈
+
+- **结构化数据返回**:将笔记分析结果以JSON格式返回给MCP客户端,便于AI生成评论
+- **评论发布反馈**:提供评论发布结果的实时反馈
+
+## 二、安装步骤
+
+1. **Python 环境准备**:确保系统已安装 Python 3.8 或更高版本。若未安装,可从 Python 官方网站下载并安装。
+
+2. **项目获取**:将本项目克隆或下载到本地。
+
+3. **创建虚拟环境**:在项目目录下创建并激活虚拟环境(推荐):
+
+   ```bash
+   # 创建虚拟环境
+   python3 -m venv venv
+   
+   # 激活虚拟环境
+   # Windows
+   venv\Scripts\activate
+   # macOS/Linux
+   source venv/bin/activate
+   ```
+
+4. **安装依赖**:在激活的虚拟环境中安装所需依赖:
+
+   ```bash
+   pip install -r requirements.txt
+   pip install fastmcp
+   ```
+
+5. **安装浏览器**:安装Playwright所需的浏览器:
+
+   ```bash
+   playwright install
+   ```
+
+## 三、MCP Server 配置
+
+在 MCP Client(如Claude for Desktop)的配置文件中添加以下内容,将本工具配置为 MCP Server:
+
+### Mac 配置示例
+
+```json
+{
+    "mcpServers": {
+        "xiaohongshu MCP": {
+            "command": "/绝对路径/到/venv/bin/python3",
+            "args": [
+                "/绝对路径/到/xiaohongshu_mcp.py",
+                "--stdio"
+            ]
+        }
+    }
+}
+```
+
+### Windows 配置示例
+
+```json
+{
+    "mcpServers": {
+        "xiaohongshu MCP": {
+            "command": "C:\\Users\\username\\Desktop\\MCP\\Redbook-Search-Comment-MCP2.0\\venv\\Scripts\\python.exe",
+            "args": [
+                "C:\\Users\\username\\Desktop\\MCP\\Redbook-Search-Comment-MCP2.0\\xiaohongshu_mcp.py",
+                "--stdio"
+            ]
+        }
+    }
+}
+```
+
+> **重要提示**:
+>
+> - 请使用虚拟环境中Python解释器的**完整绝对路径**
+> - Mac示例:`/Users/username/Desktop/RedBook-Search-Comment-MCP/venv/bin/python3`
+> - Windows示例:`C:\Users\username\Desktop\MCP\Redbook-Search-Comment-MCP2.0\venv\Scripts\python.exe`
+> - 同样,xiaohongshu_mcp.py也需要使用**完整绝对路径**
+> - Windows路径中的反斜杠在JSON中需要双重转义(使用 `\`)
+
+### Python 命令区分(python 与 python3)
+
+不同系统环境中,Python 命令可能有所不同,这取决于您的系统配置。以下是如何确定您应该使用哪个命令:
+
+1. **确定您的 Python 命令**:
+   - 在终端中运行:`python --version` 和 `python3 --version`
+   - 查看哪个命令返回 Python 3.x 版本(本项目需要 Python 3.8+)
+
+2. **在虚拟环境中确认**:
+   - 激活虚拟环境后,运行 `which python` 或 `where python`(Windows)
+   - 这将显示 Python 解释器的完整路径
+
+3. **配置中使用正确的命令**:
+   - Mac:通常为 `python3` 或虚拟环境中的 `python`
+   - Windows:通常为 `python` 或 `python.exe`
+
+在配置文件中,始终使用虚拟环境中 Python 解释器的**完整绝对路径**,而不是命令名称。
+
+## 四、使用方法
+
+### (一)启动服务器
+
+1. **直接运行**:在项目目录下,激活虚拟环境后执行:
+
+   ```bash
+   python3 xiaohongshu_mcp.py
+   ```
+
+2. **通过 MCP Client 启动**:配置好MCP Client后,按照客户端的操作流程进行启动和连接。
+
+### (二)主要功能操作
+
+在MCP Client(如Claude for Desktop)中连接到服务器后,可以使用以下功能:
+
+### 1. 登录小红书
+
+**工具函数**:
+
+```
+mcp0_login()
+```
+
+**在MCP客户端中的使用方式**:
+直接发送以下文本:
+
+```
+帮我登录小红书账号
+```
+
+或:
+
+```
+请登录小红书
+```
+
+**功能说明**:首次使用时会打开浏览器窗口,等待用户手动扫码登录。登录成功后,工具会保存登录状态。
+
+### 2. 搜索笔记
+
+**工具函数**:
+
+```
+mcp0_search_notes(keywords="关键词", limit=5)
+```
+
+**在MCP客户端中的使用方式**:
+发送包含关键词的搜索请求:
+
+```
+帮我搜索小红书笔记,关键词为:美食
+```
+
+指定返回数量:
+
+```
+帮我搜索小红书笔记,关键词为旅游,返回10条结果
+```
+
+**功能说明**:根据关键词搜索小红书笔记,并返回指定数量的结果。默认返回5条结果。
+
+### 3. 获取笔记内容
+
+**工具函数**:
+
+```
+mcp0_get_note_content(url="笔记URL")
+```
+
+**在MCP客户端中的使用方式**:
+发送包含笔记URL的请求:
+
+```
+帮我获取这个笔记的内容:https://www.xiaohongshu.com/search_result/xxxx
+```
+
+或:
+
+```
+请查看这个小红书笔记的内容:https://www.xiaohongshu.com/search_result/xxxx
+```
+
+**功能说明**:获取指定笔记URL的详细内容,包括标题、作者、发布时间和正文内容。
+
+### 4. 获取笔记评论
+
+**工具函数**:
+
+```
+mcp0_get_note_comments(url="笔记URL")
+```
+
+**在MCP客户端中的使用方式**:
+发送包含笔记URL的评论请求:
+
+```
+帮我获取这个笔记的评论:https://www.xiaohongshu.com/search_result/xxxx
+```
+
+或:
+
+```
+请查看这个小红书笔记的评论区:https://www.xiaohongshu.com/search_result/xxxx
+```
+
+**功能说明**:获取指定笔记URL的评论信息,包括评论者、评论内容和评论时间。
+
+### 5. 发布智能评论
+
+**工具函数**:
+
+```
+mcp0_post_smart_comment(url="笔记URL", comment_type="评论类型")
+```
+
+**在MCP客户端中的使用方式**:
+发送包含笔记URL和评论类型的请求:
+
+```
+帮我为这个笔记写一条[类型]评论:https://www.xiaohongshu.com/explore/xxxx
+```
+
+**功能说明**:获取笔记分析结果,并返回给MCP客户端,由客户端生成评论并调用post_comment发布。
+
+### 6. 发布评论
+
+**工具函数**:
+
+```
+mcp0_post_comment(url="笔记URL", comment="评论内容")
+```
+
+**在MCP客户端中的使用方式**:
+发送包含笔记URL和评论内容的请求:
+
+```
+帮我发布这条评论到笔记:https://www.xiaohongshu.com/explore/xxxx
+评论内容:[评论内容]
+```
+
+**功能说明**:将指定的评论内容发布到笔记页面。
+
+## 四、使用指南
+
+### 0. 工作原理
+
+本工具采用两步式流程实现智能评论功能:
+
+1. **笔记分析**:调用`post_smart_comment`工具获取笔记信息(标题、作者、内容等)
+
+2. **评论生成与发布**:
+   - MCP客户端(如Claude)基于笔记分析结果生成评论
+   - 调用`post_comment`工具发布评论
+
+这种设计充分利用了MCP客户端的AI能力,实现了更自然、相关的评论生成。
+
+### 1. 在MCP客户端中的使用方式
+
+#### 基本操作
+
+| 功能 | 示例命令 |
+|---------|----------|
+| **搜索笔记** | `帮我搜索关于[关键词]的小红书笔记` |
+| **获取笔记内容** | `帮我查看这篇小红书笔记的内容:https://www.xiaohongshu.com/explore/xxxx` |
+| **分析笔记** | `帮我分析这篇小红书笔记:https://www.xiaohongshu.com/explore/xxxx` |
+| **获取评论** | `帮我查看这篇笔记的评论:https://www.xiaohongshu.com/explore/xxxx` |
+| **生成评论** | `帮我为这篇小红书笔记写一条[类型]评论:https://www.xiaohongshu.com/explore/xxxx` |
+
+#### 评论类型选项
+
+| 类型 | 描述 | 适用场景 |
+|---------|------|----------|
+| **引流** | 引导用户关注或私聊 | 增加粉丝或私信互动 |
+| **点赞** | 简单互动获取好感 | 增加曝光和互动率 |
+| **咨询** | 以问题形式增加互动 | 引发博主回复,增加互动深度 |
+| **专业** | 展示专业知识建立权威 | 建立专业形象,增强可信度 |
+
+### 2. 实际工作流程示例
+
+```
+用户: 帮我为这个小红书笔记写一条专业类型的评论:https://www.xiaohongshu.com/explore/xxxx
+
+Claude: 我会帮您写一条专业类型的评论。让我获取笔记内容并生成评论。
+[调用post_smart_comment工具]
+
+# 工具返回笔记分析结果,包含标题、作者、内容、领域和关键词
+
+Claude: 我已经获取到笔记信息,这是一篇关于[主题]的笔记。基于内容,我生成并发布了以下专业评论:
+
+"[生成的专业评论内容]"
+
+[调用post_comment工具]
+
+Claude: 评论已成功发布!
+```
+
+**注意**:上述流程中,`post_smart_comment`工具只负责获取笔记分析结果并返回给MCP客户端,实际的评论生成是由MCP客户端(如Claude)自身完成的。
+
+### 3. 工作原理
+
+新版小红书MCP工具采用了模块化设计,分为三个核心模块:
+
+1. **笔记分析模块**(analyze_note)
+   - 获取笔记的标题、作者、发布时间和内容
+   - 分析笔记所属领域和关键词
+   - 返回结构化的笔记信息
+
+2. **评论生成模块**(由MCP客户端实现)
+   - 接收笔记分析结果
+   - 根据笔记内容和评论类型生成自然、相关的评论
+   - 允许用户在发布前预览和修改评论
+
+3. **评论发布模块**(post_comment)
+   - 接收生成的评论内容
+   - 定位并操作评论输入框
+   - 发布评论并返回结果
+
+## 五、代码结构
+
+- **xiaohongshu_mcp.py**:实现主要功能的核心文件,包含登录、搜索、获取内容和评论、发布评论等功能的代码逻辑。
+- **requirements.txt**:记录项目所需的依赖库。
+
+## 六、常见问题与解决方案
+
+1. **连接失败**:
+   - 确保使用了虚拟环境中Python解释器的**完整绝对路径**
+   - 确保MCP服务器正在运行
+   - 尝试重启MCP服务器和客户端
+
+2. **浏览器会话问题**:
+   如果遇到`Page.goto: Target page, context or browser has been closed`错误:
+   - 重启MCP服务器
+   - 重新连接并登录
+
+3. **依赖安装问题**:
+   如果遇到`ModuleNotFoundError`错误:
+   - 确保在虚拟环境中安装了所有依赖
+   - 检查是否安装了fastmcp包
+
+## 七、注意事项与问题解决
+
+### 1. 使用注意事项
+
+- **浏览器模式**:工具使用 Playwright 的非隐藏模式运行,运行时会打开真实浏览器窗口
+- **登录方式**:首次登录需要手动扫码,后续使用若登录状态有效,则无需再次扫码
+- **平台规则**:使用过程中请严格遵守小红书平台的相关规定,避免过度操作,防止账号面临封禁风险
+- **评论频率**:建议控制评论发布频率,避免短时间内发布大量评论,每天发布评论数量不超过30条
+
+### 2. 常见问题与解决方案
+
+#### 浏览器实例问题
+
+如果遇到“Page.goto: Target page, context or browser has been closed”类似错误,可能是浏览器实例没有正确关闭或数据目录锁文件问题,请尝试:
+
+```bash
+# 删除浏览器锁文件
+rm -f /项目路径/browser_data/SingletonLock /项目路径/browser_data/SingletonCookie
+
+# 如果问题仍然存在,备份并重建浏览器数据目录
+mkdir -p /项目路径/backup_browser_data
+mv /项目路径/browser_data/* /项目路径/backup_browser_data/
+mkdir -p /项目路径/browser_data
+```
+
+#### 内容获取问题
+
+如果无法获取笔记内容或内容不完整,可尝试:
+
+1. **增加等待时间**:小红书笔记页面可能需要更长的加载时间,特别是包含大量图片或视频的笔记
+2. **清除浏览器缓存**:有时浏览器缓存会影响内容获取
+3. **尝试不同的获取方法**:工具集成了多种获取方法,如果一种方法失败,可以尝试其他方法
+
+#### 平台变化适应
+
+小红书平台可能会更新页面结构和DOM元素,导致工具无法正常工作。如遇到此类问题:
+
+1. **检查项目更新**:关注项目最新版本,及时更新
+2. **调整选择器**:如果您熟悉代码,可以尝试调整CSS选择器或XPath表达式
+3. **提交问题反馈**:向项目维护者提交问题,描述遇到的具体问题和页面变化
+
+## 八、免责声明
+
+本工具仅用于学习和研究目的,使用者应严格遵守相关法律法规以及小红书平台的规定。因使用不当导致的任何问题,本项目开发者不承担任何责任。

+ 434 - 0
mcp-servers/redbook-search-comment/README.md

@@ -0,0 +1,434 @@
+# Xiaohongshu (RED) Auto Search & Comment Tool (MCP Server 2.0)
+
+<div align="right">
+
+English | [中文](README.md)
+
+</div>
+
+> This project is based on [JonaFly/RednoteMCP](https://github.com/JonaFly/RednoteMCP.git) with comprehensive optimizations and feature extensions based on multiple practical experiences (by windsurf). Sincere thanks to the original author for their contributions!
+
+This is a Xiaohongshu (RED) automatic search and comment tool developed with Playwright. As an MCP Server, it can be integrated with MCP Clients (such as Claude for Desktop) through specific configurations, helping users automatically log in to Xiaohongshu, search for keywords, retrieve note content, and publish AI-generated comments.
+
+## Key Features and Advantages
+
+- **Deep AI Integration**: Leverages the large model capabilities of MCP clients (like Claude) to generate more natural and relevant comment content
+- **Modular Design**: Divides functionality into three independent modules: note analysis, comment generation, and comment publishing, improving code maintainability
+- **Powerful Content Retrieval**: Integrates multiple methods to retrieve note content, ensuring complete acquisition of titles, authors, and content from various types of notes
+- **Persistent Login**: Uses persistent browser context, eliminating the need to log in repeatedly after the first login
+- **Two-Step Comment Process**: First obtains note analysis results, then generates and publishes comments through the MCP client
+
+## Version 2.0 Major Improvements
+
+- **Enhanced Content Retrieval**: Restructured the note content retrieval module, increased page loading wait times and scrolling operations, implementing four different content retrieval methods
+- **AI Comment Generation**: Redesigned the comment functionality to return note analysis results to the MCP client, which uses its AI capabilities to generate more natural and relevant comments
+- **Modular Functionality**: Divided functionality into three independent modules: note analysis, comment generation, and comment publishing, improving code maintainability
+- **Search Results Optimization**: Resolved the issue of titles not displaying when searching for notes, providing more complete search results
+- **Enhanced Error Handling**: Added more detailed error handling and debug information output
+
+## I. Core Features
+
+### 1. User Authentication and Login
+
+- **Persistent Login**: Supports manual QR code login, saves state after first login, no need to scan again for subsequent use
+- **Login State Management**: Automatically detects login status and prompts users to log in when needed
+
+### 2. Content Discovery and Retrieval
+
+- **Smart Keyword Search**: Supports multi-keyword search, can specify the number of results to return, and provides complete note information
+- **Multi-dimensional Content Retrieval**: Integrates four different retrieval methods to ensure accurate acquisition of note titles, authors, publication times, and content
+- **Comment Data Retrieval**: Supports retrieving comments on notes, including commenter, comment text, and time information
+
+### 3. Content Analysis and Generation
+
+- **Note Content Analysis**: Automatically analyzes note content, extracts key information, and identifies the domain of the note
+- **AI Comment Generation**: Uses the AI capabilities of MCP clients (such as Claude) to generate natural, relevant comments based on note content
+- **Multiple Comment Types**: Supports four different types of comment generation:
+  - **Traffic-driving**: Guides users to follow or private message
+  - **Like-oriented**: Simple interactions to gain goodwill
+  - **Inquiry-based**: Increases interaction in the form of questions
+  - **Professional**: Displays professional knowledge to establish authority
+
+### 4. Data Return and Feedback
+
+- **Structured Data Return**: Returns note analysis results to the MCP client in JSON format, facilitating AI comment generation
+- **Comment Publishing Feedback**: Provides real-time feedback on comment publishing results
+
+## II. Installation Steps
+
+1. **Python Environment Preparation**: Ensure your system has Python 3.8 or higher installed. If not, download and install it from the official Python website.
+
+2. **Project Acquisition**: Clone or download this project to your local machine.
+
+3. **Create Virtual Environment**: Create and activate a virtual environment in the project directory (recommended):
+
+   ```bash
+   # Create virtual environment
+   python3 -m venv venv
+   
+   # Activate virtual environment
+   # Windows
+   venv\Scripts\activate
+   # macOS/Linux
+   source venv/bin/activate
+   ```
+
+4. **Install Dependencies**: Install the required dependencies in the activated virtual environment:
+
+   ```bash
+   pip install -r requirements.txt
+   pip install fastmcp
+   ```
+
+5. **Install Browser**: Install the browsers required by Playwright:
+
+   ```bash
+   playwright install
+   ```
+
+## III. MCP Server Configuration
+
+Add the following content to the MCP Client (such as Claude for Desktop) configuration file to configure this tool as an MCP Server:
+
+### Mac Configuration Example
+
+```json
+{
+    "mcpServers": {
+        "xiaohongshu MCP": {
+            "command": "/absolute/path/to/venv/bin/python3",
+            "args": [
+                "/absolute/path/to/xiaohongshu_mcp.py",
+                "--stdio"
+            ]
+        }
+    }
+}
+```
+
+### Windows Configuration Example
+
+```json
+{
+    "mcpServers": {
+        "xiaohongshu MCP": {
+            "command": "C:\\Users\\username\\Desktop\\MCP\\Redbook-Search-Comment-MCP2.0\\venv\\Scripts\\python.exe",
+            "args": [
+                "C:\\Users\\username\\Desktop\\MCP\\Redbook-Search-Comment-MCP2.0\\xiaohongshu_mcp.py",
+                "--stdio"
+            ]
+        }
+    }
+}
+```
+
+> **Important Notes**:
+>
+> - Please use the **complete absolute path** of the Python interpreter in your virtual environment
+> - Mac example: `/Users/username/Desktop/RedBook-Search-Comment-MCP/venv/bin/python3`
+> - Windows example: `C:\Users\username\Desktop\MCP\Redbook-Search-Comment-MCP2.0\venv\Scripts\python.exe`
+> - Similarly, xiaohongshu_mcp.py also needs to use a **complete absolute path**
+> - Backslashes in Windows paths need to be double-escaped in JSON (using `\\`)
+
+### Python Command Differences (python vs python3)
+
+In different system environments, Python commands may vary depending on your system configuration. Here's how to determine which command you should use:
+
+1. **Determine Your Python Command**:
+   - Run in terminal: `python --version` and `python3 --version`
+   - Check which command returns a Python 3.x version (this project requires Python 3.8+)
+
+2. **Confirm in Virtual Environment**:
+   - After activating the virtual environment, run `which python` or `where python` (Windows)
+   - This will display the complete path of the Python interpreter
+
+3. **Use the Correct Command in Configuration**:
+   - Mac: Usually `python3` or `python` in the virtual environment
+   - Windows: Usually `python` or `python.exe`
+
+In the configuration file, always use the **complete absolute path** of the Python interpreter in your virtual environment, not the command name.
+
+## IV. Usage Methods
+
+### (A) Starting the Server
+
+1. **Direct Execution**: In the project directory, after activating the virtual environment, execute:
+
+   ```bash
+   python3 xiaohongshu_mcp.py
+   ```
+
+2. **Launch via MCP Client**: After configuring the MCP Client, follow the client's operation process to start and connect.
+
+### (B) Main Functionality Operations
+
+After connecting to the server in the MCP Client (such as Claude for Desktop), you can use the following features:
+
+### 1. Log in to Xiaohongshu
+
+**Tool Function**:
+
+```
+mcp0_login()
+```
+
+**Usage in MCP Client**:
+Send the following text directly:
+
+```
+Help me log in to my Xiaohongshu account
+```
+
+Or:
+
+```
+Please log in to Xiaohongshu
+```
+
+**Function Description**: When used for the first time, it will open a browser window and wait for the user to manually scan the QR code to log in. After successful login, the tool will save the login state.
+
+### 2. Search for Notes
+
+**Tool Function**:
+
+```
+mcp0_search_notes(keywords="keywords", limit=5)
+```
+
+**Usage in MCP Client**:
+Send a search request containing keywords:
+
+```
+Help me search for Xiaohongshu notes with the keyword: food
+```
+
+Specify the number of results:
+
+```
+Help me search for Xiaohongshu notes with the keyword travel, return 10 results
+```
+
+**Function Description**: Searches for Xiaohongshu notes based on keywords and returns a specified number of results. Returns 5 results by default.
+
+### 3. Get Note Content
+
+**Tool Function**:
+
+```
+mcp0_get_note_content(url="note URL")
+```
+
+**Usage in MCP Client**:
+Send a request containing the note URL:
+
+```
+Help me get the content of this note: https://www.xiaohongshu.com/search_result/xxxx
+```
+
+Or:
+
+```
+Please check the content of this Xiaohongshu note: https://www.xiaohongshu.com/search_result/xxxx
+```
+
+**Function Description**: Retrieves detailed content of the specified note URL, including title, author, publication time, and content.
+
+### 4. Get Note Comments
+
+**Tool Function**:
+
+```
+mcp0_get_note_comments(url="note URL")
+```
+
+**Usage in MCP Client**:
+Send a comment request containing the note URL:
+
+```
+Help me get the comments on this note: https://www.xiaohongshu.com/search_result/xxxx
+```
+
+Or:
+
+```
+Please check the comment section of this Xiaohongshu note: https://www.xiaohongshu.com/search_result/xxxx
+```
+
+**Function Description**: Retrieves comment information for the specified note URL, including commenter, comment content, and comment time.
+
+### 5. Post Smart Comment
+
+**Tool Function**:
+
+```
+mcp0_post_smart_comment(url="note URL", comment_type="comment type")
+```
+
+**Usage in MCP Client**:
+Send a request containing the note URL and comment type:
+
+```
+Help me write a [type] comment for this note: https://www.xiaohongshu.com/explore/xxxx
+```
+
+**Function Description**: Retrieves note analysis results and returns them to the MCP client, which generates a comment and calls post_comment to publish it.
+
+### 6. Post Comment
+
+**Tool Function**:
+
+```
+mcp0_post_comment(url="note URL", comment="comment content")
+```
+
+**Usage in MCP Client**:
+Send a request containing the note URL and comment content:
+
+```
+Help me post this comment to the note: https://www.xiaohongshu.com/explore/xxxx
+Comment content: [comment content]
+```
+
+**Function Description**: Posts the specified comment content to the note page.
+
+## V. User Guide
+
+### 0. Working Principle
+
+This tool uses a two-step process to implement smart commenting:
+
+1. **Note Analysis**: Calls the `post_smart_comment` tool to get note information (title, author, content, etc.)
+
+2. **Comment Generation and Publishing**:
+   - The MCP client (such as Claude) generates comments based on note analysis results
+   - Calls the `post_comment` tool to publish the comment
+
+This design fully utilizes the AI capabilities of the MCP client to generate more natural and relevant comments.
+
+### 1. Usage in MCP Client
+
+#### Basic Operations
+
+| Function | Example Command |
+|---------|----------|
+| **Search Notes** | `Help me search for Xiaohongshu notes about [keyword]` |
+| **Get Note Content** | `Help me view the content of this Xiaohongshu note: https://www.xiaohongshu.com/explore/xxxx` |
+| **Analyze Note** | `Help me analyze this Xiaohongshu note: https://www.xiaohongshu.com/explore/xxxx` |
+| **Get Comments** | `Help me view the comments on this note: https://www.xiaohongshu.com/explore/xxxx` |
+| **Generate Comment** | `Help me write a [type] comment for this Xiaohongshu note: https://www.xiaohongshu.com/explore/xxxx` |
+
+#### Comment Type Options
+
+| Type | Description | Use Case |
+|---------|------|----------|
+| **Traffic-driving** | Guide users to follow or private message | Increase followers or private message interactions |
+| **Like-oriented** | Simple interactions to gain goodwill | Increase exposure and interaction rate |
+| **Inquiry-based** | Increase interaction in the form of questions | Trigger blogger replies, increase interaction depth |
+| **Professional** | Display professional knowledge to establish authority | Build professional image, enhance credibility |
+
+### 2. Actual Workflow Example
+
+```
+User: Help me write a professional type comment for this Xiaohongshu note: https://www.xiaohongshu.com/explore/xxxx
+
+Claude: I'll help you write a professional type comment. Let me get the note content and generate a comment.
+[Calls post_smart_comment tool]
+
+# Tool returns note analysis results, including title, author, content, domain, and keywords
+
+Claude: I've obtained the note information, this is a note about [topic]. Based on the content, I generated and posted the following professional comment:
+
+"[Generated professional comment content]"
+
+[Calls post_comment tool]
+
+Claude: Comment successfully posted!
+```
+
+**Note**: In the above process, the `post_smart_comment` tool is only responsible for retrieving note analysis results and returning them to the MCP client. The actual comment generation is done by the MCP client (such as Claude) itself.
+
+### 3. Working Principle
+
+The new version of the Xiaohongshu MCP tool adopts a modular design, divided into three core modules:
+
+1. **Note Analysis Module** (analyze_note)
+   - Retrieves the title, author, publication time, and content of the note
+   - Analyzes the domain and keywords of the note
+   - Returns structured note information
+
+2. **Comment Generation Module** (implemented by the MCP client)
+   - Receives note analysis results
+   - Generates natural, relevant comments based on note content and comment type
+   - Allows users to preview and modify comments before publishing
+
+3. **Comment Publishing Module** (post_comment)
+   - Receives generated comment content
+   - Locates and operates the comment input box
+   - Publishes the comment and returns results
+
+## VI. Code Structure
+
+- **xiaohongshu_mcp.py**: The core file implementing the main functions, including login, search, content and comment retrieval, comment publishing, and other code logic.
+- **requirements.txt**: Records the dependencies required by the project.
+
+## VII. Common Issues and Solutions
+
+1. **Connection Failure**:
+   - Ensure you're using the **complete absolute path** of the Python interpreter in your virtual environment
+   - Ensure the MCP server is running
+   - Try restarting the MCP server and client
+
+2. **Browser Session Issues**:
+   If you encounter a `Page.goto: Target page, context or browser has been closed` error:
+   - Restart the MCP server
+   - Reconnect and log in again
+
+3. **Dependency Installation Issues**:
+   If you encounter a `ModuleNotFoundError` error:
+   - Ensure all dependencies are installed in the virtual environment
+   - Check if the fastmcp package is installed
+
+## VIII. Notes and Troubleshooting
+
+### 1. Usage Notes
+
+- **Browser Mode**: The tool runs in Playwright's non-headless mode, opening a real browser window during execution
+- **Login Method**: First-time login requires manual QR code scanning; subsequent uses don't require rescanning if the login state is valid
+- **Platform Rules**: Please strictly follow Xiaohongshu platform regulations during use, avoid excessive operations to prevent account banning risks
+- **Comment Frequency**: It's recommended to control comment posting frequency, avoid posting a large number of comments in a short time, and limit the number of comments posted per day to no more than 30
+
+### 2. Common Issues and Solutions
+
+#### Browser Instance Issues
+
+If you encounter errors like "Page.goto: Target page, context or browser has been closed", it may be due to browser instances not closing correctly or data directory lock file issues. Try:
+
+```bash
+# Delete browser lock files
+rm -f /project_path/browser_data/SingletonLock /project_path/browser_data/SingletonCookie
+
+# If the problem persists, backup and rebuild the browser data directory
+mkdir -p /project_path/backup_browser_data
+mv /project_path/browser_data/* /project_path/backup_browser_data/
+mkdir -p /project_path/browser_data
+```
+
+#### Content Retrieval Issues
+
+If you cannot retrieve note content or the content is incomplete, try:
+
+1. **Increase Wait Time**: Xiaohongshu note pages may need longer loading times, especially for notes with many images or videos
+2. **Clear Browser Cache**: Sometimes browser cache can affect content retrieval
+3. **Try Different Retrieval Methods**: The tool integrates multiple retrieval methods; if one method fails, try others
+
+#### Platform Changes Adaptation
+
+The Xiaohongshu platform may update page structure and DOM elements, causing the tool to malfunction. If you encounter such issues:
+
+1. **Check Project Updates**: Pay attention to the latest version of the project and update in a timely manner
+2. **Adjust Selectors**: If you're familiar with the code, try adjusting CSS selectors or XPath expressions
+3. **Submit Issue Feedback**: Submit issues to the project maintainer, describing the specific problems and page changes encountered
+
+## IX. Disclaimer
+
+This tool is for learning and research purposes only. Users should strictly comply with relevant laws, regulations, and Xiaohongshu platform rules. The project developers are not responsible for any issues caused by improper use.

+ 38 - 0
mcp-servers/redbook-search-comment/init.go

@@ -0,0 +1,38 @@
+package redbooksearchcomment
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"redbook-search-comment",
+			"Redbook Search Comment",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("小红书搜索评论"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/chenningling/Redbook-Search-Comment-MCP2.0",
+			),
+			mcpservers.WithTags([]string{"search"}),
+			mcpservers.WithDescription(
+				"Help users automatically complete login to Xiaohongshu, search keywords, get note content, and publish AI-generated comments",
+			),
+			mcpservers.WithDescriptionCN(
+				"帮助用户自动完成登录小红书、搜索关键词、获取笔记内容及发布AI生成评论等操作",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 349 - 0
mcp-servers/redis/README.cn.md

@@ -0,0 +1,349 @@
+# Redis MCP 服务器
+
+> <https://github.com/redis/mcp-redis>
+
+## 概述
+
+Redis MCP 服务器是一个为智能应用程序设计的**自然语言接口**,用于高效管理和搜索 Redis 中的数据。它与 **MCP(模型内容协议)客户端**无缝集成,使 AI 驱动的工作流能够与 Redis 中的结构化和非结构化数据进行交互。使用此 MCP 服务器,您可以询问如下问题:
+
+- "将整个对话存储在流中"
+- "缓存此项目"
+- "存储带有过期时间的会话"
+- "索引并搜索此向量"
+
+## 功能特性
+
+- **自然语言查询**:使 AI 智能体能够使用自然语言查询和更新 Redis。
+- **无缝 MCP 集成**:与任何 **MCP 客户端**配合使用,实现流畅通信。
+- **完整 Redis 支持**:处理**哈希、列表、集合、有序集合、流**等数据结构。
+- **搜索和过滤**:支持在 Redis 中高效的数据检索和搜索。
+- **可扩展且轻量级**:专为**高性能**数据操作而设计。
+
+## 工具
+
+此 MCP 服务器提供管理 Redis 中存储数据的工具。
+
+- `string` 工具用于设置、获取带过期时间的字符串。适用于存储简单配置值、会话数据或缓存响应。
+- `hash` 工具用于在单个键内存储字段-值对。哈希可以存储向量嵌入。适用于表示具有多个属性的对象、用户配置文件或可以单独访问字段的产品信息。
+- `list` 工具提供常见操作来追加和弹出项目。适用于队列、消息代理或维护最近操作列表。
+- `set` 工具用于添加、删除和列出集合成员。适用于跟踪唯一值(如用户 ID 或标签),以及执行交集等集合操作。
+- `sorted set` 工具用于管理数据,例如排行榜、优先队列或基于分数排序的时间分析。
+- `pub/sub` 功能用于向频道发布消息并订阅接收消息。适用于实时通知、聊天应用程序或向多个客户端分发更新。
+- `streams` 工具用于添加、读取和删除数据流。适用于事件溯源、活动订阅或支持消费者组的传感器数据记录。
+- `JSON` 工具用于在 Redis 中存储、检索和操作 JSON 文档。适用于复杂的嵌套数据结构、文档数据库或具有基于路径访问的配置管理。
+
+其他工具:
+
+- `query engine` 工具用于管理向量索引和执行向量搜索
+- `server management` 工具用于检索数据库信息
+
+## 安装
+
+按照以下说明安装服务器。
+
+```sh
+# 克隆仓库
+git clone https://github.com/redis/mcp-redis.git
+cd mcp-redis
+
+# 使用 uv 安装依赖
+uv venv
+source .venv/bin/activate
+uv sync
+```
+
+## 配置
+
+要配置此 Redis MCP 服务器,请考虑以下环境变量:
+
+| 名称                 | 描述                                                      | 默认值        |
+|----------------------|-----------------------------------------------------------|--------------|
+| `REDIS_HOST`         | Redis IP 或主机名                                         | `"127.0.0.1"` |
+| `REDIS_PORT`         | Redis 端口                                                | `6379`       |
+| `REDIS_DB`           | 数据库                                                    | 0            |
+| `REDIS_USERNAME`     | 默认数据库用户名                                           | `"default"`  |
+| `REDIS_PWD`          | 默认数据库密码                                             | ""           |
+| `REDIS_SSL`          | 启用或禁用 SSL/TLS                                         | `False`      |
+| `REDIS_CA_PATH`      | 用于验证服务器的 CA 证书                                   | None         |
+| `REDIS_SSL_KEYFILE`  | 客户端用于客户端认证的私钥文件                              | None         |
+| `REDIS_SSL_CERTFILE` | 客户端用于客户端认证的证书文件                              | None         |
+| `REDIS_CERT_REQS`    | 客户端是否应验证服务器证书                                  | `"required"` |
+| `REDIS_CA_CERTS`     | 受信任 CA 证书文件的路径                                   | None         |
+| `REDIS_CLUSTER_MODE` | 启用 Redis 集群模式                                       | `False`      |
+| `MCP_TRANSPORT`      | 使用 `stdio` 或 `sse` 传输                                | `stdio`      |
+
+设置环境变量有几种方法:
+
+1. **使用 `.env` 文件**:  
+  在项目目录中放置一个 `.env` 文件,为每个环境变量设置键值对。像 `python-dotenv`、`pipenv` 和 `uv` 这样的工具可以在运行应用程序时自动加载这些变量。这是管理配置的便捷且安全的方法,因为它将敏感数据保留在 shell 历史记录和版本控制之外(如果 `.env` 在 `.gitignore` 中)。
+
+例如,从仓库中提供的 `.env.example` 文件创建一个 `.env` 文件:
+
+  ```bash
+cp .env.example .env
+  ```
+
+  然后编辑 `.env` 文件以设置您的 Redis 配置:
+
+或者,
+
+2. **在 Shell 中设置变量**:  
+  您可以在运行应用程序之前直接在 shell 中导出环境变量。例如:
+
+  ```sh
+  export REDIS_HOST=your_redis_host
+  export REDIS_PORT=6379
+  # 其他变量将类似设置...
+  ```
+
+  此方法适用于临时覆盖或快速测试。
+
+## 传输方式
+
+此 MCP 服务器可以配置为本地处理请求,作为进程运行并通过 `stdin` 和 `stdout` 与 MCP 客户端通信。
+这是默认配置。`sse` 传输也是可配置的,因此服务器可通过网络访问。
+相应地配置 `MCP_TRANSPORT` 变量。
+
+```commandline
+export MCP_TRANSPORT="sse"
+```
+
+然后启动服务器。
+
+```commandline
+uv run src/main.py
+```
+
+测试服务器:
+
+```commandline
+curl -i http://127.0.0.1:8000/sse
+HTTP/1.1 200 OK
+```
+
+与您喜欢的工具或客户端集成。GitHub Copilot 的 VS Code 配置是:
+
+```commandline
+"mcp": {
+    "servers": {
+        "redis-mcp": {
+            "type": "sse",
+            "url": "http://127.0.0.1:8000/sse"
+        },
+    }
+},
+```
+
+## 与 OpenAI Agents SDK 集成
+
+将此 MCP 服务器与 OpenAI Agents SDK 集成。阅读[文档](https://openai.github.io/openai-agents-python/mcp/)以了解更多关于 SDK 与 MCP 集成的信息。
+
+安装 Python SDK。
+
+```commandline
+pip install openai-agents
+```
+
+配置 OpenAI 令牌:
+
+```commandline
+export OPENAI_API_KEY="<openai_token>"
+```
+
+并运行[应用程序](./examples/redis_assistant.py)。
+
+```commandline
+python3.13 redis_assistant.py
+```
+
+您可以使用 [OpenAI 仪表板](https://platform.openai.com/traces/)对智能体工作流进行故障排除。
+
+## 与 Claude Desktop 集成
+
+### 通过 Smithery
+
+如果您想测试[由 Smithery 部署](https://smithery.ai/docs/deployments)的 [Redis MCP 服务器](https://smithery.ai/server/@redis/mcp-redis),您可以自动配置 Claude Desktop:
+
+```bash
+npx -y @smithery/cli install @redis/mcp-redis --client claude
+```
+
+按照提示提供详细信息来配置服务器并连接到 Redis(例如使用 Redis Cloud 数据库)。
+该过程将在 `claude_desktop_config.json` 配置文件中创建适当的配置。
+
+### 手动配置
+
+您可以配置 Claude Desktop 使用此 MCP 服务器。
+
+1. 指定您的 Redis 凭据和 TLS 配置
+2. 获取您的 `uv` 命令完整路径(例如 `which uv`)
+3. 编辑 `claude_desktop_config.json` 配置文件
+   - 在 MacOS 上,位于 `~/Library/Application\ Support/Claude/`
+
+```commandline
+{
+    "mcpServers": {
+        "redis": {
+            "command": "<full_path_uv_command>",
+            "args": [
+                "--directory",
+                "<your_mcp_server_directory>",
+                "run",
+                "src/main.py"
+            ],
+            "env": {
+                "REDIS_HOST": "<your_redis_database_hostname>",
+                "REDIS_PORT": "<your_redis_database_port>",
+                "REDIS_PWD": "<your_redis_database_password>",
+                "REDIS_SSL": True|False,
+                "REDIS_CA_PATH": "<your_redis_ca_path>",
+                "REDIS_CLUSTER_MODE": True|False
+            }
+        }
+    }
+}
+```
+
+### 使用 Docker
+
+您可以使用此服务器的 Docker 化部署。您可以构建自己的镜像或使用官方 [Redis MCP Docker](https://hub.docker.com/r/mcp/redis) 镜像。
+
+如果您想构建自己的镜像,Redis MCP 服务器提供了 Dockerfile。使用以下命令构建此服务器的镜像:
+
+```commandline
+docker build -t mcp-redis .
+```
+
+最后,配置 Claude Desktop 在启动时创建容器。编辑 `claude_desktop_config.json` 并添加:
+
+```commandline
+{
+  "mcpServers": {
+    "redis": {
+      "command": "docker",
+      "args": ["run",
+                "--rm",
+                "--name",
+                "redis-mcp-server",
+                "-i",
+                "-e", "REDIS_HOST=<redis_hostname>",
+                "-e", "REDIS_PORT=<redis_port>",
+                "-e", "REDIS_USERNAME=<redis_username>",
+                "-e", "REDIS_PWD=<redis_password>",
+                "mcp-redis"]
+    }
+  }
+}
+```
+
+要使用官方 [Redis MCP Docker](https://hub.docker.com/r/mcp/redis) 镜像,只需将您的镜像名称(上例中的 `mcp-redis`)替换为 `mcp/redis`。
+
+### 故障排除
+
+您可以通过查看日志文件来排除问题。
+
+```commandline
+tail -f ~/Library/Logs/Claude/mcp-server-redis.log
+```
+
+## 与 VS Code 集成
+
+要在 VS Code 中使用 Redis MCP 服务器,您需要:
+
+1. 启用[智能体模式](https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode)工具。将以下内容添加到您的 `settings.json`:
+
+```commandline
+{
+  "chat.agent.enabled": true
+}
+```
+
+2. 将 Redis MCP 服务器配置添加到您的 `mcp.json` 或 `settings.json`:
+
+```commandline
+// 示例 .vscode/mcp.json
+{
+  "servers": {
+    "redis": {
+      "type": "stdio",
+      "command": "<full_path_uv_command>",
+      "args": [
+        "--directory",
+        "<your_mcp_server_directory>",
+        "run",
+        "src/main.py"
+      ],
+      "env": {
+        "REDIS_HOST": "<your_redis_database_hostname>",
+        "REDIS_PORT": "<your_redis_database_port>",
+        "REDIS_USERNAME": "<your_redis_database_username>",
+        "REDIS_PWD": "<your_redis_database_password>",
+      }
+    }
+  }
+}
+```
+
+```commandline
+// 示例 settings.json
+{
+  "mcp": {
+    "servers": {
+      "redis": {
+        "type": "stdio",
+        "command": "<full_path_uv_command>",
+        "args": [
+          "--directory",
+          "<your_mcp_server_directory>",
+          "run",
+          "src/main.py"
+        ],
+        "env": {
+          "REDIS_HOST": "<your_redis_database_hostname>",
+          "REDIS_PORT": "<your_redis_database_port>",
+          "REDIS_USERNAME": "<your_redis_database_username>",
+          "REDIS_PWD": "<your_redis_database_password>",
+        }
+      }
+    }
+  }
+}
+```
+
+更多信息请参阅 [VS Code 文档](https://code.visualstudio.com/docs/copilot/chat/mcp-servers)。
+
+## 测试
+
+您可以使用 [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) 对此 MCP 服务器进行可视化调试。
+
+```sh
+npx @modelcontextprotocol/inspector uv run src/main.py
+```
+
+## 示例用例
+
+- **AI 助手**:使 LLM 能够在 Redis 中获取、存储和处理数据。
+- **聊天机器人和虚拟智能体**:检索会话数据、管理队列并个性化响应。
+- **数据搜索和分析**:查询 Redis 以获得**实时洞察和快速查找**。
+- **事件处理**:使用 **Redis Streams** 管理事件流。
+
+## 贡献
+
+1. Fork 仓库
+2. 创建新分支(`feature-branch`)
+3. 提交您的更改
+4. 推送到您的分支并提交 PR!
+
+## 许可证
+
+此项目采用 **MIT 许可证**。
+
+## 徽章
+
+<a href="https://glama.ai/mcp/servers/@redis/mcp-redis">
+  <img width="380" height="200" src="https://glama.ai/mcp/servers/@redis/mcp-redis/badge" alt="Redis Server MCP server" />
+</a>
+
+## 联系方式
+
+如有问题或需要支持,请通过 [GitHub Issues](https://github.com/redis/mcp-redis/issues) 联系我们。

+ 349 - 0
mcp-servers/redis/README.md

@@ -0,0 +1,349 @@
+# Redis MCP Server
+
+> <https://github.com/redis/mcp-redis>
+
+## Overview
+
+The Redis MCP Server is a **natural language interface** designed for agentic applications to efficiently manage and search data in Redis. It integrates seamlessly with **MCP (Model Content Protocol) clients**, enabling AI-driven workflows to interact with structured and unstructured data in Redis. Using this MCP Server, you can ask questions like:
+
+- "Store the entire conversation in a stream"
+- "Cache this item"
+- "Store the session with an expiration time"
+- "Index and search this vector"
+
+## Features
+
+- **Natural Language Queries**: Enables AI agents to query and update Redis using natural language.
+- **Seamless MCP Integration**: Works with any **MCP client** for smooth communication.
+- **Full Redis Support**: Handles **hashes, lists, sets, sorted sets, streams**, and more.
+- **Search & Filtering**: Supports efficient data retrieval and searching in Redis.
+- **Scalable & Lightweight**: Designed for **high-performance** data operations.
+
+## Tools
+
+This MCP Server provides tools to manage the data stored in Redis.
+
+- `string` tools to set, get strings with expiration. Useful for storing simple configuration values, session data, or caching responses.
+- `hash` tools to store field-value pairs within a single key. The hash can store vector embeddings. Useful for representing objects with multiple attributes, user profiles, or product information where fields can be accessed individually.
+- `list` tools with common operations to append and pop items. Useful for queues, message brokers, or maintaining a list of most recent actions.
+- `set` tools to add, remove and list set members. Useful for tracking unique values like user IDs or tags, and for performing set operations like intersection.
+- `sorted set` tools to manage data for e.g. leaderboards, priority queues, or time-based analytics with score-based ordering.
+- `pub/sub` functionality to publish messages to channels and subscribe to receive them. Useful for real-time notifications, chat applications, or distributing updates to multiple clients.
+- `streams` tools to add, read, and delete from data streams. Useful for event sourcing, activity feeds, or sensor data logging with consumer groups support.
+- `JSON` tools to store, retrieve, and manipulate JSON documents in Redis. Useful for complex nested data structures, document databases, or configuration management with path-based access.
+
+Additional tools.
+
+- `query engine` tools to manage vector indexes and perform vector search
+- `server management` tool to retrieve information about the database
+
+## Installation
+
+Follow these instructions to install the server.
+
+```sh
+# Clone the repository
+git clone https://github.com/redis/mcp-redis.git
+cd mcp-redis
+
+# Install dependencies using uv
+uv venv
+source .venv/bin/activate
+uv sync
+```
+
+## Configuration
+
+To configure this Redis MCP Server, consider the following environment variables:
+
+| Name                 | Description                                               | Default Value |
+|----------------------|-----------------------------------------------------------|--------------|
+| `REDIS_HOST`         | Redis IP or hostname                                      | `"127.0.0.1"` |
+| `REDIS_PORT`         | Redis port                                                | `6379`       |
+| `REDIS_DB`           | Database                                                  | 0            |
+| `REDIS_USERNAME`     | Default database username                                 | `"default"`  |
+| `REDIS_PWD`          | Default database password                                 | ""           |
+| `REDIS_SSL`          | Enables or disables SSL/TLS                               | `False`      |
+| `REDIS_CA_PATH`      | CA certificate for verifying server                       | None         |
+| `REDIS_SSL_KEYFILE`  | Client's private key file for client authentication       | None         |
+| `REDIS_SSL_CERTFILE` | Client's certificate file for client authentication       | None         |
+| `REDIS_CERT_REQS`    | Whether the client should verify the server's certificate | `"required"` |
+| `REDIS_CA_CERTS`     | Path to the trusted CA certificates file                  | None         |
+| `REDIS_CLUSTER_MODE` | Enable Redis Cluster mode                                 | `False`      |
+| `MCP_TRANSPORT`      | Use the `stdio` or `sse` transport                        | `stdio`      |
+
+There are several ways to set environment variables:
+
+1. **Using a `.env` File**:  
+  Place a `.env` file in your project directory with key-value pairs for each environment variable. Tools like `python-dotenv`, `pipenv`, and `uv` can automatically load these variables when running your application. This is a convenient and secure way to manage configuration, as it keeps sensitive data out of your shell history and version control (if `.env` is in `.gitignore`).
+
+For example, create a `.env` file with the following content from the `.env.example` file provided in the repository:
+
+  ```bash
+cp .env.example .env
+  ```
+
+  Then edit the `.env` file to set your Redis configuration:
+
+OR,
+
+2. **Setting Variables in the Shell**:  
+  You can export environment variables directly in your shell before running your application. For example:
+
+  ```sh
+  export REDIS_HOST=your_redis_host
+  export REDIS_PORT=6379
+  # Other variables will be set similarly...
+  ```
+
+  This method is useful for temporary overrides or quick testing.
+
+## Transports
+
+This MCP server can be configured to handle requests locally, running as a process and communicating with the MCP client via `stdin` and `stdout`.
+This is the default configuration. The `sse` transport is also configurable so the server is available over the network.
+Configure the `MCP_TRANSPORT` variable accordingly.
+
+```commandline
+export MCP_TRANSPORT="sse"
+```
+
+Then start the server.
+
+```commandline
+uv run src/main.py
+```
+
+Test the server:
+
+```commandline
+curl -i http://127.0.0.1:8000/sse
+HTTP/1.1 200 OK
+```
+
+Integrate with your favorite tool or client. The VS Code configuration for GitHub Copilot is:
+
+```commandline
+"mcp": {
+    "servers": {
+        "redis-mcp": {
+            "type": "sse",
+            "url": "http://127.0.0.1:8000/sse"
+        },
+    }
+},
+```
+
+## Integration with OpenAI Agents SDK
+
+Integrate this MCP Server with the OpenAI Agents SDK. Read the [documents](https://openai.github.io/openai-agents-python/mcp/) to learn more about the integration of the SDK with MCP.
+
+Install the Python SDK.
+
+```commandline
+pip install openai-agents
+```
+
+Configure the OpenAI token:
+
+```commandline
+export OPENAI_API_KEY="<openai_token>"
+```
+
+And run the [application](./examples/redis_assistant.py).
+
+```commandline
+python3.13 redis_assistant.py
+```
+
+You can troubleshoot your agent workflows using the [OpenAI dashboard](https://platform.openai.com/traces/).
+
+## Integration with Claude Desktop
+
+### Via Smithery
+
+If you'd like to test the [Redis MCP Server](https://smithery.ai/server/@redis/mcp-redis) deployed [by Smithery](https://smithery.ai/docs/deployments), you can configure Claude Desktop automatically:
+
+```bash
+npx -y @smithery/cli install @redis/mcp-redis --client claude
+```
+
+Follow the prompt and provide the details to configure the server and connect to Redis (e.g. using a Redis Cloud database).
+The procedure will create the proper configuration in the `claude_desktop_config.json` configuration file.
+
+### Manual configuration
+
+You can configure Claude Desktop to use this MCP Server.
+
+1. Specify your Redis credentials and TLS configuration
+2. Retrieve your `uv` command full path (e.g. `which uv`)
+3. Edit the `claude_desktop_config.json` configuration file
+   - on a MacOS, at `~/Library/Application\ Support/Claude/`
+
+```commandline
+{
+    "mcpServers": {
+        "redis": {
+            "command": "<full_path_uv_command>",
+            "args": [
+                "--directory",
+                "<your_mcp_server_directory>",
+                "run",
+                "src/main.py"
+            ],
+            "env": {
+                "REDIS_HOST": "<your_redis_database_hostname>",
+                "REDIS_PORT": "<your_redis_database_port>",
+                "REDIS_PWD": "<your_redis_database_password>",
+                "REDIS_SSL": True|False,
+                "REDIS_CA_PATH": "<your_redis_ca_path>",
+                "REDIS_CLUSTER_MODE": True|False
+            }
+        }
+    }
+}
+```
+
+### Using with Docker
+
+You can use a dockerized deployment of this server. You can either build your own image or use the official [Redis MCP Docker](https://hub.docker.com/r/mcp/redis) image.
+
+If you'd like to build your own image, the Redis MCP Server provides a Dockerfile. Build this server's image with:
+
+```commandline
+docker build -t mcp-redis .
+```
+
+Finally, configure Claude Desktop to create the container at start-up. Edit the `claude_desktop_config.json` and add:
+
+```commandline
+{
+  "mcpServers": {
+    "redis": {
+      "command": "docker",
+      "args": ["run",
+                "--rm",
+                "--name",
+                "redis-mcp-server",
+                "-i",
+                "-e", "REDIS_HOST=<redis_hostname>",
+                "-e", "REDIS_PORT=<redis_port>",
+                "-e", "REDIS_USERNAME=<redis_username>",
+                "-e", "REDIS_PWD=<redis_password>",
+                "mcp-redis"]
+    }
+  }
+}
+```
+
+To use the official [Redis MCP Docker](https://hub.docker.com/r/mcp/redis) image, just replace your image name (`mcp-redis` in the example above) with `mcp/redis`.
+
+### Troubleshooting
+
+You can troubleshoot problems by tailing the log file.
+
+```commandline
+tail -f ~/Library/Logs/Claude/mcp-server-redis.log
+```
+
+## Integration with VS Code
+
+To use the Redis MCP Server with VS Code, you need:
+
+1. Enable the [agent mode](https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode) tools. Add the following to your `settings.json`:
+
+```commandline
+{
+  "chat.agent.enabled": true
+}
+```
+
+2. Add the Redis MCP Server configuration to your `mcp.json` or `settings.json`:
+
+```commandline
+// Example .vscode/mcp.json
+{
+  "servers": {
+    "redis": {
+      "type": "stdio",
+      "command": "<full_path_uv_command>",
+      "args": [
+        "--directory",
+        "<your_mcp_server_directory>",
+        "run",
+        "src/main.py"
+      ],
+      "env": {
+        "REDIS_HOST": "<your_redis_database_hostname>",
+        "REDIS_PORT": "<your_redis_database_port>",
+        "REDIS_USERNAME": "<your_redis_database_username>",
+        "REDIS_PWD": "<your_redis_database_password>",
+      }
+    }
+  }
+}
+```
+
+```commandline
+// Example settings.json
+{
+  "mcp": {
+    "servers": {
+      "redis": {
+        "type": "stdio",
+        "command": "<full_path_uv_command>",
+        "args": [
+          "--directory",
+          "<your_mcp_server_directory>",
+          "run",
+          "src/main.py"
+        ],
+        "env": {
+          "REDIS_HOST": "<your_redis_database_hostname>",
+          "REDIS_PORT": "<your_redis_database_port>",
+          "REDIS_USERNAME": "<your_redis_database_username>",
+          "REDIS_PWD": "<your_redis_database_password>",
+        }
+      }
+    }
+  }
+}
+```
+
+For more information, see the [VS Code documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers).
+
+## Testing
+
+You can use the [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) for visual debugging of this MCP Server.
+
+```sh
+npx @modelcontextprotocol/inspector uv run src/main.py
+```
+
+## Example Use Cases
+
+- **AI Assistants**: Enable LLMs to fetch, store, and process data in Redis.
+- **Chatbots & Virtual Agents**: Retrieve session data, manage queues, and personalize responses.
+- **Data Search & Analytics**: Query Redis for **real-time insights and fast lookups**.
+- **Event Processing**: Manage event streams with **Redis Streams**.
+
+## Contributing
+
+1. Fork the repo
+2. Create a new branch (`feature-branch`)
+3. Commit your changes
+4. Push to your branch and submit a PR!
+
+## License
+
+This project is licensed under the **MIT License**.
+
+## Badges
+
+<a href="https://glama.ai/mcp/servers/@redis/mcp-redis">
+  <img width="380" height="200" src="https://glama.ai/mcp/servers/@redis/mcp-redis/badge" alt="Redis Server MCP server" />
+</a>
+
+## Contact
+
+For questions or support, reach out via [GitHub Issues](https://github.com/redis/mcp-redis/issues).

+ 38 - 0
mcp-servers/redis/init.go

@@ -0,0 +1,38 @@
+package redis
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"redis",
+			"Redis",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("Redis"),
+			mcpservers.WithTags([]string{"database"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/redis/mcp-redis",
+			),
+			mcpservers.WithDescription(
+				"A natural language interface designed for agentic applications to efficiently manage and search data in Redis.",
+			),
+			mcpservers.WithDescriptionCN(
+				"为智能应用程序设计的自然语言接口,用于高效管理和搜索 Redis 中的数据。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 3 - 0
mcp-servers/register.go

@@ -108,6 +108,9 @@ func GetMCPServer(id string, config, reusingConfig map[string]string) (Server, e
 		return nil, fmt.Errorf("mcp %s not found", id)
 	}
 	if len(embedServer.ConfigTemplates) == 0 {
+		if embedServer.disableCache {
+			return embedServer.NewServer(config, reusingConfig)
+		}
 		return loadCacheServer(embedServer, nil)
 	}
 

+ 206 - 0
mcp-servers/sqlite/README.cn.md

@@ -0,0 +1,206 @@
+# SQLite MCP 服务器
+
+> <https://github.com/modelcontextprotocol/servers-archived/tree/main/src/sqlite>
+
+## 概述
+
+一个模型上下文协议 (MCP) 服务器实现,通过 SQLite 提供数据库交互和商业智能功能。该服务器支持运行 SQL 查询、分析业务数据,并自动生成商业洞察备忘录。
+
+## 组件
+
+### 资源
+
+服务器公开一个动态资源:
+
+- `memo://insights`:持续更新的商业洞察备忘录,汇总分析过程中发现的洞察
+  - 当通过 append-insight 工具发现新洞察时自动更新
+
+### 提示
+
+服务器提供一个演示提示:
+
+- `mcp-demo`:引导用户进行数据库操作的交互式提示
+  - 必需参数:`topic` - 要分析的业务领域
+  - 生成适当的数据库模式和示例数据
+  - 引导用户进行分析和洞察生成
+  - 与商业洞察备忘录集成
+
+### 工具
+
+服务器提供六个核心工具:
+
+#### 查询工具
+
+- `read_query`
+  - 执行 SELECT 查询从数据库读取数据
+  - 输入:
+    - `query`(字符串):要执行的 SELECT SQL 查询
+  - 返回:查询结果作为对象数组
+
+- `write_query`
+  - 执行 INSERT、UPDATE 或 DELETE 查询
+  - 输入:
+    - `query`(字符串):SQL 修改查询
+  - 返回:`{ affected_rows: number }`
+
+- `create_table`
+  - 在数据库中创建新表
+  - 输入:
+    - `query`(字符串):CREATE TABLE SQL 语句
+  - 返回:表创建确认
+
+#### 模式工具
+
+- `list_tables`
+  - 获取数据库中所有表的列表
+  - 无需输入
+  - 返回:表名数组
+
+- `describe-table`
+  - 查看特定表的模式信息
+  - 输入:
+    - `table_name`(字符串):要描述的表名
+  - 返回:包含名称和类型的列定义数组
+
+#### 分析工具
+
+- `append_insight`
+  - 向备忘录资源添加新的商业洞察
+  - 输入:
+    - `insight`(字符串):从数据分析中发现的商业洞察
+  - 返回:洞察添加确认
+  - 触发 memo://insights 资源更新
+
+## 在 Claude Desktop 中使用
+
+### uv
+
+```bash
+# 将服务器添加到您的 claude_desktop_config.json
+"mcpServers": {
+  "sqlite": {
+    "command": "uv",
+    "args": [
+      "--directory",
+      "parent_of_servers_repo/servers/src/sqlite",
+      "run",
+      "mcp-server-sqlite",
+      "--db-path",
+      "~/test.db"
+    ]
+  }
+}
+```
+
+### Docker
+
+```json
+# 将服务器添加到您的 claude_desktop_config.json
+"mcpServers": {
+  "sqlite": {
+    "command": "docker",
+    "args": [
+      "run",
+      "--rm",
+      "-i",
+      "-v",
+      "mcp-test:/mcp",
+      "mcp/sqlite",
+      "--db-path",
+      "/mcp/test.db"
+    ]
+  }
+}
+```
+
+## 在 VS Code 中使用
+
+快速安装,请点击下方安装按钮:
+
+[![在 VS Code 中使用 UV 安装](https://img.shields.io/badge/VS_Code-UV-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%22%2C%22default%22%3A%22%24%7BworkspaceFolder%7D%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-sqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D) [![在 VS Code Insiders 中使用 UV 安装](https://img.shields.io/badge/VS_Code_Insiders-UV-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%22%2C%22default%22%3A%22%24%7BworkspaceFolder%7D%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-sqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D&quality=insiders)
+
+[![在 VS Code 中使用 Docker 安装](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%20(within%20container)%22%2C%22default%22%3A%22%2Fmcp%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-v%22%2C%22mcp-sqlite%3A%2Fmcp%22%2C%22mcp%2Fsqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D) [![在 VS Code Insiders 中使用 Docker 安装](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%20(within%20container)%22%2C%22default%22%3A%22%2Fmcp%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-v%22%2C%22mcp-sqlite%3A%2Fmcp%22%2C%22mcp%2Fsqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D&quality=insiders)
+
+手动安装时,请将以下 JSON 块添加到 VS Code 的用户设置 (JSON) 文件中。您可以按 `Ctrl + Shift + P` 并输入 `Preferences: Open Settings (JSON)` 来完成此操作。
+
+或者,您可以将其添加到工作区中名为 `.vscode/mcp.json` 的文件中。这将允许您与他人共享配置。
+
+> 注意:使用 `mcp.json` 文件时需要 `mcp` 键。
+
+### uv
+
+```json
+{
+  "mcp": {
+    "inputs": [
+      {
+        "type": "promptString",
+        "id": "db_path",
+        "description": "SQLite 数据库路径",
+        "default": "${workspaceFolder}/db.sqlite"
+      }
+    ],
+    "servers": {
+      "sqlite": {
+        "command": "uvx",
+        "args": [
+          "mcp-server-sqlite",
+          "--db-path",
+          "${input:db_path}"
+        ]
+      }
+    }
+  }
+}
+```
+
+### Docker
+
+```json
+{
+  "mcp": {
+    "inputs": [
+      {
+        "type": "promptString",
+        "id": "db_path",
+        "description": "SQLite 数据库路径(容器内)",
+        "default": "/mcp/db.sqlite"
+      }
+    ],
+    "servers": {
+      "sqlite": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "--rm",
+          "-v",
+          "mcp-sqlite:/mcp",
+          "mcp/sqlite",
+          "--db-path",
+          "${input:db_path}"
+        ]
+      }
+    }
+  }
+}
+```
+
+## 构建
+
+Docker:
+
+```bash
+docker build -t mcp/sqlite .
+```
+
+## 使用 MCP 检查器测试
+
+```bash
+uv add "mcp[cli]"
+mcp dev src/mcp_server_sqlite/server.py:wrapper  
+```
+
+## 许可证
+
+此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。

+ 206 - 0
mcp-servers/sqlite/README.md

@@ -0,0 +1,206 @@
+# SQLite MCP Server
+
+> <https://github.com/modelcontextprotocol/servers-archived/tree/main/src/sqlite>
+
+## Overview
+
+A Model Context Protocol (MCP) server implementation that provides database interaction and business intelligence capabilities through SQLite. This server enables running SQL queries, analyzing business data, and automatically generating business insight memos.
+
+## Components
+
+### Resources
+
+The server exposes a single dynamic resource:
+
+- `memo://insights`: A continuously updated business insights memo that aggregates discovered insights during analysis
+  - Auto-updates as new insights are discovered via the append-insight tool
+
+### Prompts
+
+The server provides a demonstration prompt:
+
+- `mcp-demo`: Interactive prompt that guides users through database operations
+  - Required argument: `topic` - The business domain to analyze
+  - Generates appropriate database schemas and sample data
+  - Guides users through analysis and insight generation
+  - Integrates with the business insights memo
+
+### Tools
+
+The server offers six core tools:
+
+#### Query Tools
+
+- `read_query`
+  - Execute SELECT queries to read data from the database
+  - Input:
+    - `query` (string): The SELECT SQL query to execute
+  - Returns: Query results as array of objects
+
+- `write_query`
+  - Execute INSERT, UPDATE, or DELETE queries
+  - Input:
+    - `query` (string): The SQL modification query
+  - Returns: `{ affected_rows: number }`
+
+- `create_table`
+  - Create new tables in the database
+  - Input:
+    - `query` (string): CREATE TABLE SQL statement
+  - Returns: Confirmation of table creation
+
+#### Schema Tools
+
+- `list_tables`
+  - Get a list of all tables in the database
+  - No input required
+  - Returns: Array of table names
+
+- `describe-table`
+  - View schema information for a specific table
+  - Input:
+    - `table_name` (string): Name of table to describe
+  - Returns: Array of column definitions with names and types
+
+#### Analysis Tools
+
+- `append_insight`
+  - Add new business insights to the memo resource
+  - Input:
+    - `insight` (string): Business insight discovered from data analysis
+  - Returns: Confirmation of insight addition
+  - Triggers update of memo://insights resource
+
+## Usage with Claude Desktop
+
+### uv
+
+```bash
+# Add the server to your claude_desktop_config.json
+"mcpServers": {
+  "sqlite": {
+    "command": "uv",
+    "args": [
+      "--directory",
+      "parent_of_servers_repo/servers/src/sqlite",
+      "run",
+      "mcp-server-sqlite",
+      "--db-path",
+      "~/test.db"
+    ]
+  }
+}
+```
+
+### Docker
+
+```json
+# Add the server to your claude_desktop_config.json
+"mcpServers": {
+  "sqlite": {
+    "command": "docker",
+    "args": [
+      "run",
+      "--rm",
+      "-i",
+      "-v",
+      "mcp-test:/mcp",
+      "mcp/sqlite",
+      "--db-path",
+      "/mcp/test.db"
+    ]
+  }
+}
+```
+
+## Usage with VS Code
+
+For quick installation, click the installation buttons below:
+
+[![Install with UV in VS Code](https://img.shields.io/badge/VS_Code-UV-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%22%2C%22default%22%3A%22%24%7BworkspaceFolder%7D%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-sqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D) [![Install with UV in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-UV-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%22%2C%22default%22%3A%22%24%7BworkspaceFolder%7D%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22mcp-server-sqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D&quality=insiders)
+
+[![Install with Docker in VS Code](https://img.shields.io/badge/VS_Code-Docker-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%20(within%20container)%22%2C%22default%22%3A%22%2Fmcp%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-v%22%2C%22mcp-sqlite%3A%2Fmcp%22%2C%22mcp%2Fsqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D) [![Install with Docker in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Docker-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=sqlite&inputs=%5B%7B%22type%22%3A%22promptString%22%2C%22id%22%3A%22db_path%22%2C%22description%22%3A%22SQLite%20Database%20Path%20(within%20container)%22%2C%22default%22%3A%22%2Fmcp%2Fdb.sqlite%22%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-v%22%2C%22mcp-sqlite%3A%2Fmcp%22%2C%22mcp%2Fsqlite%22%2C%22--db-path%22%2C%22%24%7Binput%3Adb_path%7D%22%5D%7D&quality=insiders)
+
+For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing `Ctrl + Shift + P` and typing `Preferences: Open Settings (JSON)`.
+
+Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace. This will allow you to share the configuration with others.
+
+> Note that the `mcp` key is needed when using the `mcp.json` file.
+
+### uv
+
+```json
+{
+  "mcp": {
+    "inputs": [
+      {
+        "type": "promptString",
+        "id": "db_path",
+        "description": "SQLite Database Path",
+        "default": "${workspaceFolder}/db.sqlite"
+      }
+    ],
+    "servers": {
+      "sqlite": {
+        "command": "uvx",
+        "args": [
+          "mcp-server-sqlite",
+          "--db-path",
+          "${input:db_path}"
+        ]
+      }
+    }
+  }
+}
+```
+
+### Docker
+
+```json
+{
+  "mcp": {
+    "inputs": [
+      {
+        "type": "promptString",
+        "id": "db_path",
+        "description": "SQLite Database Path (within container)",
+        "default": "/mcp/db.sqlite"
+      }
+    ],
+    "servers": {
+      "sqlite": {
+        "command": "docker",
+        "args": [
+          "run",
+          "-i",
+          "--rm",
+          "-v",
+          "mcp-sqlite:/mcp",
+          "mcp/sqlite",
+          "--db-path",
+          "${input:db_path}"
+        ]
+      }
+    }
+  }
+}
+```
+
+## Building
+
+Docker:
+
+```bash
+docker build -t mcp/sqlite .
+```
+
+## Test with MCP inspector
+
+```bash
+uv add "mcp[cli]"
+mcp dev src/mcp_server_sqlite/server.py:wrapper  
+```
+
+## License
+
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

+ 38 - 0
mcp-servers/sqlite/init.go

@@ -0,0 +1,38 @@
+package sqlite
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"sqlite",
+			"SQLite",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("SQLite"),
+			mcpservers.WithTags([]string{"database"}),
+			mcpservers.WithGitHubURL(
+				"https://github.com/modelcontextprotocol/servers-archived/tree/main/src/sqlite",
+			),
+			mcpservers.WithDescription(
+				"A Model Context Protocol (MCP) server implementation that provides database interaction and business intelligence features through SQLite. The server supports running SQL queries, analyzing business data, and automatically generating business insight memos.",
+			),
+			mcpservers.WithDescriptionCN(
+				"一种模型上下文协议(MCP)服务器实现,通过SQLite提供数据库交互和商业智能功能。该服务器支持运行SQL查询、分析业务数据以及自动生成业务洞察备忘录。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 83 - 0
mcp-servers/stock-analysis/README.cn.md

@@ -0,0 +1,83 @@
+# MCP 股票分析服务器 by Akshay Bavkar
+
+这是一个MCP服务器,使用Yahoo Finance API提供实时和历史印度股票数据访问。它允许通过Claude Desktop、Cursor和其他兼容MCP的代理将股票数据检索用作本地LLM的上下文。
+
+## 可用功能
+
+- **getStockQuote**: 获取印度股票的当前报价。
+- **getHistoricalData**: 获取印度股票的历史数据,支持自定义时间间隔和周期。
+
+---
+
+## 安装
+
+```bash
+npm install mcp-stock-analysis
+```
+
+## 在主机中使用
+
+配置您的MCP客户端(例如Claude Desktop)连接到服务器:
+
+```JSON
+{
+  "mcpServers": {
+    "mcp-stock-analysis": {
+      "command": "npx",
+      "args": ["-y", "mcp-stock-analysis"],
+    }
+  }
+}
+```
+
+## 工具
+
+### `getStockQuote`
+
+获取股票的当前报价。
+
+输入:
+
+`symbol`: 股票代码(例如:RELIANCE.NS)
+
+输出:
+
+```JSON
+{
+  "symbol": "RELIANCE.NS",
+  "price": 2748.15,
+  "name": "Reliance Industries Ltd"
+}
+```
+
+### `getHistoricalData`
+
+获取股票的历史数据。
+
+输入:
+
+- `symbol`: 股票代码(例如:RELIANCE.NS)
+- `interval`: 数据的时间间隔(`daily`、`weekly`或`monthly`)(可选,默认:`daily`)
+
+输出:
+
+```JSON
+{
+    "date": "2025-03-21T00:00:00+05:30",
+    "open": 2735,
+    "high": 2750,
+    "low": 2725,
+    "close": 2748.15,
+    "volume": 21780769
+}
+```
+
+包含历史数据的JSON对象。输出结构取决于interval参数。
+
+## 贡献
+
+欢迎贡献!请提交issue或pull request。
+
+### 许可证
+
+MIT

+ 83 - 0
mcp-servers/stock-analysis/README.md

@@ -0,0 +1,83 @@
+# MCP Stock Analysis Server by Akshay Bavkar
+
+This is an MCP server that provides access to real-time and historical Indian stock data using the Yahoo Finance API. It allows stock data retrieval to be used as context by local LLMs via Claude Desktop, Cursor, and other MCP-compatible agents.
+
+## Available Features
+
+- **getStockQuote**: Get the current quote for an Indian stock.
+- **getHistoricalData**: Get historical data for an Indian stock with custom intervals and periods.
+
+---
+
+## Setup
+
+```bash
+npm install mcp-stock-analysis
+```
+
+## Usage in Host
+
+Configure your MCP client (e.g., Claude Desktop) to connect to the server:
+
+```JSON
+{
+  "mcpServers": {
+    "mcp-stock-analysis": {
+      "command": "npx",
+      "args": ["-y", "mcp-stock-analysis"],
+    }
+  }
+}
+```
+
+## Tools
+
+### `getStockQuote`
+
+Get the current quote for a stock.
+
+Input:
+
+`symbol`: The stock symbol (e.g., RELIANCE.NS)
+
+Output:
+
+```JSON
+{
+  "symbol": "RELIANCE.NS",
+  "price": 2748.15,
+  "name": "Reliance Industries Ltd"
+}
+```
+
+### `getHistoricalData`
+
+Get historical data for a stock.
+
+Input:
+
+- `symbol`: the stock symbol (e.g., RELIANCE.NS)
+- `interval`: the time interval for the data (`daily`, `weekly`, or `monthly`) (optional, default: `daily`)
+
+Output:
+
+```JSON
+{
+    "date": "2025-03-21T00:00:00+05:30",
+    "open": 2735,
+    "high": 2750,
+    "low": 2725,
+    "close": 2748.15,
+    "volume": 21780769
+}
+```
+
+JSON object containing the historical data. The structure of the output depends on the interval parameter.
+
+## Contributing
+
+Contributions are welcome! Please open an issue or pull request.
+
+### License
+
+MIT

+ 38 - 0
mcp-servers/stock-analysis/init.go

@@ -0,0 +1,38 @@
+package stockanalysis
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+//go:embed README.cn.md
+var readmeCN string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"stock-analysis",
+			"Stock Analysis",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("股票分析"),
+			mcpservers.WithGitHubURL(
+				"https://github.com/giptilabs/mcp-stock-analysis",
+			),
+			mcpservers.WithTags([]string{"stock"}),
+			mcpservers.WithDescription(
+				"Use Yahoo Finance API to provide access to real-time and historical Indian stock data, allowing local LLMs to retrieve stock information through MCP-compatible agents (such as Claude Desktop and Cursor).e Yahoo Finance API to provide access to real-time and historical Indian stock data, allowing local LLMs to retrieve stock information through MCP-compatible agents (such as Claude Desktop and Cursor).",
+			),
+			mcpservers.WithDescriptionCN(
+				"通过Yahoo Finance API提供对实时和历史印度股票数据的访问,使本地LLM能够通过与MCP兼容的代理(如Claude Desktop和Cursor)检索股票信息。",
+			),
+			mcpservers.WithReadme(readme),
+			mcpservers.WithReadmeCN(readmeCN),
+		),
+	)
+}

+ 186 - 0
mcp-servers/unionpay/README.md

@@ -0,0 +1,186 @@
+## 1. 简介
+
+> <https://www.npmjs.com/package/unionpay-mcp-server>
+
+unionpay-mcp-server是银联基于MCP协议为AI智能体提供的支付工具(MCP Server),各类支持MCP协议的智能体应用均可安全、便捷地接入银联支付能力。以下是一个行程规划智能体为用户提供行程规划和酒店预定的示例:
+传统方式下,用户需要自主查询酒店、对比酒店价格,并完成预订和支付。 智能体模式下,用户只需在智能体应用中输入出行需求(如出发地、目的地、出行时间、预算偏好等),智能体即可自动分析需求,并推荐最佳酒店选择方案,用户确认后,智能体通过银联MCP Server生成支付订单,待用户支付后,智能体完成线上酒店预订操作,并将订单信息同步给用户。整个流程无需人工反复查询和操作,高效便捷。
+
+## 2. 使用和配置
+
+使用前,需先注册成为银联网络商户,并开通业务权限,获取商户私钥。之后,即可在主流的支持MCP的客户端应用上使用银联MCP Server中的各类支付工具。
+
+### 在 Cursor 中使用
+
+在 Cursor 项目中的 `.cursor/mcp.json` 加入如下配置:
+
+```json
+{
+  "mcpServers": {
+    "unionpay-mcp-server": {
+ "command": "npx",
+ "args": [
+  "-y",
+  "unionpay-mcp-server"
+ ],
+ "env": {
+  "UP_ACQ_INS_CODE": "<机构号,收单机构接入必填>",
+  "UP_ACCESS_TYPE": "<必填,0-商户直连|1-收单机构接入|2-平台商户接入>",
+  "UP_MER_ID": "<商户号,商户直连接入必填>",
+  "UP_TR_ID": "<trId, 签约支付类交易必填>",
+  "UP_TOKEN_TYPE": "<token类型,使用签约支付工具时必填,01-标记申请>",
+  "UP_FRONT_URL": "<前台跳转地址,选填>",
+  "UP_FRONT_FAIL_URL": "<失败跳转地址,选填>",
+  "UP_BACK_URL": "<后台通知地址,选填>",
+  "UP_SIGN_CERT_PATH": "<机构/商户签名证书绝对路径,必填>",
+  "UP_SIGN_CERT_PWD": "<签名证书密码,必填>",
+  "UP_VALIDATE_CERT_DIR": "<验签证书绝对路径,必填>",
+  "UP_NEED_ENCRYPT": "<敏感信息是否加密,0-不加密,1-加密,可选,默认不加密>",
+  "UP_ENCRYPT_CERT_PATH": "<如需加密,加密证书绝对路径,可选>",
+  "UP_DECRYPT_CERT_PATH": "<如需加解密,解密证书绝对路径,可选>",
+  "UP_ENCRYPT_CERT_PWD": "<如需加解密,解密证书密码,可选>",
+  "UP_LOG_DIR": "日志打印地址,选填,默认在HOME目录打印日志",
+  "UP_URL": "<银联交易地址, 选填,可填写生产或验证环境PM地址,不填默认生产地址>",
+  "UP_TIME_OUT": "<交易地址超时时间(单位毫秒), 选填,默认5000毫秒>",
+  "UP_AVAILABLE_TOOLS": "<可用工具列表,选填,默认all,可按需配置工具名称,英文逗号分隔,如create-contract-order-unionpay-payment,create-contract-unionpay-payment>"
+ }
+    },
+    "其他工具": { 
+      "...": "..."
+    }
+  }
+}
+```
+
+### 在 Cline 中使用
+
+在 Cline 设置中找到 `cline_mcp_settings.json` 配置文件,并加入如下配置:
+
+```json
+{
+  "mcpServers": {
+    "unionpay-mcp-server": {
+      "command": "npx",
+      "args": ["-y", "unionpay-mcp-server"],
+      "env": {
+  "UP_ACQ_INS_CODE": "<机构号,收单机构接入必填>",
+  "UP_ACCESS_TYPE": "<必填,0-商户直连|1-收单机构接入|2-平台商户接入>",
+  "UP_MER_ID": "<商户号,商户直连接入必填>",
+  "UP_TR_ID": "<trId, 签约支付类交易必填>",
+  "UP_TOKEN_TYPE": "<token类型,使用签约支付工具时必填,01-标记申请>",
+  "UP_FRONT_URL": "<前台跳转地址,选填>",
+  "UP_FRONT_FAIL_URL": "<失败跳转地址,选填>",
+  "UP_BACK_URL": "<后台通知地址,选填>",
+  "UP_SIGN_CERT_PATH": "<机构/商户签名证书绝对路径,必填>",
+  "UP_SIGN_CERT_PWD": "<签名证书密码,必填>",
+  "UP_VALIDATE_CERT_DIR": "<验签证书绝对路径,必填>",
+  "UP_NEED_ENCRYPT": "<敏感信息是否加密,0-不加密,1-加密,可选,默认不加密>",
+  "UP_ENCRYPT_CERT_PATH": "<如需加密,加密证书绝对路径,可选>",
+  "UP_DECRYPT_CERT_PATH": "<如需加解密,解密证书绝对路径,可选>",
+  "UP_ENCRYPT_CERT_PWD": "<如需加解密,解密证书密码,可选>",
+  "UP_LOG_DIR": "日志打印地址,选填,默认在HOME目录打印日志",
+  "UP_URL": "<银联交易地址, 选填,可填写生产或验证环境PM地址,不填默认生产地址>",
+  "UP_TIME_OUT": "<交易地址超时时间(单位毫秒), 选填,默认5000毫秒>",
+  "UP_AVAILABLE_TOOLS": "<可用工具列表,选填,默认all,可按需配置工具名称,英文逗号分隔,如create-contract-order-unionpay-payment,create-contract-unionpay-payment>"
+      },
+      "disable": false,
+      "autoApprove": []
+    },
+    "其他工具": { 
+      "...": "..."
+    }
+  }
+}
+```
+
+### 在其他 MCP Client中使用
+
+在其它支持MCP的客户端中,通过合理配置 Server 进程启动方式`npx -y unionpay-mcp-server` ,并按下文介绍设置环境参数即可使用。
+
+### 所有参数
+
+银联MCP Server通过环境变量接收参数。
+
+```json
+ {
+  "UP_ACQ_INS_CODE": "<机构号,收单机构接入必填>",
+  "UP_ACCESS_TYPE": "<必填,0-商户直连|1-收单机构接入|2-平台商户接入>",
+  "UP_MER_ID": "<商户号,商户直连接入必填>",
+  "UP_TR_ID": "<trId, 签约支付类交易必填>",
+  "UP_TOKEN_TYPE": "<token类型,使用签约支付工具时必填,01-标记申请>",
+  "UP_FRONT_URL": "<前台跳转地址,选填>",
+  "UP_FRONT_FAIL_URL": "<失败跳转地址,选填>",
+  "UP_BACK_URL": "<后台通知地址,选填>",
+  "UP_SIGN_CERT_PATH": "<机构/商户签名证书绝对路径,必填>",
+  "UP_SIGN_CERT_PWD": "<签名证书密码,必填>",
+  "UP_VALIDATE_CERT_DIR": "<验签证书绝对路径,必填>",
+  "UP_NEED_ENCRYPT": "<敏感信息是否加密,0-不加密,1-加密,可选,默认不加密>",
+  "UP_ENCRYPT_CERT_PATH": "<如需加密,加密证书绝对路径,可选>",
+  "UP_DECRYPT_CERT_PATH": "<如需加解密,解密证书绝对路径,可选>",
+  "UP_ENCRYPT_CERT_PWD": "<如需加解密,解密证书密码,可选>",
+  "UP_LOG_DIR": "日志打印地址,选填,默认在HOME目录打印日志",
+  "UP_URL": "<银联交易地址, 选填,可填写生产或验证环境PM地址,不填默认生产地址>",
+  "UP_TIME_OUT": "<交易地址超时时间(单位毫秒), 选填,默认5000毫秒>",
+  "UP_AVAILABLE_TOOLS": "<可用工具列表,选填,默认all,可按需配置工具名称,英文逗号分隔,如create-contract-order-unionpay-payment,create-contract-unionpay-payment>"
+}
+```
+
+MCP Server配置:
+
+ "UP_LOG_DIR": "日志打印地址,选填,默认在HOME目录打印日志"
+
+## 3. 使用 MCP Inspector 调试
+
+开发人员可使用 MCP Inspector 来调试和了解银联 MCP Server 的各项功能,具体操作如下:
+
+1.通过export设置各环境变量;
+
+2.执行 npx -y @modelcontextprotocol/inspector && npx -y unionpay-mcp-serve,启动 MCP Inspector;
+
+3.在 MCP Inspector WebUI 中进行调试。
+
+## 4. 支持的能力
+
+下表列出了本版本MCP Server可用的支付工具,本版本提供能力具体使用方法参考银联开放平台签约支付产品( <https://open.unionpay.com/tjweb/acproduct/list?apiSvcId=3301> )
+
+| 名称 | 描述 | 参数 | 输出 |
+|:-----:|:----:|:----:|:----:|
+| `create-contract-order-unionpay-payment` | 创建一笔签约支付订单,并返回授权签约链接。 | - orderId: 交易订单号,格式:8至40位字母数字 <br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br>- certifTp: 证件类型,格式:2位数字<br>- certifId: 证件号码,格式:1至20位字母数字<br>- customerNm: 用户姓名,格式:1至120字母数字<br>- phoneNo: 手机号,格式:1至20位手机号<br>- riskRateInfo: 风险信息域的JSON字符串格式 | -  code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- contractUrl: 签约url |
+| `create-contract-unionpay-payment` | 发起签约交易,并返回签约信息,该交易是签约下单的后续交易,是支付的前序交易,且签约交易只需做一次,可以实现多次支付。 | - orderId: 交易订单号,格式:8至40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br> - origOrderId: 签约下单交易请求的订单号orderId<br>- origTxnTime: 签约下单交易应答的txnTime<br>- tokenType: token类型,格式:2位数字<br> | code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- tokenInfo: 签约成功后返回。token:签约协议ID, tokenEnd:标记失效时间  <br>- cardContractInfo: 银行卡签约信息<br>- protocolFlag: 电子协议签约标识|
+| `contract-pay-sms` | 创建一笔支付短信,当需要在支付前做短信验证时调用此接口| - orderId: 交易订单号,格式:8至40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br>- token: 签约交易返回的token<br>- txnAmt: 交易金额<br>- currencyCode: 交易币种,默认156人民币 | - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- contractUrl: 签约url|
+| `pay-contract-order-unionpay-payment` | 创建一笔签约支付订单,并返回用户支付结果 | orderId: 交易订单号,格式:8至40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br>- certifTp: 证件类型,格式:2位数字<br>- certifId: 证件号码,格式:1至20位字母数字<br>- customerNm: 用户姓名,格式:1至120字母数字<br>- phoneNo: 手机号,格式:1至20位手机号<br>- riskRateInfo: 风险信息域的JSON字符串格式 <br>- currencyCode: 交易币种,默认156人民币 <br>- token:  签约交易返回的token  | - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- orderId: 支付订单ID|
+| `refund-contract-order-unionpay-payment` | 创建一笔退货订单,并返回退货结果| - orderId: 交易订单号,格式:8至40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br> - origOrderId: 支付交易请求的订单号orderId<br>- origTxnTime: 交易应答的txnTime<br> - txnAmt: 需要退货的金额<br> | - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- orderId: 支付订单ID |
+| `query-unionpay-payment` | 发起查询交易,支持签约交易查询、支付交易查询、退款等查询类交易| - orderId: 交易订单号,格式:8至40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss | - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- txnAmt: 退货金额 <br>- transStatus: 交易状态<br>- tokenInfo: token域信息<br>- cardContractInfo: 银行卡签约信息 <br>- origBizMethod: 查询订单对应的原始方法<br>- origTn: 查询订单对应的原始订单号  |
+| `cancel-contract-order-unionpay-payment` | 创建一笔解约订单,并返回解约结果,该交易是签约的反向交易 | - orderId: 交易订单号,格式:8至40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br>- token: 签约交易返回的token | - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- orderId: 支付订单ID |
+| `apply-unionpay-qrCode` | 申请消费二维码,返回qrCode | - orderId: 交易订单号,格式:8~40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br>- payTimeout: 二维码有效时间 <br>- txnAmt: 交易金额,单位元| - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- qrCode: 返回的二维码链接 |
+| `refund-unionpay-qrCode` | 对之前二维码交易进行退货,仅30天之内交易可退货,多次退货累计退货金额不超过原始交易金额 | - orderId: 交易订单号,格式:8~40位字母数字<br>- txnTime: 交易时间,格式:yyyyMMddHHmmss<br>- origTxnTime: 原始交易的交易时间,格式:YYYYMMDDhhmmss<br>- origOrderId: 原始交易的订单号,格式:8~40位字母数字<br>- origQryId: 原始交易的查询ID,格式:查询订单请求返回的若干位数字<br>- txnAmt: 待退货金额,单位元 | - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br>- orderId: 支付订单ID |
+| `query-unionpay-QrCode-trade` | 发起二维码类查询交易,支持申码支付交易查询、退款等查询类交易 | - orderId: 被查询交易订单号,原交易订单号,当使用原交易orderId和txnTime查询时必填<br>- txnTime: 被查询交易交易时间,原交易时间,当使用原交易orderId和txnTime查询时必填<br>- queryId: 被查询交易流水号,当使用原交易流水号查询时必填 | - code: 系统响应码 <br>- msg: 接口响应信息<br>- txnTime: 交易时间<br> |
+
+此外对于平台商户和收单机构接入时候,需要额外在除query-unionpay-payment外的其他工具调用时候,上送如下字段:
+
+| 名称 | 描述 | 参数 |
+|-------|------|------|
+merCatCode| 商户类别       |收单接入时必填
+merName    |商户名称       |收单接入时必填
+merAbbr    |商户简称       |收单接入时必填
+subMerId   |二级商户代码   |平台商户接入时必填
+subMerName| 二级商户名称   |平台商户接入时必填
+subMerAbbr |二级商户简称   |平台商户接入时必填
+
+## 5. 如何选择合适的支付方式  
+
+在开发过程中,为了让 LLM 能更准确地选择合适的支付方式,建议在 Prompt 中清晰说明产品使用场景:
+网页支付:适用于用户在电脑屏幕上看到支付界面的场景。如果智能体应用主要运行在桌面端(PC),可以在Prompt中说明:"我的应用是桌面软件/PC网站,需要在电脑上展示支付二维码"。
+手机支付:适用于用户在手机浏览器内发起支付的场景。如果应用是手机H5页面或移动端网站,可在Prompt中说明:"我的页面是手机网页,需要直接在手机上发起在线付款"。
+更多MCP支付工具正在研发中,敬请期待。
+
+## 6. 注意事项  
+
+* 最新使用指南请以银联开放平台-银联MCP智能支付服务解决方案为准( <https://open.unionpay.com/tjweb/solution/detail?solId=613>  )
+* 银联MCP支付服务目前处于发布早期阶段,相关能力和配套设施正在持续完善中。在使用过程中,如有相关问题或建议,欢迎联系我们。
+* 在开发任何使用 MCP Server的智能体服务,并提供给用户使用时,请了解必要的安全知识,防范AI应用特有的Prompt攻击、MCP Server任意命令执行等安全风险。
+* 我们提供了MD5校验机制,参见'dist/checksums.md5'文件
+
+## 7. 使用协议  
+
+本工具是银联开放平台能力的组成部分。使用期间,请遵守中国银联开发者使用规范
+( <https://open.unionpay.com/tjweb/support/doc/online/3/122> )、开放平台《中国银联服务协议》( <https://user.95516.com/pages/misc/newAgree.html> )和相关商业行为法规。

+ 32 - 0
mcp-servers/unionpay/init.go

@@ -0,0 +1,32 @@
+package unionpay
+
+import (
+	_ "embed"
+
+	"github.com/labring/aiproxy/core/model"
+	mcpservers "github.com/labring/aiproxy/mcp-servers"
+)
+
+//go:embed README.md
+var readme string
+
+// need import in mcpregister/init.go
+func init() {
+	mcpservers.Register(
+		mcpservers.NewMcp(
+			"unionpay",
+			"UnionPay",
+			model.PublicMCPTypeDocs,
+			mcpservers.WithNameCN("银联"),
+			mcpservers.WithTags([]string{"pay"}),
+			mcpservers.WithGitHubURL("https://github.com/allvoicelab/AllVoiceLab-MCP"),
+			mcpservers.WithDescription(
+				"UnionPay MCP Server, helps you easily integrate the transaction creation, query, and refund capabilities of the UnionPay MCP server into your LLM application, allowing you to further develop smart tools with payment capabilities.",
+			),
+			mcpservers.WithDescriptionCN(
+				"银联开放平台提供的MCP服务器,可以帮助您轻松地将银联开放平台的交易创建、查询、退款等能力集成到您的LLM应用中,让您进一步开发带有支付功能的智能工具。",
+			),
+			mcpservers.WithReadme(readme),
+		),
+	)
+}

Some files were not shown because too many files changed in this diff