Recursive Language Model MCP Server for Claude Code - implements the RLM pattern from Zhang et al. (2025), treating prompts as external environment objects for programmatic manipulation
RLM-MCP has 10 tools with canonical naming (rlm.category.action pattern) and all have descriptions. However, parameter schemas are incomplete or missing for several tools. Tool #7 (rlm.search.query) has its file listed as logging_config.py, suggesting schema visibility issues. Parameter descriptions exist but lack detail on constraints, formats, and ranges. Error handling is not evident in the provided code. Output schemas are not documented. The server uses FastMCP with explicit name= support for canonical naming, which is good, but schema completeness and LLM-optimized descriptions need work.
List all artifacts in a session, optionally filtered by span
Store a derived artifact with optional span provenance
Create chunks from a document using specified chunking strategy
List all documents loaded in a session
Load documents into a session from various sources (file, URL, inline, directory, glob)
Export session artifacts and documents to a GitHub repository with secret scanning
Search documents in a session using BM25 or keyword matching
Close an RLM session and return summary statistics
Parameter schemas lack constraint documentation. Numeric parameters (max_tool_calls, max_chars_per_response, max_chars_per_peek, limit) have no min/max bounds specified. LLMs will pass unbounded values, risking API failures or timeouts.
rlm.chunk.create strategy parameter is documented as 'object' with inline description of nested fields, but no formal JSON Schema for the strategy object structure. LLMs cannot validate nested parameter shapes.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., span_id from rlm.docs.load, artifact_id from rlm.artifact.store). Breaks tool chaining.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Create a new RLM session for processing large contexts
Retrieve a specific span (chunk) by ID with content and provenance
Error handling and recovery guidance absent from tool descriptions. No indication of retryable vs. fatal errors, or what the LLM should do if a call fails (e.g., 'session not found' → call rlm.session.create).
rlm.search.query file path listed as logging_config.py instead of search.py, suggesting schema visibility or registration issues. Cannot verify actual parameter definitions.