KiCad MCP Server
KiCad MCP 服务器
本指南将帮助您为 KiCad 设置模型上下文协议 (MCP) 服务器。虽然本指南中的示例通常引用 Claude Desktop,但该服务器与任何符合 MCP 标准的客户端兼容。您可以将其与 Claude Desktop、您自己的自定义 MCP 客户端或任何其他实现模型上下文协议的应用程序一起使用。
目录
Related MCP server: kicad-mcp
先决条件
macOS、Windows 或 Linux
Python 3.10 或更高版本
KiCad 9.0 或更高版本
Claude Desktop(或其他 MCP 客户端)
安装步骤
1. 设置 Python 环境
首先,让我们安装依赖项并设置我们的环境:
# Clone the repository
git clone https://github.com/lamaalrajih/kicad-mcp.git .
# Create a virtual environment and activate it
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install the MCP SDK and other dependencies
pip install -r requirements.txt2.配置您的环境
创建一个.env文件来自定义服务器查找 KiCad 项目的位置:
# Copy the example environment file
cp .env.example .env
# Edit the .env file
vim .env在.env文件中,添加您的自定义项目目录:
# Add paths to your KiCad projects (comma-separated)
KICAD_SEARCH_PATHS=~/pcb,~/Electronics,~/Projects/KiCad3.运行服务器
环境设置完成后,即可运行服务器:
python main.py4. 配置 MCP 客户端
现在,让我们配置 Claude Desktop 以使用我们的 MCP 服务器:
创建或编辑 Claude Desktop 配置文件:
# Create the directory if it doesn't exist
mkdir -p ~/Library/Application\ Support/Claude
# Edit the configuration file
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json将 KiCad MCP 服务器添加到配置中:
{
"mcpServers": {
"kicad": {
"command": "/ABSOLUTE/PATH/TO/YOUR/PROJECT/kicad-mcp/venv/bin/python",
"args": [
"/ABSOLUTE/PATH/TO/YOUR/PROJECT/kicad-mcp/main.py"
]
}
}
}将/ABSOLUTE/PATH/TO/YOUR/PROJECT/kicad-mcp替换为项目目录的实际路径。
5. 重启 MCP 客户端
关闭并重新打开您的 MCP 客户端以加载新配置。
了解 MCP 组件
模型上下文协议 (MCP) 定义了提供功能的三种主要方式:
资源、工具和提示
资源是 LLM 可以引用的只读数据源:
类似于 REST API 中的 GET 端点
无需进行大量计算即可提供数据
当法学硕士需要阅读信息时使用
通常由客户端应用程序以编程方式访问
示例:
kicad://projects返回所有 KiCad 项目的列表
工具是执行操作或计算的功能:
类似于 REST API 中的 POST/PUT 端点
可能会有副作用(例如打开应用程序或生成文件)
当 LLM 需要在现实世界中执行操作时使用
通常由 LLM 直接调用(经用户批准)
示例:
open_project()使用特定项目启动 KiCad
提示是用于常见交互的可重复使用的模板:
预先定义的对话开场白或说明
帮助用户表达常见问题或任务
通过用户选择调用(通常通过菜单)
示例:
debug_pcb_issues提示可帮助用户排除 PCB 问题
有关资源、工具和提示的更多信息,请阅读MCP 文档。
功能亮点
KiCad MCP 服务器提供了几个关键功能,每个功能都有详细的文档:
项目管理:列出、检查和打开 KiCad 项目
例如: “显示我最近的所有 KiCad 项目”→列出按修改日期排序的所有项目
PCB 设计分析:深入了解您的 PCB 设计和原理图
例如: “分析我的温度传感器板的元件密度”→提供元件间距分析
网络表提取:从原理图中提取并分析组件连接
例如: “我的 Arduino 扩展板上有哪些组件连接到 MCU?” → 显示所有与微控制器的连接
BOM管理:分析和导出物料清单
示例: “为我的智能手表项目生成 BOM”→创建详细的物料清单
设计规则检查:使用 KiCad CLI 运行 DRC 检查并跟踪您的进度
例如: “在我的电源板上运行 DRC 并与上周进行比较”→显示修复违规的进度
PCB 可视化:生成 PCB 布局的可视化表示
例如: “显示我的音频放大器 PCB 的缩略图”→显示电路板的视觉渲染
电路模式识别:自动识别原理图中的常见电路模式
示例: “我的物联网设备使用什么电源拓扑?” → 识别降压、升压或线性稳压器
有关每个功能的更多示例和详细信息,请参阅文档中的专用指南。您还可以咨询法学硕士 (LLM) 可以使用哪些工具!
自然语言交互
虽然我们的文档经常显示如下示例:
Show me the DRC report for /Users/username/Documents/KiCad/my_project/my_project.kicad_pro您无需输入文件的完整路径!LLM 可以理解更自然的语言请求。
例如,您可以简单地询问:而不是上面的正式命令:
Can you check if there are any design rule violations in my Arduino shield project?或者:
I'm working on the temperature sensor circuit. Can you identify what patterns it uses?LLM 将理解您的意图,并向 KiCad MCP 服务器请求相关信息。如果它需要说明您指的是哪个项目,它会询问。
文档
每个功能的详细文档可以在docs/目录中找到:
配置
可以使用环境变量或.env文件配置 KiCad MCP 服务器:
关键配置选项
环境变量 | 描述 | 例子 |
| 用于搜索 KiCad 项目的目录的逗号分隔列表 |
|
| 覆盖默认的 KiCad 用户目录 |
|
| 覆盖默认的 KiCad 应用程序路径 |
|
请参阅配置指南以了解更多详细信息。
开发指南
项目结构
KiCad MCP 服务器采用模块化结构:
kicad-mcp/
├── README.md # Project documentation
├── main.py # Entry point that runs the server
├── requirements.txt # Python dependencies
├── .env.example # Example environment configuration
├── kicad_mcp/ # Main package directory
│ ├── __init__.py
│ ├── server.py # MCP server setup
│ ├── config.py # Configuration constants and settings
│ ├── context.py # Lifespan management and shared context
│ ├── resources/ # Resource handlers
│ ├── tools/ # Tool handlers
│ ├── prompts/ # Prompt templates
│ └── utils/ # Utility functions
├── docs/ # Documentation
└── tests/ # Unit tests添加新功能
要向 KiCad MCP 服务器添加新功能,请按照以下步骤操作:
确定功能的类别(资源、工具或提示)
将您的实现添加到适当的模块
在相应的注册函数中注册你的功能
使用开发工具测试您的更改
请参阅开发指南以了解更多详细信息。
故障排除
如果您遇到问题:
服务器未出现在 MCP 客户端中:
检查客户端的配置文件是否有错误
确保项目和 Python 解释器的路径正确
确保 Python 可以访问
mcp包检查是否检测到您的 KiCad 安装
服务器错误:
在开发模式下运行服务器时检查终端输出
检查 Claude 日志:
~/Library/Logs/Claude/mcp-server-kicad.log(服务器特定日志)~/Library/Logs/Claude/mcp.log(常规 MCP 日志)
工作目录问题:
通过客户端配置启动的服务器的工作目录可能未定义
始终在配置和 .env 文件中使用绝对路径
对于通过命令行测试服务器,工作目录将是您运行命令的位置
请参阅故障排除指南以了解更多详细信息。
如果您仍然无法解决问题,请打开 Github 问题。
贡献
想要为 KiCad MCP 服务器做出贡献吗?您可以通过以下方式帮助改进此项目:
分叉存储库
创建功能分支
添加您的更改
提交拉取请求
贡献的关键领域:
在电路模式识别系统中添加对更多组件模式的支持
改进文档和示例
添加新功能或增强现有功能
修复错误并改进错误处理
请参阅CONTRIBUTING.md了解详细的贡献指南。
未来发展思路
有兴趣贡献吗?以下是一些未来发展的想法:
3D 模型可视化- 实现 PCB 3D 模型可视化工具
PCB 审查工具- 创建用于设计审查的注释功能
制造文件生成- 添加对生成 Gerber 文件和其他制造输出的支持
组件搜索- 实现跨 KiCad 库的组件搜索功能
BOM 增强功能——添加组件采购和定价的供应商集成
交互式设计检查——开发用于检查设计质量的交互式工具
Web UI - 创建一个简单的 Web 界面用于配置和监控
电路分析- 添加自动电路分析功能
测试覆盖率——提高整个代码库的测试覆盖率
电路模式识别——使用更多组件类型和电路拓扑扩展模式数据库
执照
该项目根据 MIT 许可证开源。
Available Tools
16 toolsanalyze_bomB
Analyze a KiCad project's Bill of Materials.
This tool will look for BOM files related to a KiCad project and provide analysis including component counts, categories, and cost estimates if available.
Args: project_path: Path to the KiCad project file (.kicad_pro) ctx: MCP context for progress reporting
Returns: Dictionary with BOM analysis results
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool will 'look for BOM files' and 'provide analysis', but doesn't specify whether this is read-only or has side effects, what permissions are needed, error handling for missing files, or performance characteristics. For a tool that reads and analyzes project files, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It opens with a clear purpose statement, provides specific details about what the analysis includes, and has separate sections for Args and Returns. Every sentence adds value, though the 'ctx' explanation could be slightly more specific about what progress gets reported.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (analyzing BOM files), no annotations, and the existence of an output schema (which handles return values), the description is minimally adequate. It covers the basic purpose and parameters but lacks important context about behavioral traits, error conditions, and differentiation from sibling tools. The output schema existence prevents a lower score, but the description should do more given the tool's analytical nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for both parameters beyond the schema's 0% coverage. It explains that 'project_path' should point to a '.kicad_pro' file and that 'ctx' is for 'progress reporting'. This provides practical guidance that the schema lacks, though it doesn't detail what specific progress information gets reported or format requirements for the path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: analyzing a KiCad project's Bill of Materials. It specifies the action ('analyze'), resource ('KiCad project's Bill of Materials'), and scope (component counts, categories, cost estimates). However, it doesn't explicitly differentiate from sibling tools like 'export_bom_csv' or 'extract_project_netlist', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools related to BOMs and project analysis (export_bom_csv, extract_project_netlist, analyze_project_circuit_patterns, etc.), there's no indication of when this analysis tool is preferred over exporting or extracting tools. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_project_circuit_patternsC
Identify circuit patterns in a KiCad project's schematic.
Args: project_path: Path to the KiCad project file (.kicad_pro) ctx: MCP context for progress reporting
Returns: Dictionary with identified circuit patterns
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. While it mentions 'MCP context for progress reporting' for the ctx parameter, it doesn't disclose important behavioral traits: whether this is a read-only operation, computational complexity, expected runtime, what types of patterns are identified, or how results are structured beyond 'Dictionary with identified circuit patterns.' For a pattern analysis tool with no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args/Returns sections are structured clearly. While efficient, the 'ctx' parameter explanation could be more concise since the schema already contains extensive Context documentation that the agent can access separately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage and no annotations, the description provides basic parameter semantics but lacks behavioral context. The output schema exists (though not shown), so the description doesn't need to detail return values. However, for a pattern analysis tool in a domain with multiple similar siblings, more context about what constitutes 'circuit patterns' and differentiation from other tools would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description adds basic semantics: 'project_path: Path to the KiCad project file (.kicad_pro)' and 'ctx: MCP context for progress reporting.' This covers both parameters but doesn't provide format details for project_path (absolute vs relative, file existence requirements) or comprehensive ctx usage guidance beyond progress reporting. With 0% schema coverage, this is adequate but minimal compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Identify circuit patterns in a KiCad project's schematic.' It specifies the verb ('identify'), resource ('circuit patterns'), and domain context ('KiCad project's schematic'). However, it doesn't distinguish this tool from the sibling 'identify_circuit_patterns' tool, which appears to have a very similar purpose based on name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'analyze_schematic_connections', 'find_component_connections', and 'identify_circuit_patterns' that might serve related purposes, there's no indication of what differentiates this tool or when it should be preferred over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_schematic_connectionsB
Analyze connections in a KiCad schematic.
This tool provides detailed analysis of component connections, including power nets, signal paths, and potential issues.
Args: schematic_path: Path to the KiCad schematic file (.kicad_sch) ctx: MCP context for progress reporting
Returns: Dictionary with connection analysis
| Name | Required | Description | Default |
|---|---|---|---|
| schematic_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'detailed analysis' and 'potential issues' but lacks specifics on permissions needed, performance characteristics, side effects, or error handling. It doesn't clarify if this is a read-only analysis or has any mutative effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with clear sections: purpose statement, parameter explanations, and return value description. It's front-loaded with the core functionality. The Args/Returns formatting is helpful, though the ctx explanation could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage and no annotations, the description provides basic parameter semantics but lacks behavioral context for a tool that performs complex schematic analysis. The existence of an output schema reduces the need to explain return values, but more operational guidance would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains 'schematic_path' as 'Path to the KiCad schematic file (.kicad_sch)' and 'ctx' as 'MCP context for progress reporting', adding meaningful context beyond the bare schema. However, it doesn't detail format requirements for the path or how progress reporting works.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes connections in a KiCad schematic, specifying the resource (KiCad schematic) and action (analyze connections). It distinguishes from siblings like 'find_component_connections' by mentioning detailed analysis including power nets, signal paths, and potential issues, though not explicitly contrasting with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'find_component_connections' or 'extract_schematic_netlist'. The description mentions what the tool does but offers no context about appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_bom_csvB
Export a Bill of Materials for a KiCad project.
This tool attempts to generate a CSV BOM file for a KiCad project. It requires KiCad to be installed with the appropriate command-line tools.
Args: project_path: Path to the KiCad project file (.kicad_pro) ctx: MCP context for progress reporting
Returns: Dictionary with export results
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool 'attempts' to generate a CSV, hinting at potential failure modes, and notes KiCad installation requirements, which adds some context. However, it lacks details on error handling, file output location, permissions needed, or what the 'export results' dictionary contains, leaving significant gaps for a mutation tool (export implies file creation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, followed by additional context and a parameter/return section. It's appropriately sized without unnecessary fluff, though the parameter explanations could be more detailed. Every sentence contributes to understanding the tool's functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (returns a dictionary), the description doesn't need to explain return values in detail. However, with no annotations and a mutation operation (exporting files), the description should provide more behavioral context, such as error conditions or output file handling. It covers basics but leaves gaps for a tool that interacts with external systems (KiCad).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly lists and briefly explains both parameters: 'project_path' as the path to the KiCad project file and 'ctx' for MCP context in progress reporting. With 0% schema description coverage, this adds substantial value beyond the schema, which only provides titles without descriptions. However, it doesn't detail the format or constraints for 'project_path' (e.g., file extensions, absolute vs. relative paths).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a Bill of Materials (BOM) for a KiCad project as a CSV file, which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'analyze_bom' or 'extract_project_netlist', which might have overlapping functionality with BOM-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some context about when to use this tool by mentioning it requires KiCad installation with command-line tools, which implies a prerequisite. However, it doesn't offer explicit guidance on when to choose this tool versus alternatives like 'analyze_bom' or 'extract_project_netlist', nor does it specify exclusions or complementary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_project_netlistC
Extract netlist from a KiCad project's schematic.
This tool finds the schematic associated with a KiCad project and extracts its netlist information.
Args: project_path: Path to the KiCad project file (.kicad_pro) ctx: MCP context for progress reporting
Returns: Dictionary with netlist information
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe important behavioral aspects: whether this is a read-only operation, what permissions are needed, whether it modifies files, error handling, performance characteristics, or what specific netlist information is returned. The mention of 'progress reporting' via ctx hints at potentially long-running operations, but this isn't elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise with clear sections: purpose statement, brief explanation, Args section, and Returns section. The front-loaded purpose statement is effective. The Args section could be more integrated with the flow, but overall the structure is logical with minimal wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (returns a dictionary with netlist information), the description doesn't need to detail return values. However, with no annotations, 0% schema description coverage, and a mutation-adjacent operation ('extract' could imply file reading or processing), the description should provide more behavioral context about what 'extract' entails and how it differs from similar tools. The current description is minimally adequate but leaves important questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description adds basic semantics for 'project_path' (path to .kicad_pro file) and mentions 'ctx' is for 'progress reporting,' which provides some value beyond the bare schema. However, it doesn't explain parameter constraints, formats, or examples, leaving significant gaps in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Extract netlist from a KiCad project's schematic' and 'extracts its netlist information.' It specifies the verb ('extract'), resource ('netlist'), and source ('KiCad project's schematic'). However, it doesn't explicitly differentiate from sibling tools like 'extract_schematic_netlist' or 'analyze_schematic_connections,' which appears to be a closely related operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions finding the schematic associated with a project, but doesn't clarify when to choose this over 'extract_schematic_netlist' (which might work directly on schematic files) or other analysis tools. No prerequisites, exclusions, or comparison with sibling tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_schematic_netlistB
Extract netlist information from a KiCad schematic.
This tool parses a KiCad schematic file and extracts comprehensive netlist information including components, connections, and labels.
Args: schematic_path: Path to the KiCad schematic file (.kicad_sch) ctx: MCP context for progress reporting
Returns: Dictionary with netlist information
| Name | Required | Description | Default |
|---|---|---|---|
| schematic_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions parsing and extracting information, it doesn't describe error conditions, performance characteristics, file format requirements beyond the extension, or what happens with malformed schematics. The mention of 'progress reporting' via ctx is helpful but insufficient for comprehensive behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose statement, parameter explanations, and return value description. It's appropriately sized at 6 sentences with no redundant information. The Args/Returns formatting helps readability, though the purpose statement could be slightly more front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (file parsing operation), no annotations, and the presence of an output schema, the description is minimally adequate. It explains what the tool does and its parameters but lacks important context about error handling, performance, and differentiation from similar tools. The output schema existence reduces the need to detail return values, but more behavioral context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining both parameters: 'schematic_path' is clearly described as 'Path to the KiCad schematic file (.kicad_sch)' and 'ctx' is explained as 'MCP context for progress reporting'. This provides meaningful semantic information beyond the bare schema, though it doesn't elaborate on path format requirements or ctx usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Extract netlist information from a KiCad schematic' with specific details about what it extracts (components, connections, labels). It distinguishes from some siblings like 'analyze_bom' or 'export_bom_csv' but doesn't explicitly differentiate from the closely related 'extract_project_netlist' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate versus 'extract_project_netlist' or 'analyze_schematic_connections', nor does it provide any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_component_connectionsA
Find all connections for a specific component in a KiCad project.
This tool extracts information about how a specific component is connected to other components in the schematic.
Args: project_path: Path to the KiCad project file (.kicad_pro) component_ref: Component reference (e.g., "R1", "U3") ctx: MCP context for progress reporting
Returns: Dictionary with component connection information
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| component_ref | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the tool's purpose (extracting connection information) and mentions progress reporting via the context parameter, which adds some behavioral context. However, it doesn't describe important traits like whether this is a read-only operation, potential performance characteristics, error conditions, or what specific information the dictionary contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by dedicated sections for Args and Returns. Every sentence adds value: the first establishes scope, the second elaborates on what information is extracted, and the parameter explanations provide essential usage details without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no annotations, but has output schema), the description provides good coverage. It explains all parameters meaningfully and states the return type (dictionary with component connection information). The output schema existence means the description doesn't need to detail return values. However, more behavioral context would improve completeness for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides meaningful explanations for all three parameters beyond their schema titles: 'project_path' is clarified as 'Path to the KiCad project file (.kicad_pro)', 'component_ref' gets an example ('e.g., "R1", "U3"'), and 'ctx' is explained as 'MCP context for progress reporting'. With 0% schema description coverage, this significantly compensates by adding practical usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('find all connections'), target resource ('for a specific component in a KiCad project'), and scope ('how a specific component is connected to other components'). It distinguishes itself from siblings like 'analyze_schematic_connections' (which appears broader) by focusing on a single component's connections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the parameter explanations (needs a project file and component reference), but doesn't explicitly state when to use this tool versus alternatives like 'extract_schematic_netlist' or 'analyze_schematic_connections'. No explicit guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pcb_thumbnailC
Generate a thumbnail image of a KiCad PCB layout using kicad-cli.
Args: project_path: Path to the KiCad project file (.kicad_pro) ctx: Context for MCP communication
Returns: Thumbnail image of the PCB or None if generation failed
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| ctx | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions that the tool 'returns thumbnail image of the PCB or None if generation failed,' which gives basic output behavior. However, it doesn't disclose important traits: whether this is a read-only operation, what permissions are needed, potential side effects (e.g., temporary file creation), performance characteristics, or error conditions beyond failure. For a tool that presumably reads and processes project files, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, Args, Returns) and uses minimal sentences. Each section adds value: the opening sentence states the core function, Args explains parameters, Returns clarifies output behavior. There's no redundant information, though the ctx explanation could be more concise given its detailed schema definition. Overall, it's appropriately sized and front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (generating images from PCB layouts), lack of annotations, and no output schema, the description is moderately complete. It covers the basic purpose, parameters, and return behavior. However, it misses important context: what the thumbnail looks like (e.g., image format, dimensions), how failures manifest, dependencies on kicad-cli availability, or interaction with sibling tools. For a tool with 2 parameters and no annotation coverage, this is adequate but leaves gaps an agent would need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides parameter documentation in an 'Args' section, explaining that 'project_path' is the 'Path to the KiCad project file (.kicad_pro)' and 'ctx' is 'Context for MCP communication.' With 0% schema description coverage, this adds meaningful context beyond the bare schema. However, it doesn't elaborate on format requirements for project_path (e.g., absolute vs. relative paths, file existence) or practical usage of ctx beyond its definition. The baseline is 3 since the description compensates somewhat for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate a thumbnail image of a KiCad PCB layout using kicad-cli.' It specifies the verb ('generate'), resource ('thumbnail image'), and technology ('KiCad PCB layout using kicad-cli'). However, it doesn't explicitly differentiate from sibling tools like 'generate_project_thumbnail' which might serve a similar purpose for different project aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid KiCad project), compare it to 'generate_project_thumbnail', or indicate scenarios where thumbnail generation is appropriate versus other analysis tools. The only contextual hint is the technology stack (kicad-cli), but no usage boundaries are defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_project_thumbnailC
Generate a thumbnail of a KiCad project's PCB layout (Alias for generate_pcb_thumbnail).
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| ctx | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool generates a thumbnail but doesn't disclose behavioral traits such as what format the thumbnail is in (image type, dimensions), whether it's saved to disk or returned as data, performance characteristics, error conditions, or any side effects. The description is minimal and lacks necessary operational context for a mutation tool (generation implies creation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise—a single sentence that efficiently states the tool's purpose and alias relationship. It's front-loaded with the core functionality. However, the brevity comes at the cost of completeness, as it omits important details needed for effective use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (generation implies mutation), lack of annotations, no output schema, and 0% schema description coverage, the description is incomplete. It doesn't cover what the tool returns (e.g., image data, file path), error handling, or usage constraints. For a tool with two required parameters and no structured documentation, this leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description mentions 'project_path' implicitly through 'KiCad project' but doesn't explain what this path should be (file path, project name, etc.) or the purpose of 'ctx'. It adds minimal semantic value beyond what's inferable from the tool name, failing to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate a thumbnail of a KiCad project's PCB layout.' It specifies the verb ('generate'), resource ('thumbnail'), and domain context ('KiCad project's PCB layout'). However, it doesn't distinguish this tool from its sibling 'generate_pcb_thumbnail' beyond noting it's an alias, which is helpful but not a true functional differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'KiCad project's PCB layout' and mentions it's an 'Alias for generate_pcb_thumbnail,' which provides some guidance about tool relationships. However, it doesn't explicitly state when to use this tool versus alternatives (e.g., other thumbnail generation methods or when to use the aliased tool directly), nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drc_history_toolB
Get the DRC check history for a KiCad project.
Args: project_path: Path to the KiCad project file (.kicad_pro)
Returns: Dictionary with DRC history entries
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions returning a dictionary with entries, which adds some behavioral context, but fails to disclose critical traits like whether this is a read-only operation, if it requires specific permissions, or any rate limits. For a tool with no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose followed by structured sections for args and returns. Every sentence adds value, though it could be slightly more streamlined by integrating the args/returns into a single paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (one parameter) and the presence of an output schema (which handles return values), the description is mostly complete. It covers the purpose and parameter semantics adequately, but lacks usage guidelines and behavioral details, which holds it back from a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the input schema, which has 0% description coverage. It specifies that 'project_path' refers to a 'KiCad project file (.kicad_pro)', clarifying the file type and format, which compensates well for the schema's lack of details. With only one parameter, this is effective.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('DRC check history for a KiCad project'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'run_drc_check' or 'validate_project', which might also relate to DRC functionality, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'run_drc_check' and 'validate_project' available, the description lacks context on whether this tool retrieves past results, complements real-time checks, or serves a distinct purpose, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_structureB
Get the structure and files of a KiCad project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'Get the structure and files', implying a read-only operation, but doesn't disclose behavioral traits such as whether it requires specific permissions, what format the output is in, if there are rate limits, or how it handles errors. This leaves significant gaps for a tool with an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's appropriately sized and front-loaded, making it easy to understand at a glance without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description doesn't need to explain return values. However, with no annotations and a simple input schema, the description is minimal and doesn't cover usage context or behavioral aspects, making it adequate but with clear gaps for a tool that likely returns project data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning beyond the input schema, which has 0% description coverage. It doesn't explain what 'project_path' entails (e.g., file path format, relative vs. absolute). With one parameter and low schema coverage, the baseline is 3 as the schema provides the structure but lacks semantic details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'structure and files of a KiCad project', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_projects' or 'open_project', which might also involve project access, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_projects' (likely listing project names) and 'open_project' (possibly loading a project), there's no indication of how this tool differs in usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_circuit_patternsA
Identify common circuit patterns in a KiCad schematic.
This tool analyzes a schematic to recognize common circuit blocks such as:
Power supply circuits (linear regulators, switching converters)
Amplifier circuits (op-amps, transistor amplifiers)
Filter circuits (RC, LC, active filters)
Digital interfaces (I2C, SPI, UART)
Microcontroller circuits
And more
Args: schematic_path: Path to the KiCad schematic file (.kicad_sch) ctx: MCP context for progress reporting
Returns: Dictionary with identified circuit patterns
| Name | Required | Description | Default |
|---|---|---|---|
| schematic_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but provides minimal behavioral information. It mentions 'analyzes a schematic' and 'recognizes common circuit blocks' but doesn't disclose performance characteristics, error conditions, what happens with invalid inputs, or whether this is a read-only operation. The mention of 'ctx: MCP context for progress reporting' hints at potentially long-running analysis but doesn't elaborate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose statement, examples of recognized patterns, parameter explanations, and return value description. It's appropriately sized with no redundant information, though the bulleted list of circuit patterns could be slightly condensed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (pattern recognition in schematics), no annotations, and the presence of an output schema (which handles return value documentation), the description provides adequate context. It explains what the tool does, what it analyzes, and what parameters it needs, though more behavioral transparency would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining both parameters: 'schematic_path: Path to the KiCad schematic file (.kicad_sch)' and 'ctx: MCP context for progress reporting'. This adds meaningful context beyond the bare schema, though it doesn't specify file path format requirements or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Identify common circuit patterns in a KiCad schematic' with specific examples of what it recognizes (power supply circuits, amplifier circuits, etc.). It distinguishes itself from siblings like 'analyze_schematic_connections' or 'find_component_connections' by focusing on pattern recognition rather than connection analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the parameter description (requires a KiCad schematic file) but doesn't explicitly state when to use this tool versus alternatives like 'analyze_project_circuit_patterns' or 'analyze_schematic_connections'. No explicit guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
Find and list all KiCad projects on this system.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Find and list all KiCad projects on this system,' which implies a read-only operation, but doesn't specify details like whether it searches recursively, includes hidden files, returns metadata, or has performance considerations. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core action and resource without any wasted words. It's front-loaded with the key information ('Find and list all KiCad projects'), making it easy to grasp quickly, and every part of the sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description doesn't need to cover parameters or return values. However, as a read operation with no annotations, it lacks details on behavioral aspects like search scope or output format. It's minimally adequate but could benefit from more context to fully guide usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter details in the description. The description appropriately doesn't discuss parameters, focusing on the tool's purpose instead. A baseline of 4 is applied since no parameters exist, and it avoids unnecessary repetition of schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Find and list') and resource ('all KiCad projects on this system'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get_project_structure' or 'open_project', which might also involve project-related operations, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_project_structure' and 'open_project' that might overlap in project-related contexts, there's no indication of when this listing tool is preferred or what its specific scope (e.g., system-wide vs. workspace) entails, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_projectC
Open a KiCad project in KiCad.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose behavioral traits such as whether opening a project requires specific permissions, if it modifies the project, what happens on failure, or if it has side effects like locking files. The description is minimal and lacks critical operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with a single sentence, 'Open a KiCad project in KiCad.', which is efficient. However, it is under-specified rather than optimally concise, as it lacks necessary details for a tool with no annotations and low schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple operation with one parameter), no annotations, and an output schema present, the description is incomplete. It does not explain what 'open' means operationally or what the output might contain, relying on the output schema. For a tool with no annotations, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it adds no meaning beyond the schema. The parameter 'project_path' is not explained in the description—no details on format, valid paths, or examples. With one parameter and no schema descriptions, the baseline is 3 as it does not add value but also does not mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Open a KiCad project in KiCad' states the verb ('Open') and resource ('KiCad project'), but is vague about what 'open' entails—whether it loads for editing, viewing, or analysis. It does not distinguish from siblings like 'list_projects' or 'get_project_structure', which are related but different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not specify if this should be used before analysis tools like 'analyze_project_circuit_patterns' or if 'list_projects' is a prerequisite. The description lacks context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_drc_checkB
Run a Design Rule Check on a KiCad PCB file.
Args: project_path: Path to the KiCad project file (.kicad_pro) ctx: MCP context for progress reporting
Returns: Dictionary with DRC results and statistics
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| ctx | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool runs a DRC check but doesn't describe what happens during execution (e.g., whether it modifies files, requires specific permissions, has side effects, or handles errors). It mentions progress reporting via 'ctx' but lacks details on rate limits, performance, or output format beyond a generic 'dictionary'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first in a clear sentence. The Args and Returns sections are structured efficiently, though the 'ctx' explanation could be more concise. Overall, it avoids unnecessary verbosity while conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (running DRC checks on PCB files) and the presence of an output schema, the description is moderately complete. It covers the purpose and parameters adequately but lacks behavioral details (e.g., mutation risks, error handling) and doesn't fully leverage the output schema to explain return values. For a tool with no annotations, it should provide more operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for both parameters beyond the schema's 0% coverage. It specifies that 'project_path' is a 'Path to the KiCad project file (.kicad_pro)', clarifying the expected file type, and explains that 'ctx' is for 'MCP context for progress reporting', detailing its purpose. This compensates well for the low schema coverage, though it doesn't cover all possible parameter nuances.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Run') and resource ('Design Rule Check on a KiCad PCB file'), distinguishing it from sibling tools like 'get_drc_history_tool' (which retrieves history) and 'validate_project' (which may be more general). It precisely identifies what the tool does without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'validate_project' or 'get_drc_history_tool', nor does it specify prerequisites or exclusions. The only implied usage is for KiCad PCB files, but no explicit context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_projectC
Basic validation of a KiCad project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'basic validation' but doesn't clarify what that involves (e.g., syntax checks, file integrity, error reporting), whether it's read-only or has side effects, or any performance considerations. This leaves key behavioral traits unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, avoiding redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter, no annotations, and an output schema (which handles return values), the description is minimally complete. It states the tool's purpose but lacks details on validation scope, behavioral traits, and usage context, making it adequate but with clear gaps for informed tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, so the description must compensate. It implies validation of a 'KiCad project' via 'project_path,' adding minimal context about the parameter's purpose. However, it doesn't detail path format, constraints, or examples, resulting in baseline adequacy without full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool performs 'basic validation of a KiCad project,' which provides a clear verb ('validate') and resource ('KiCad project'). However, it's vague about what 'basic validation' entails compared to siblings like 'run_drc_check' or 'analyze_project_circuit_patterns,' lacking specific differentiation in scope or depth.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. With siblings like 'run_drc_check' (likely more detailed checks) and 'analyze_project_circuit_patterns' (pattern analysis), it fails to specify scenarios, prerequisites, or exclusions, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v1.0.0- Changed
analyze_bom2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
analyze_project_circuit_patterns2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
analyze_schematic_connections2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
export_bom_csv2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
extract_project_netlist2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
extract_schematic_netlist2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
find_component_connections2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
generate_pcb_thumbnail2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
generate_project_thumbnail2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
identify_circuit_patterns2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
- Changed
run_drc_check2 fields changed- removed
Input schema / properties / ctx / $refRemoved value: -"#/$defs/Context" - added
Input schema / properties / ctx / anyOfAdded value: +[ + { + "$ref": "#/$defs/Context" + }, + { + "type": "null" + } +]
16 tool updates
- First observed
analyze_bom - First observed
analyze_project_circuit_patterns - First observed
analyze_schematic_connections - First observed
export_bom_csv - First observed
extract_project_netlist - First observed
extract_schematic_netlist - First observed
find_component_connections - First observed
generate_pcb_thumbnail - First observed
generate_project_thumbnail - First observed
get_drc_history_tool - First observed
get_project_structure - First observed
identify_circuit_patterns - First observed
list_projects - First observed
open_project - First observed
run_drc_check - First observed
validate_project
TDQS
Scored across 16 tools
There is significant overlap between several tools, particularly in the analysis and extraction categories. For example, analyze_schematic_connections and find_component_connections both deal with connections, while extract_project_netlist and extract_schematic_netlist have unclear boundaries. However, the descriptions help clarify some distinctions, preventing complete confusion.
Most tools follow a consistent verb_noun pattern (e.g., analyze_bom, export_bom_csv, list_projects), which is clear and predictable. There are minor deviations like get_drc_history_tool (redundant 'tool' suffix) and generate_pcb_thumbnail (slightly different structure), but overall the naming is coherent and readable.
With 16 tools, the count is slightly high but reasonable for a KiCad server covering project management, analysis, and export functions. It feels comprehensive rather than bloated, though some consolidation might improve focus. The scope justifies most tools, but it borders on being heavy.
The toolset covers key areas like project listing, validation, analysis, and export, with good lifecycle coverage for KiCad workflows. Minor gaps exist, such as no direct PCB editing or schematic modification tools, but agents can likely work around these with the provided analysis and validation tools for a complete design process.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
The Google GKE MCP server is a managed Model Context Protocol server that provides AI applications with tools to manage Google Kubernetes Engine (GKE) clusters and Kubernetes resources. It exposes a structured, discoverable interface that allows AI agents to interact with GKE and Kubernetes APIs, enabling them to inspect cluster configurations, retrieve Kubernetes resource YAMLs, monitor operations like cluster upgrades, diagnose issues, and optimize costs—all without needing to parse text output or use complex kubectl commands.
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA typed Model Context Protocol server that exposes KiCad 10 EDA workflows to language-model clients through validated tool calls.MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.2MIT
- AlicenseBqualityAmaintenanceAn MCP server that enables AI assistants to analyze schematics, inspect PCBs, trace connections, validate designs, and generate embedded code for KiCad projects.39139MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with KiCAD for PCB design automation.41 npmMIT