MCP server that exposes LCP manifest data to AI agents, enabling introspection and documentation of Python packages
LCP server has well-structured tool definitions with consistent naming (verb_noun pattern: resolve_library, list_libraries, get_symbol, search_symbols, get_module_symbols, get_class_members, get_return_type, get_parameter_type). All 8 tools have descriptions (avg ~80 chars, within 10-1024 range). Input schemas are present with typed parameters and descriptions. However, output schemas are not documented in the visible code, LLMs cannot predict return structure. Parameter descriptions are adequate but lack format constraints (e.g., symbol_id format 'module:entity' is stated but not formalized as a pattern). No error handling guidance visible. All tools are READ_ONLY, which is good for safety but limits utility. Missing pagination/limit parameters on list-returning tools (list_libraries, search_symbols, get_module_symbols, get_class_members) despite DEFAULT_MAX_RESPONSE_BYTES constant suggesting truncation is expected.
Get all members (methods, properties) of a class
Get all symbols exported by a module
Get type information for a function parameter
Get the return type information for a function or method
Get detailed information about a specific symbol from a loaded library
List all currently loaded libraries with their metadata
Resolve a library name to an LCP manifest, scanning the package if needed
Search for symbols by name, kind, or module across loaded libraries
Output schemas not documented. LLMs cannot predict return structure (fields, types, nesting). Code shows _fit_list() truncation logic but no schema definition visible for any tool response.
List-returning tools lack pagination parameters (limit, offset, page_size). Code implements truncation via _fit_list() but tools do not expose limit/offset to callers. Agents cannot request specific result counts or iterate through large result sets.
No error handling guidance visible. Code defines _error() helper but no tool descriptions explain what errors can occur, whether they are retryable, or what the LLM should do next (e.g., 'Symbol not found. Try search_symbols() first.').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parameter format constraints stated in descriptions but not formalized. E.g., symbol_id described as 'module:entity' or 'module:Class#member' but no regex pattern or enum in schema. LLMs may pass invalid formats.
Optional 'library' parameter on 6 tools states '(optional if only one library loaded)' but does not document what happens if multiple libraries are loaded and library is omitted. Ambiguous behavior invites misuse.