A collection of multiple MCP servers for Google Workspace integration, Chrome DevTools Protocol control, code search, Obsidian notes, remote command execution, document searching, and TinyDB database operations.
This collection of 32 tools shows mixed quality. Strengths: most tools have clear action-verb names (read_gmail, get_page_content, search_codebase) and many include input schemas with type information. Weaknesses: descriptions vary widely in quality; many are generic or under-specified; several tools lack parameter descriptions; no output schemas are documented; error handling is minimal; several parameter relationships are undocumented (e.g., host/port defaults are mentioned but not formally constrained); tool composition issues exist (e.g., both get_last_10_emails and read_gmail_emails read emails but with different signatures). The collection spans multiple independent servers (Gmail, Chrome CDP, code search, Obsidian, TinyDB) which means QA is fragmented. Per-tool analysis below shows average quality around 42-48 across the 32 tools; several tools lack critical documentation.
Retrieve all documents from a table.
Append content to the end of the currently active file.
Append content to the end of a vault file. Creates the file if it doesn't exist.
Configure the Obsidian API connection. Settings are saved to connection.json.
Check if a document with a given ID exists in the table.
Create a new file or update an existing file in the vault.
Create a new table in a TinyDB database.
No output schemas documented for any tool. LLMs cannot plan downstream tool calls or extract needed fields without knowing return structure. This violates the 'response-shaper' and 'tool' patterns and makes composition error-prone.
Redundant email tools: read_gmail_emails and get_last_10_emails both read emails but differ in signature and behavior. LLMs will waste reasoning cycles deciding between them. Merge into one tool (e.g., read_gmail_emails with optional num_emails parameter defaulting to 10).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Delete the currently active file in Obsidian.
Drop a specific table from a TinyDB database.
Drop all tables from a TinyDB database.
Execute JavaScript in the page context and return the result.
Return the content of the currently active file in Obsidian.
Get a single document by ID or query.
Gets the last 10 emails from the user's Gmail inbox, excluding auto-generated Gmail messages (e.g. "This message was automatically generated by Gmail."). Returns a markdown string with id, snippet, and body for each.
Get the current page content.
Get the current page content as markdown to reduce token usage. Converts headings, links, and lists to markdown. Skips script/style/iframe. More compact than HTML and often clearer than plain text for structure.
Get basic details about the Obsidian REST API server and authentication status.
Get the content of a specific file in the vault.
Insert one document. document can be a JSON object or a TOON string (decoded to an object server-side).
Insert multiple documents. documents can be a JSON array or a TOON string (decoded to a list server-side).
List all tables in a TinyDB database.
List open Chrome tabs.
List files in a vault directory.
Navigate a tab to a URL.
Insert content into the active file relative to a heading, block reference, or frontmatter field.
Insert content into a vault file relative to a heading, block reference, or frontmatter field.
Returns server status.
Reads the latest emails (count defined by num_emails) from the user's Gmail inbox, excluding auto-generated Gmail messages (like "This message was automatically generated by Gmail.") and those without a plain text or HTML body. Returns a markdown string.
Build a Semble index from a local directory and search it.
Search for documents matching a query.
Build a Semble index from a GitHub repo and search it.
Replace the entire content of the currently active file.
Destructive tools (delete_active_file, drop_table, drop_tables) lack confirmation/dry-run patterns. Agents can permanently delete data without reversibility. No error guidance on recovery or undo.
Parameter relationships undocumented in several tools. E.g., get_document accepts both doc_id and query parameters but doesn't state they are mutually exclusive or what happens if both are provided. This causes invalid calls.
Minimal error handling across all tools. No recovery guidance. Error responses don't tell the LLM what to do next (e.g., 'User not found. Try search_users() first.'). Errors are likely generic HTTP codes or exceptions.
ping tool (TinyDB) is deprecated in the MCP spec (removed as of 2026-07-28). It serves no real purpose in modern MCP. Replace with health-check instrumentation or remove entirely.
Generic descriptions lacking 'when to use' guidance. E.g., 'Get the current page content.' doesn't explain when to call it vs get_page_content_markdown. Similarly, 'List open Chrome tabs.' lacks context on prerequisites (Chrome DevTools must be running on specified host:port).
No pagination support on potentially large result sets. all_documents and search_documents may return thousands of records, exhausting context windows. No limit, offset, or cursor parameters documented.
Some parameter descriptions are bare or incomplete. E.g., 'Index of the tab (default: 0).' doesn't explain what happens if tab_index is out of bounds. 'Port number (e.g. 27124).' lacks range constraints or why this specific default.
No permission gates or scope declarations. Tools like delete_active_file and drop_tables can destroy data without authorization checks. No audit trail or logging of who called what, when, and with what result.