A Model Context Protocol server providing tools for file operations, database access, GitHub integration, web searching, command execution, logging, network requests, and local file searching
mcp-toolkit presents 24 tools with mixed quality. Naming is generally verb-first and clear (execute_command, db_query, github_list_repos). However, critical gaps exist: (1) Descriptions are present but often too brief (under 50 chars for several tools like 'db_close', 'db_rollback_transaction'); (2) Parameter schemas are visible and include types, but many lack detailed constraints (no enums where appropriate, missing min/max on numeric parameters like 'timeout' and 'maxResults'); (3) Output schemas are NOT documented anywhere in the provided source, no ResponseSchema or return type hints visible; (4) Error handling is delegated to a generic 'createErrorResponse' wrapper that provides minimal recovery guidance; (5) Security concerns are significant: 'execute_command' accepts arbitrary shell commands without sanitization or sandboxing (HIGH RISK), and database credentials are claimed to come from config.yaml but no validation of credential injection is shown. The baseline for definition quality should be 45-55 for STDIO servers with these characteristics.
使用Brave搜索引擎搜索网页。当需要搜索网页内容时优先使用此工具,而不是使用浏览器。支持高级搜索语法,结果更准确且无广告。
创建目录
开始数据库事务
关闭数据库连接
提交数据库事务
连接到数据库。在执行任何数据库操作前,我会先使用此工具建立连接。我会自动从配置文件读取连接信息,无需手动输入敏感信息。
执行数据库查询。我会使用参数化查询来防止 SQL 注入。对于 Redis,我会自动将命令解析为正确的格式。
execute_command accepts arbitrary shell commands without sanitization, input validation, or sandboxing. This is a critical command injection vulnerability that could allow LLMs to execute destructive or malicious commands.
No output schemas documented for any of the 24 tools. LLMs cannot predict the structure of responses, forcing them to parse free-text or infer field names. This violates the documented output schema requirement.
Database transaction tools (db_begin_transaction, db_commit_transaction, db_rollback_transaction) have minimal descriptions ('开始/提交/回滚数据库事务' - only ~10-15 chars each). This violates the 10-1024 character guideline and leaves LLMs without context on when to use these tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
回滚数据库事务
删除目录
删除文件
使用 Everything 搜索本地文件。当需要在本地快速查找文件时,优先使用此工具而不是操作系统的搜索功能。支持正则表达式和高级搜索语法,搜索速度极快。
执行命令行命令
在GitHub上创建新仓库
获取GitHub仓库中文件的内容
获取GitHub仓库的目录树结构
列出GitHub仓库的文件和目录内容
列出当前用户的GitHub仓库
搜索GitHub代码
搜索GitHub仓库
发送HTTP请求并返回完整响应信息
写入日志到当前工作目录的log目录下,按日期分文件存储
读取文件
替换文件内容(支持多块替换)
写入文件
Simple filesystem tools (create_directory, write_file, read_file, delete_file) all have trivial descriptions under 30 characters. No guidance on when to use them vs. other tools, no warnings about overwriting files, no pagination for large reads.
GitHub tools (github_list_contents, github_get_tree, github_search_repos, github_search_code, github_list_repos) have minimal descriptions (30-50 chars) and no pagination limits documented. Returning all repos or all search results could bloat context.
Numeric parameters lack constraints: 'timeout' in execute_command has no min/max; 'maxResults' in everything_search has no upper bound; 'count' in brave_search claims max 20 but no schema-level enforcement visible. This invites LLMs to pass absurd values.
No error guidance or recovery hints. The generic createErrorResponse() wrapper returns 'Tool execution failed: <message>' without actionable next steps.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in any tool definition, despite several tools being read-only (github_*, search tools) or destructive (delete_*, execute_command). This deprives agents of risk metadata.
execute_command lacks a dry-run or confirmation step. Agents make mistakes, a tool that can rm -rf / or similar destructive commands should require confirmation.
Database tools reference connectionId for later operations, but db_connect description does not clearly state the returned connection ID or how it appears in subsequent calls. Response field naming and chaining IDs not documented.