feat(repo): 整理 Qoder Skills 和 MCP 配置到仓库
- 添加 5 个用户级别 Skills: - auto-commit: 自动 Git 提交 - karpathy-guidelines: 编码规范指南 - opencli-websearch: 多源网络搜索 - pdf-reader: PDF 内容提取 - repo-analyzer: 项目深度分析 - 添加 Playwright MCP 配置 (21 个浏览器自动化工具) - 创建完整的 README.md 文档说明
This commit is contained in:
5
mcps/playwright/SERVER_METADATA.json
Normal file
5
mcps/playwright/SERVER_METADATA.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "playwright",
|
||||
"source": "user",
|
||||
"toolCount": 21
|
||||
}
|
||||
47
mcps/playwright/tools/browser_click.json
Normal file
47
mcps/playwright/tools/browser_click.json
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "browser_click",
|
||||
"description": "Perform click on a web page",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"button": {
|
||||
"description": "Button to click, defaults to left",
|
||||
"enum": [
|
||||
"left",
|
||||
"right",
|
||||
"middle"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"doubleClick": {
|
||||
"description": "Whether to perform a double click instead of a single click",
|
||||
"type": "boolean"
|
||||
},
|
||||
"element": {
|
||||
"description": "Human-readable element description used to obtain permission to interact with the element",
|
||||
"type": "string"
|
||||
},
|
||||
"modifiers": {
|
||||
"description": "Modifier keys to press",
|
||||
"items": {
|
||||
"enum": [
|
||||
"Alt",
|
||||
"Control",
|
||||
"ControlOrMeta",
|
||||
"Meta",
|
||||
"Shift"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"ref": {
|
||||
"description": "Exact target element reference from the page snapshot",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ref"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
9
mcps/playwright/tools/browser_close.json
Normal file
9
mcps/playwright/tools/browser_close.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "browser_close",
|
||||
"description": "Close the page",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": null,
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
31
mcps/playwright/tools/browser_console_messages.json
Normal file
31
mcps/playwright/tools/browser_console_messages.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "browser_console_messages",
|
||||
"description": "Returns all console messages",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"all": {
|
||||
"description": "Return all console messages since the beginning of the session, not just since the last navigation. Defaults to false.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"filename": {
|
||||
"description": "Filename to save the console messages to. If not provided, messages are returned as text.",
|
||||
"type": "string"
|
||||
},
|
||||
"level": {
|
||||
"default": "info",
|
||||
"description": "Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to \"info\".",
|
||||
"enum": [
|
||||
"error",
|
||||
"warning",
|
||||
"info",
|
||||
"debug"
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"level"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
31
mcps/playwright/tools/browser_drag.json
Normal file
31
mcps/playwright/tools/browser_drag.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "browser_drag",
|
||||
"description": "Perform drag and drop between two elements",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"endElement": {
|
||||
"description": "Human-readable target element description used to obtain the permission to interact with the element",
|
||||
"type": "string"
|
||||
},
|
||||
"endRef": {
|
||||
"description": "Exact target element reference from the page snapshot",
|
||||
"type": "string"
|
||||
},
|
||||
"startElement": {
|
||||
"description": "Human-readable source element description used to obtain the permission to interact with the element",
|
||||
"type": "string"
|
||||
},
|
||||
"startRef": {
|
||||
"description": "Exact source element reference from the page snapshot",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"startElement",
|
||||
"startRef",
|
||||
"endElement",
|
||||
"endRef"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
28
mcps/playwright/tools/browser_evaluate.json
Normal file
28
mcps/playwright/tools/browser_evaluate.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "browser_evaluate",
|
||||
"description": "Evaluate JavaScript expression on page or element",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"element": {
|
||||
"description": "Human-readable element description used to obtain permission to interact with the element",
|
||||
"type": "string"
|
||||
},
|
||||
"filename": {
|
||||
"description": "Filename to save the result to. If not provided, result is returned as text.",
|
||||
"type": "string"
|
||||
},
|
||||
"function": {
|
||||
"description": "() =\u003e { /* code */ } or (element) =\u003e { /* code */ } when element is provided",
|
||||
"type": "string"
|
||||
},
|
||||
"ref": {
|
||||
"description": "Exact target element reference from the page snapshot",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"function"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
17
mcps/playwright/tools/browser_file_upload.json
Normal file
17
mcps/playwright/tools/browser_file_upload.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "browser_file_upload",
|
||||
"description": "Upload one or multiple files",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"paths": {
|
||||
"description": "The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": null,
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
55
mcps/playwright/tools/browser_fill_form.json
Normal file
55
mcps/playwright/tools/browser_fill_form.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"name": "browser_fill_form",
|
||||
"description": "Fill multiple form fields",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"fields": {
|
||||
"description": "Fields to fill in",
|
||||
"items": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "Human-readable field name",
|
||||
"type": "string"
|
||||
},
|
||||
"ref": {
|
||||
"description": "Exact target field reference from the page snapshot",
|
||||
"type": "string"
|
||||
},
|
||||
"selector": {
|
||||
"description": "CSS or role selector for the field element, when \"ref\" is not available. Either \"selector\" or \"ref\" is required.",
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"description": "Type of the field",
|
||||
"enum": [
|
||||
"textbox",
|
||||
"checkbox",
|
||||
"radio",
|
||||
"combobox",
|
||||
"slider"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
"description": "Value to fill in the field. If the field is a checkbox, the value should be `true` or `false`. If the field is a combobox, the value should be the text of the option.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"type",
|
||||
"ref",
|
||||
"value"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"fields"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
20
mcps/playwright/tools/browser_handle_dialog.json
Normal file
20
mcps/playwright/tools/browser_handle_dialog.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "browser_handle_dialog",
|
||||
"description": "Handle a dialog",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"accept": {
|
||||
"description": "Whether to accept the dialog.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"promptText": {
|
||||
"description": "The text of the prompt in case of a prompt dialog.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"accept"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
20
mcps/playwright/tools/browser_hover.json
Normal file
20
mcps/playwright/tools/browser_hover.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "browser_hover",
|
||||
"description": "Hover over element on page",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"element": {
|
||||
"description": "Human-readable element description used to obtain permission to interact with the element",
|
||||
"type": "string"
|
||||
},
|
||||
"ref": {
|
||||
"description": "Exact target element reference from the page snapshot",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ref"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
16
mcps/playwright/tools/browser_navigate.json
Normal file
16
mcps/playwright/tools/browser_navigate.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "browser_navigate",
|
||||
"description": "Navigate to a URL",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"url": {
|
||||
"description": "The URL to navigate to",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"url"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
9
mcps/playwright/tools/browser_navigate_back.json
Normal file
9
mcps/playwright/tools/browser_navigate_back.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "browser_navigate_back",
|
||||
"description": "Go back to the previous page in the history",
|
||||
"inputSchema": {
|
||||
"properties": {},
|
||||
"required": null,
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
37
mcps/playwright/tools/browser_network_requests.json
Normal file
37
mcps/playwright/tools/browser_network_requests.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "browser_network_requests",
|
||||
"description": "Returns all network requests since loading the page",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"filename": {
|
||||
"description": "Filename to save the network requests to. If not provided, requests are returned as text.",
|
||||
"type": "string"
|
||||
},
|
||||
"filter": {
|
||||
"description": "Only return requests whose URL matches this regexp (e.g. \"/api/.*user\").",
|
||||
"type": "string"
|
||||
},
|
||||
"requestBody": {
|
||||
"default": false,
|
||||
"description": "Whether to include request body. Defaults to false.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"requestHeaders": {
|
||||
"default": false,
|
||||
"description": "Whether to include request headers. Defaults to false.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"static": {
|
||||
"default": false,
|
||||
"description": "Whether to include successful static resources like images, fonts, scripts, etc. Defaults to false.",
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"static",
|
||||
"requestBody",
|
||||
"requestHeaders"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
16
mcps/playwright/tools/browser_press_key.json
Normal file
16
mcps/playwright/tools/browser_press_key.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "browser_press_key",
|
||||
"description": "Press a key on the keyboard",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"key": {
|
||||
"description": "Name of the key to press or a character to generate, such as `ArrowLeft` or `a`",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"key"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
21
mcps/playwright/tools/browser_resize.json
Normal file
21
mcps/playwright/tools/browser_resize.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "browser_resize",
|
||||
"description": "Resize the browser window",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"height": {
|
||||
"description": "Height of the browser window",
|
||||
"type": "number"
|
||||
},
|
||||
"width": {
|
||||
"description": "Width of the browser window",
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"width",
|
||||
"height"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
18
mcps/playwright/tools/browser_run_code.json
Normal file
18
mcps/playwright/tools/browser_run_code.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "browser_run_code",
|
||||
"description": "Run Playwright code snippet",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"code": {
|
||||
"description": "A JavaScript function containing Playwright code to execute. It will be invoked with a single argument, page, which you can use for any page interaction. For example: `async (page) =\u003e { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }`",
|
||||
"type": "string"
|
||||
},
|
||||
"filename": {
|
||||
"description": "Load code from the specified file. If both code and filename are provided, code will be ignored.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": null,
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
28
mcps/playwright/tools/browser_select_option.json
Normal file
28
mcps/playwright/tools/browser_select_option.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "browser_select_option",
|
||||
"description": "Select an option in a dropdown",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"element": {
|
||||
"description": "Human-readable element description used to obtain permission to interact with the element",
|
||||
"type": "string"
|
||||
},
|
||||
"ref": {
|
||||
"description": "Exact target element reference from the page snapshot",
|
||||
"type": "string"
|
||||
},
|
||||
"values": {
|
||||
"description": "Array of values to select in the dropdown. This can be a single value or multiple values.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ref",
|
||||
"values"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
18
mcps/playwright/tools/browser_snapshot.json
Normal file
18
mcps/playwright/tools/browser_snapshot.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "browser_snapshot",
|
||||
"description": "Capture accessibility snapshot of the current page, this is better than screenshot",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"depth": {
|
||||
"description": "Limit the depth of the snapshot tree",
|
||||
"type": "number"
|
||||
},
|
||||
"filename": {
|
||||
"description": "Save snapshot to markdown file instead of returning it in the response.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": null,
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
26
mcps/playwright/tools/browser_tabs.json
Normal file
26
mcps/playwright/tools/browser_tabs.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "browser_tabs",
|
||||
"description": "List, create, close, or select a browser tab.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"action": {
|
||||
"description": "Operation to perform",
|
||||
"enum": [
|
||||
"list",
|
||||
"new",
|
||||
"close",
|
||||
"select"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"index": {
|
||||
"description": "Tab index, used for close/select. If omitted for close, current tab is closed.",
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"action"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
37
mcps/playwright/tools/browser_take_screenshot.json
Normal file
37
mcps/playwright/tools/browser_take_screenshot.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "browser_take_screenshot",
|
||||
"description": "Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"element": {
|
||||
"description": "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.",
|
||||
"type": "string"
|
||||
},
|
||||
"filename": {
|
||||
"description": "File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified. Prefer relative file names to stay within the output directory.",
|
||||
"type": "string"
|
||||
},
|
||||
"fullPage": {
|
||||
"description": "When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Cannot be used with element screenshots.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"ref": {
|
||||
"description": "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.",
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"default": "png",
|
||||
"description": "Image format for the screenshot. Default is png.",
|
||||
"enum": [
|
||||
"png",
|
||||
"jpeg"
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
33
mcps/playwright/tools/browser_type.json
Normal file
33
mcps/playwright/tools/browser_type.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "browser_type",
|
||||
"description": "Type text into editable element",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"element": {
|
||||
"description": "Human-readable element description used to obtain permission to interact with the element",
|
||||
"type": "string"
|
||||
},
|
||||
"ref": {
|
||||
"description": "Exact target element reference from the page snapshot",
|
||||
"type": "string"
|
||||
},
|
||||
"slowly": {
|
||||
"description": "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.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"submit": {
|
||||
"description": "Whether to submit entered text (press Enter after)",
|
||||
"type": "boolean"
|
||||
},
|
||||
"text": {
|
||||
"description": "Text to type into the element",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ref",
|
||||
"text"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
22
mcps/playwright/tools/browser_wait_for.json
Normal file
22
mcps/playwright/tools/browser_wait_for.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "browser_wait_for",
|
||||
"description": "Wait for text to appear or disappear or a specified time to pass",
|
||||
"inputSchema": {
|
||||
"properties": {
|
||||
"text": {
|
||||
"description": "The text to wait for",
|
||||
"type": "string"
|
||||
},
|
||||
"textGone": {
|
||||
"description": "The text to wait for to disappear",
|
||||
"type": "string"
|
||||
},
|
||||
"time": {
|
||||
"description": "The time to wait in seconds",
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": null,
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user