Base pédagogique MCP & AI Tools — Tutoriels progressifs + serveurs production-ready
23 tools with complete schemas and descriptions, but quality varies significantly. Most tools have adequate naming (verb_noun pattern) and descriptions (50-250 chars), meeting baseline expectations. However, parameter descriptions are often minimal or missing context about constraints, formats, and dependencies. Output schemas are undocumented, LLMs cannot predict response structure. Error handling is absent across all tools; no recovery guidance or actionable error messages. Security tools (write_file, query) lack permission gates or input validation guidance. Composition is reasonable (single responsibility per tool), but chaining metadata is incomplete, e.g., search_repos returns repo names but get_repo_info requires owner/repo separately, forcing extra parsing.
Add two integers and return the sum.
Calculate Body Mass Index from weight (kg) and height (m). Returns a formatted string with the BMI value and category.
Check URL availability with a HEAD request.
Analyse text and return word count, character count, and line count. Returns a JSON string with the keys: word_count, char_count, line_count.
Show column info for a table (name, type, nullable, primary key).
Divide a by b. Raises an error when b is zero.
Return the exact message that was received.
Output schemas undocumented. Tools return strings or JSON but LLMs cannot predict field names, types, or structure. Forces LLMs to parse unstructured text and guess at downstream tool parameters.
No error handling or recovery guidance. Tools like query, write_file, and divide lack actionable error messages. A division-by-zero or SQL syntax error returns raw exception text instead of 'Invalid SQL: expected SELECT statement' or 'Cannot divide by zero, use a non-zero divisor.'
Parameter constraints missing or vague. search_repos max_results has no min/max bounds (LLM could pass 10000). query accepts any SQL string without validation hints. search_files glob pattern lacks examples or format guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Fetch a URL and return pretty-printed JSON.
Fetch a URL and return its content.
Return metadata about a file or directory. Returns JSON with: name, type, size (bytes), modified (ISO timestamp). Path is relative to the sandbox root.
Format a list of strings as a bullet or numbered list.
Get detailed information about a specific GitHub issue. Returns title, state, author, labels, body, and other metadata.
Get detailed information about a GitHub repository. Returns stars, forks, description, language, and other metadata.
List contents of a directory with [DIR] and [FILE] indicators. Path is relative to the sandbox root. Defaults to the root itself.
List issues for a GitHub repository.
List all tables in the database.
Execute a SELECT query and return results as a formatted table. Only SELECT statements are allowed for safety. INSERT, UPDATE, DELETE, DROP, and other modifying statements will be rejected.
Read the contents of a file. Path is relative to the sandbox root.
Search for files matching a glob pattern within the sandbox.
Search GitHub repositories via the public API. Returns a formatted list of matching repos with stars, language, and description. No authentication required (rate-limited to 10 req/min without a token).
Simulate a multi-step process with progress reporting. Reports progress after each step via the Context object.
Validate an email address format and flag suspicious patterns.
Write content to a file. Creates parent directories as needed. Path is relative to the sandbox root. Returns a confirmation message.
Destructive tools (write_file, query with DELETE/UPDATE) lack permission gates, dry-run modes, or confirmation steps. No audit trail or scope declarations. An agent could overwrite critical files or corrupt database without safeguards.
Pagination missing from list tools. list_tables, list_issues, search_repos return unbounded results. Large result sets blow context windows and waste tokens. No limit, offset, or cursor parameters documented.