The TypeScript toolkit for building MCP servers without the boilerplate.
mcpkit is a scaffolding framework with 14 example tools across multiple templates. Tool definitions are present with schemas and descriptions, but quality is inconsistent. Most tools have basic descriptions (10-100 chars, below the 194-char baseline) and minimal parameter documentation. The 'add' tool exemplifies good practice (clear name, typed params with descriptions), but many utility tools ('ping', 'random_uuid', 'now') lack parameter depth. Database tools (create_note, update_note, delete_note) have reasonable schemas but sparse error guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk classifications. Output schemas are not documented. This is a teaching framework, not production-grade, but definitions are structurally sound.
Add two numbers and return the sum.
Create a new note. Returns the inserted row.
Delete a note by id.
Fetch a single note by id.
Fetch a URL with GET and return its body. Truncates after 100KB.
Fetch a URL and parse the body as JSON.
List notes, most recently updated first.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. delete_note, update_note, create_note should declare destructive/write hints for agent safety.
Output schemas not documented. Tools return results but LLMs cannot plan downstream calls without knowing response structure. E.g., create_note returns 'inserted row' but field names are opaque.
Descriptions too brief (avg 50-70 chars vs 194-char baseline). 'Return a pong with a server-side timestamp' lacks context for when/why to call. Descriptions should explain WHAT, WHEN, and any prerequisites.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Return the current time as ISO-8601.
Return a pong with a server-side timestamp.
Return the public IP address of this server.
Generate a v4 UUID.
Reverse a string. Useful for sanity-checking the wiring.
Search notes by substring in title or body. Case-sensitive (sqlite LIKE).
Update title and body of an existing note.
No error recovery guidance. Tools lack descriptions of failure modes or recovery steps. E.g., http_get truncates at 100KB but does not document what happens or how to handle truncation.
Pagination not fully documented. list_notes and search_notes accept limit/offset but descriptions do not explain total count, whether results are sorted, or edge cases (empty results, offset > total).