关于 AiDD MCP Server
AiDD MCP Server(现名 SkyDeckAI Code)为 AI 驱动的开发工作流提供 MCP 工具,面向软件开发任务。它涵盖文件操作、多语言代码分析与执行,以及网页和屏幕上下文工具。
主要功能
- 01读写、编辑和管理文件
- 02使用 tree-sitter 分析多语言代码
- 03搜索代码内容
- 04执行多种语言代码与脚本
- 05抓取网页并转换为 Markdown
- 06提供屏幕与系统信息工具
适用场景
- 01检查并修改项目文件
- 02分析代码结构并查找匹配内容
- 03运行代码或 Shell 脚本
- 04获取网页内容作为开发参考
MCP 相关
该 MCP 服务向客户端暴露文件系统、代码分析与执行、网页搜索和抓取、屏幕及系统信息等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SkyDeckAI Code
一个 MCP 服务,为 AI 驱动的开发工作流提供一套全面的工具。功能包括文件系统操作、使用 tree-sitter 分析多种编程语言的代码、代码执行、获取网页内容并将 HTML 转换为 Markdown、多引擎网页搜索、代码内容搜索和系统信息检索。通过直接访问本地和远程资源,增强 AI 协助完成软件开发任务的能力。
前身为 MCP-Server-AIDD
此 MCP 服务的前身是 mcp-server-aidd。更名为 skydeckai-code,是为了感谢 SkyDeck.ai 团队与 East Agile 共同创建了此应用。但更重要的是,我们意识到 AI Driven Development(AIDD)这个术语并没有流行起来。人们无法一眼看出它的含义,大模型也一样。“Code” 直观得多。在 Agentic AI 的世界里,语言上的直观性很重要。
安装
# Using uvx
uvx skydeckai-code
Claude Desktop 设置
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"skydeckai-code": {
"command": "uvx",
"args": ["skydeckai-code"]
}
}
}
SkyDeck AI Helper App
如果你正在使用 MseeP AI Helper app,可以搜索“SkyDeckAI Code”并安装。

主要功能
- 文件系统操作(读取、写入、编辑、移动、复制、删除)
- 目录管理和遍历
- 使用 tree-sitter 分析多种语言的代码
- 使用正则表达式模式匹配搜索代码内容
- 在安全措施的保护下执行多种语言的代码
- 从 API 和网站获取网页内容,并将 HTML 转换为 Markdown
- 多引擎网页搜索,并提供可靠的回退机制
- 支持并行和串行执行工具的批量操作
- 提供可配置工作区边界的安全控制
- 截图和屏幕上下文工具
- 图像处理工具
可用工具(29)
| 类别 | 工具名称 | 描述 |
|---|---|---|
| 文件系统 | get_allowed_directory | 获取当前工作目录路径 |
update_allowed_directory | 更改工作目录 | |
create_directory | 创建新目录或嵌套目录 | |
write_file | 创建或覆盖文件并写入新内容 | |
edit_file | 按行编辑文本文件 | |
read_file | 读取一个或多个文件的内容 | |
list_directory | 获取文件和目录列表 | |
move_file | 移动或重命名文件或目录 | |
copy_file | 将文件或目录复制到新位置 | |
search_files | 搜索与名称模式匹配的文件 | |
delete_file | 删除文件或空目录 | |
get_file_info | 获取详细的文件元数据 | |
directory_tree | 获取目录的递归树形视图 | |
read_image_file | 将图像文件读取为 base64 数据 | |
| 代码工具 | codebase_mapper | 分析多个文件中的代码结构 |
search_code | 在代码文件中查找文本模式 | |
execute_code | 运行多种语言的代码 | |
execute_shell_script | 运行 shell/bash 脚本 | |
| 网页工具 | web_fetch | 获取 URL 中的内容 |
web_search | 执行网页搜索 | |
| 屏幕工具 | capture_screenshot | 截取屏幕或窗口的屏幕截图 |
get_active_apps | 列出正在运行的应用 | |
get_available_windows | 列出所有打开的窗口 | |
| 系统 | get_system_info | 获取详细的系统信息 |
| 实用工具 | batch_tools | 批量运行多个工具操作 |
think | 记录推理过程而不进行更改 | |
| 待办事项 | todo_read | 读取当前工作区的待办事项列表 |
todo_write | 验证后替换整个待办事项列表 | |
todo_update | 按 ID 更新特定待办事项 |
工具详细文档
基本文件操作
| 工具 | 参数 | 返回值 |
|---|---|---|
| read_file | files: [{path: string, offset?: integer, limit?: integer}] | 文件内容(单个或多个文件) |
| write_file | path: string, content: string | 成功确认 |
| move_file | source: string, destination: string | 成功确认 |
| copy_file | source: string, destination: string, recursive?: boolean | 成功确认 |
| delete_file | path: string | 成功确认 |
| get_file_info | path: string | 文件元数据(大小、时间戳、权限) |
复杂文件操作
edit_file
支持预览的基于模式的文件编辑:
{
"path": "src/main.py",
"edits": [
{
"oldText": "def old_function():",
"newText": "def new_function():"
}
],
"dryRun": false,
"options": {
"partialMatch": true
}
}
返回值:更改差异,或在试运行模式下返回预览。
目录操作
| 工具 | 参数 | 返回值 |
|---|---|---|
| get_allowed_directory | none | 当前允许的目录路径 |
| update_allowed_directory | directory: string (absolute path) | 成功确认 |
| list_directory | path: string | 目录内容列表 |
| create_directory | path: string | 成功确认 |
| search_files | pattern: string, path?: string, include_hidden?: boolean | 匹配的文件列表 |
search_files 工具按名称模式搜索文件,而 search_code 工具使用正则表达式在文件内容中搜索。查找具有特定名称或扩展名的文件时,请使用 search_files;在文件中搜索特定文本模式时,请使用 search_code。
directory_tree
生成完整的目录结构:
{
"path": "src",
"include_hidden": false
}
返回值:目录内容的 JSON 树结构。
代码分析
codebase_mapper
分析源代码结构:
{
"path": "src"
}
返回值:
- 类及其方法
- 函数和参数
- 模块结构
- 代码组织统计信息
- 继承关系
支持的语言:
- Python (.py)
- JavaScript (.js/.jsx, .mjs, .cjs)
- TypeScript (.ts/.tsx)
- Java (.java)
- C++ (.cpp, .hpp, .cc)
- Ruby (.rb, .rake)
- Go (.go)
- Rust (.rs)
- PHP (.php)
- C# (.cs)
- Kotlin (.kt, .kts)
search_code
使用正则表达式快速搜索内容的工具:
{
"patterns": ["function\\s+\\w+", "class\\s+\\w+"],
"include": "*.js",
"exclude": "node_modules/**",
"max_results": 50,
"case_sensitive": false,
"path": "src"
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| patterns | 字符串数组 | 是 | 要在文件内容中搜索的正则表达式模式列表 |
| include | 字符串 | 否 | 要包含的文件模式(glob 语法,默认值:"*") |
| exclude | 字符串 | 否 | 要排除的文件模式(glob 语法,默认值:"") |
| max_results | 整数 | 否 | 每种模式返回的最大结果数(默认值:100) |
| case_sensitive | 布尔值 | 否 | 搜索是否区分大小写(默认值:false) |
| path | 字符串 | 否 | 开始搜索的基础目录(默认值:".") |
返回: 按文件分组并附带行号的匹配行,按文件修改时间排序,最新文件排在前面。
此工具在可用时会使用 ripgrep,以获得最佳性能;否则会回退到 Python 实现。它适合查找特定代码模式,例如函数声明、导入、变量用法或错误处理。
系统信息
| 工具 | 参数 | 返回内容 |
|---|---|---|
| get_system_info | 无 | 全面的系统详情 |
返回内容:
{
"working_directory": "/path/to/project",
"system": {
"os", "os_version", "architecture", "python_version"
},
"wifi_network": "MyWiFi",
"cpu": {
"physical_cores", "logical_cores", "total_cpu_usage"
},
"memory": { "total", "available", "used_percentage" },
"disk": { "total", "free", "used_percentage" },
"mac_details": { // Only present on macOS
"model": "Mac mini",
"chip": "Apple M2",
"serial_number": "XXX"
}
}
以清晰易读的格式提供基本系统信息。
屏幕上下文和图像工具
get_active_apps
返回用户系统上当前处于活动状态的应用程序列表。
{
"with_details": true
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| with_details | 布尔值 | 否 | 是否包含每个应用程序的其他详情(默认值:false) |
返回:
{
"success": true,
"platform": "macos",
"app_count": 12,
"apps": [
{
"name": "Firefox",
"has_windows": true,
"window_count": 3,
"visible_windows": [
{ "name": "GitHub - Mozilla Firefox", "width": 1200, "height": 800 }
]
},
{
"name": "VSCode",
"has_windows": true
}
]
}
此工具可提供用户系统上当前运行的应用程序的有用上下文,有助于提供更相关的帮助。
get_available_windows
返回用户屏幕上当前显示的所有可用窗口的详细信息。
{}
返回:
{
"success": true,
"platform": "macos",
"count": 8,
"windows": [
{
"id": 42,
"title": "Document.txt - Notepad",
"app": "Notepad",
"visible": true
},
{
"title": "Terminal",
"app": "Terminal",
"visible": true,
"active": true
}
]
}
此工具有助于了解用户屏幕上显示的内容,可用于提供上下文相关的帮助。
capture_screenshot
截取用户屏幕或特定窗口的屏幕截图。
{
"output_path": "screenshots/capture.png",
"capture_mode": {
"type": "named_window",
"window_name": "Visual Studio Code"
}
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| output_path | 字符串 | 否 | 截图的保存路径(默认值:自动生成的路径) |
| capture_mode | 对象 | 否 | 指定要截取的内容 |
| capture_mode.type | 字符串 | 否 | 截图类型:'full'、'active_window' 或 'named_window'(默认值:'full') |
| capture_mode.window_name | 字符串 | 否 | 要截取的窗口名称(当 type 为 'named_window' 时必填) |
返回:
{
"success": true,
"path": "/path/to/screenshots/capture.png"
}
此工具可截取屏幕截图,用于可视化、调试或提供上下文相关的帮助。
read_image_file
从文件系统读取图像文件,并以 base64 编码字符串的形式返回其内容。
{
"path": "images/logo.png"
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| path | 字符串 | 是 | 要读取的图像文件路径 |
| max_size | 整数 | 否 | 最大文件大小(字节,默认值:100MB) |
返回: 可供显示或处理的 base64 编码图像数据。
此工具支持 PNG、JPEG、GIF 和 WebP 等常见图像格式,并会自动调整图像大小以获得最佳查看效果。
Web 工具
web_fetch
从 URL 获取内容,并可选择将其保存到文件。
{
"url": "https://api.github.com/users/octocat",
"headers": {
"Accept": "application/json"
},
"timeout": 15,
"save_to_file": "downloads/octocat.json",
"convert_html_to_markdown": true
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| url | string | 是 | 要从中获取内容的 URL(仅限 http/https) |
| headers | object | 否 | 请求中包含的可选 HTTP 标头 |
| timeout | integer | 否 | 等待响应的最长时间(默认:10s) |
| save_to_file | string | 否 | 保存响应内容的路径(位于允许的目录内) |
| convert_html_to_markdown | boolean | 否 | 为 true 时,将 HTML 内容转换为 markdown,以便更易阅读(默认:true) |
返回: 以文本形式返回响应内容,并附带 HTTP 状态码和大小信息。对于二进制内容,会返回元数据,并在提出请求时将其保存到文件。如果启用了 convert_html_to_markdown,HTML 内容会自动转换为 markdown 格式,以便更易阅读。
此工具可用于访问 Web API、获取文档或下载 Web 内容,同时遵守大小限制(最大 10MB)和安全约束。
web_search
使用多个搜索引擎执行可靠的 Web 搜索,并返回简洁且相关的结果。
{
"query": "latest python release features",
"num_results": 8,
"convert_html_to_markdown": true,
"search_engine": "bing"
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| query | string | 是 | 要处理的搜索查询。描述越具体,结果越好。 |
| num_results | integer | 否 | 返回的搜索结果数量上限(默认:10,最大:20) |
| convert_html_to_markdown | boolean | 否 | 为 true 时,将内容从 HTML 转换为 markdown,以便更易阅读(默认:true) |
| search_engine | string | 否 | 指定要使用的搜索引擎:"auto"(默认)、"bing" 或 "duckduckgo" |
返回: 以 markdown 格式呈现的搜索结果列表,包括每条结果的标题、URL 和摘要。结果会去重并按层级整理,便于阅读。
此工具采用多引擎方案,尝试不同的搜索引擎和解析策略,以确保结果可靠。你可以指定首选引擎,但某些引擎可能会阻止自动访问;此时如果选择了 "auto",工具会切换到其他引擎。
实用工具
batch_tools
在单个请求中执行多个工具调用,并尽可能并行执行。
{
"description": "Setup new project",
"sequential": true,
"invocations": [
{
"tool": "create_directory",
"arguments": {
"path": "src"
}
},
{
"tool": "write_file",
"arguments": {
"path": "README.md",
"content": "# New Project\n\nThis is a new project."
}
},
{
"tool": "execute_shell_script",
"arguments": {
"script": "git init"
}
}
]
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| description | string | 是 | 批量操作的简短描述 |
| sequential | boolean | 否 | 是否按顺序运行工具(默认:false) |
| invocations | array | 是 | 要执行的工具调用列表 |
| invocations[].tool | string | 是 | 要调用的工具名称 |
| invocations[].arguments | object | 是 | 指定工具的参数 |
返回: 所有工具调用的合并结果,按工具分组,并分别标明成功或错误状态。结果按原始调用顺序呈现,并带有清晰的分节标题。
此工具可在单个请求中高效执行多个操作。当 sequential 为 false(默认值)时,工具会并行执行,以提升性能。当 sequential 为 true 时,工具会按顺序执行;如果任何工具失败,执行就会停止。
重要:批次中的所有工具都在同一工作目录上下文中执行。如果某个工具创建了目录,而后续工具需要在该目录中操作,则必须:
- 使用相对于当前工作目录的路径(例如,使用 "project/src" 而不是仅使用 "src"),或
- 添加一个明确的工具调用,通过
update_allowed_directory更改目录
think
一个用于复杂推理和头脑风暴的工具,不会对仓库进行任何更改。
{
"thought": "Let me analyze the performance issue in the codebase:\n\n## Root Cause Analysis\n\n1. The database query is inefficient because:\n - It doesn't use proper indexing\n - It fetches more columns than needed\n - The JOIN operation is unnecessarily complex\n\n## Potential Solutions\n\n1. **Add database indexes**:\n - Create an index on the user_id column\n - Create a composite index on (created_at, status)\n\n2. **Optimize the query**:\n - Select only necessary columns\n - Rewrite the JOIN using a subquery\n - Add LIMIT clause for pagination\n\n3. **Add caching layer**:\n - Cache frequent queries using Redis\n - Implement cache invalidation strategy\n\nAfter weighing the options, solution #2 seems to be the simplest to implement with the highest impact."
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| thought | string | 是 | 你的详细想法、分析或推理过程 |
返回: 以 Markdown 格式呈现你的想法,并附注说明这是一次思考练习。
此工具适用于深入思考复杂问题、集思广益寻找解决方案,或规划实施方案,而不会实际进行任何更改。你可以使用它记录推理过程、评估不同方法,或在采取行动前规划多步骤策略。
代码执行
execute_code
在采取安全措施和限制的情况下,执行多种编程语言的代码。
{
"language": "python",
"code": "print('Hello, World!')",
"timeout": 5
}
支持的语言:
- Python(python3)
- JavaScript(Node.js)
- Ruby
- PHP
- Go
- Rust
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| language | string | 是 | 要使用的编程语言 |
| code | string | 是 | 要执行的代码 |
| timeout | integer | 否 | 最长执行时间(默认:5s) |
要求:
- 必须安装相应语言的运行时
- 命令必须在系统 PATH 中可用
- 必须具有创建临时文件的适当权限
⚠️ 安全警告: 此工具会在你的系统上执行任意代码。请务必:
- 在执行前仔细检查代码
- 了解代码的用途和预期结果
- 切勿执行不受信任的代码
- 注意可能对系统造成的影响
- 监控执行输出
execute_shell_script
在采取安全措施和限制的情况下,执行 shell 脚本(bash/sh)。
{
"script": "echo \"Current directory:\" && pwd",
"timeout": 300
}
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| script | string | 是 | 要执行的 shell 脚本 |
| timeout | integer | 否 | 最长执行时间(默认:300s,最大:600s) |
功能:
- 使用 /bin/sh,以最大限度地兼容不同系统
- 在允许的目录中执行
- 分别输出 stdout 和 stderr
- 提供适当的错误处理和超时控制
⚠️ 安全警告: 此工具会在你的系统上执行任意 shell 命令。请务必:
- 在执行前仔细检查脚本
- 了解脚本的用途和预期结果
- 切勿执行不受信任的脚本
- 注意可能对系统造成的影响
- 监控执行输出
待办工具
待办工具为以工作区为先的开发工作流提供顺序任务管理功能。任务按顺序执行,不设优先级系统,确保开发阶段有序推进。
todo_read
读取工作区当前的待办列表。
{}
返回:
{
"todos": [
{
"id": "abc123",
"content": "Implement user authentication",
"status": "in_progress",
"metadata": {
"custom_key": "custom_value"
},
"created_at": "2023-10-01T10:00:00Z",
"updated_at": "2023-10-01T11:30:00Z"
}
],
"count": 1,
"workspace": "/path/to/workspace"
}
todo_write
替换整个待办列表,以用于顺序执行工作流。任务按数组顺序执行,并在之前工作的基础上推进。
{
"todos": [
{
"id": "task1",
"content": "Set up database schema",
"status": "pending"
},
{
"id": "task2",
"content": "Create API endpoints",
"status": "pending",
"metadata": {
"custom_key": "custom_value"
}
}
]
}
顺序工作流规则:
- 每个待办事项都必须有唯一 ID
- 同一时间只能有一个任务处于 "in_progress" 状态(顺序执行)
- 任务按数组顺序执行,不设优先级系统
- 必填字段:id、content、status
- 状态值:"pending"、"in_progress"、"completed"
- 以工作区为先:所有工作区操作都必须进行待办管理
todo_update
按 ID 更新指定待办事项,以推进顺序工作流。
{
"todo_id": "task1",
"updates": {
"status": "in_progress",
"metadata": {
"new_key": "new_value"
}
}
}
返回:
{
"success": true,
"updated_todo": {
"id": "task1",
"content": "Set up database schema",
"status": "in_progress",
"updated_at": "2023-10-01T12:00:00Z",
"metadata": {
"new_key": "new_value"
}
},
"counts": {
"pending": 1,
"in_progress": 1,
"completed": 0,
"total": 2
},
"workspace": "/path/to/workspace"
}
待办系统会为每个工作区维护独立的顺序任务列表,并强制要求所有工作区操作都必须使用该系统。任务按顺序执行,并在之前工作的基础上推进,不采用基于优先级的调度。
配置
配置文件:~/.skydeckai_code/config.json
{
"allowed_directory": "/path/to/workspace"
}
调试
使用 MCP Inspector 进行调试:
npx @modelcontextprotocol/inspector run
安全性
- 操作仅限于配置的允许目录
- 防止路径遍历
- 保留文件权限
- 安全地处理操作
即将推出的功能
- GitHub 工具:
- PR 描述生成器
- 代码审查
- Actions 管理器
- Pivotal Tracker 工具:
- Story 生成器
- Story 管理器
开发状态
目前正在积极开发中。功能和 API 可能会发生变化。
许可证
Apache License 2.0 - 详见 LICENSE
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
