Reflex Docs MCP Server
Fetches Reflex release notes from GitHub and clones the Reflex documentation repository for indexing.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Reflex Docs MCP Serversearch docs for form component example"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Reflex Docs MCP Server
Version 0.2.0 — 14 tools, connection pooling, FTS5 query upgrades, TTL caching
New in 0.2.0
New Tools
get_code_examples(topic)— Find Python code examples from docs for a topicdecode_error(error_text)— Analyze a Reflex error and find relevant docsget_changelog(version?)— Fetch Reflex release notes from GitHubget_migration_guide(from_version, to_version)— Get migration guidance between versionssearch_api_reference(symbol)— Look up API reference for a Reflex symbolget_component_props(name)— Get only the props table for a componentlist_recipes(category?)— Browse recipe/tutorial pages
Enhancements
search_docs— Newfuzzyflag (prefix expansion),include_contentflag (full page content)get_doc— Newextract_codeflag (return only fenced code blocks)
Performance
SQLite connection pooling via
threading.local()with persistent per-thread connectionsWAL journal mode, 64 MB page cache, 256 MB mmap for concurrent reads
LRU cache (512 entries) on slug lookups
In-process TTL cache (300s default) on search results
FTS5 query preprocessor: phrase match + prefix expansion
Incremental indexing — skips re-index if git commit unchanged
Ground AI agents in real, up-to-date Reflex docs via a fast, local MCP server.
Python: 3.14 recommended. Compatible with 3.13+.
Related MCP server: LlamaIndex Documentation MCP Server
What It Does
Full‑text search over Reflex docs (SQLite FTS5)
Section‑level retrieval for precise context
Component index for
rx.*lookupsFastMCP server with stdio and SSE transports
Quickstart
# Create venv
python3.14 -m venv .venv
. .venv/bin/activate
# Install (local checkout)
pip install -e .
# Index docs (clones Reflex docs and builds search index)
python -m reflex_docs_mcp.indexer
# Run MCP server (stdio)
python -m reflex_docs_mcp.server
# Run MCP server over SSE
python -m reflex_docs_mcp.server --transport sse --host 127.0.0.1 --port 8000Install From PyPI
pip install reflex-docs-mcpMCP Tools
search_docs(query, limit?, include_content?, fuzzy?)— Full-text search with fuzzy matchingget_doc(slug, extract_code?)— Retrieve a full doc page by sluglist_pages(prefix?, limit?)— List doc pages by slug prefixlist_components(category?)— List all Reflex componentssearch_components(query, limit?)— Search components by name/descriptionget_component(name)— Get details about a specific componentget_component_props(name, filter?)— Get component props tableget_stats()— Database statisticsget_code_examples(topic, limit?)— Find Python code examples for a topicdecode_error(error_text, context?)— Analyze errors against docsget_changelog(version?, limit?)— Fetch Reflex release notesget_migration_guide(from_version, to_version)— Migration guidance between versionssearch_api_reference(symbol)— API reference lookuplist_recipes(category?)— Browse recipe/tutorial pages
Local MCP Config (VS Code)
The repository includes a ready-to-use config at .vscode/mcp.json that runs the server with the local venv.
Global Install MCP Config (VS Code)
If you install the package globally with pip, use one of these in .vscode/mcp.json:
Using module invocation:
{
"servers": {
"reflex-docs": {
"type": "stdio",
"command": "python3",
"args": ["-m", "reflex_docs_mcp.server"],
"env": {
"REFLEX_DOCS_AUTO_INDEX": "true"
}
}
},
"inputs": []
}Using the CLI entry point:
{
"servers": {
"reflex-docs": {
"type": "stdio",
"command": "reflex-docs-mcp",
"args": [],
"env": {
"REFLEX_DOCS_AUTO_INDEX": "true"
}
}
},
"inputs": []
}Project Layout
├── main.py # MCP stdio entry point
├── src/reflex_docs_mcp/
│ ├── models.py # Pydantic data models
│ ├── database.py # SQLite + FTS5 operations
│ ├── parser.py # Markdown parser
│ ├── http.py # Shared HTTP client with TTL cache
│ ├── indexer.py # Docs cloning & indexing
│ └── server.py # MCP server (stdio + SSE)
├── render.yaml # Render deployment config
├── Procfile # Process definition
└── test.py # Groq + MCP demo clientDemo (Optional)
The demo client uses Groq (OpenAI-compatible API) and the MCP Python client.
pip install reflex-docs-mcp[demo]
cp env.example .env
# Add GROQ_API_KEY to .env
python test.pyNotes
env.examplecontains Groq settings.The indexer writes to
data/reflex_docs.dbby default.On startup, the server auto-builds the index if missing. Controls:
REFLEX_DOCS_AUTO_INDEX(default: true)REFLEX_DOCS_DOCS_SRC(path to clone docs into, default:docs_src)REFLEX_DOCS_SKIP_CLONE/REFLEX_DOCS_FORCE_CLONEREFLEX_DOCS_KEEP_EXISTINGREFLEX_DOCS_CACHE_TTL(default: 300) — Seconds for search cache TTLREFLEX_DOCS_HTTP_TIMEOUT(default: 10) — Seconds for outbound HTTP requestsREFLEX_DOCS_MAX_SEARCH_LIMIT(default: 30) — Hard cap on search result limitREFLEX_DOCS_ENABLE_LIVE_FETCH(default: true) — If false, disable live HTTP fetches
License
MIT
Available Tools
14 toolsdecode_errorA
Analyze a Reflex error and find relevant documentation.
Args: error_text: The error message or traceback text context: Optional additional context about what you were doing
Returns: Dict with error class, rx symbols, relevant docs, and search queries used
| Name | Required | Description | Default |
|---|---|---|---|
| error_text | Yes | ||
| context | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions return type and fields, but lacks details on read-only nature, authorization needs, or side effects. Minimal but acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with main purpose, uses clear Args/Returns structure, no redundant prose. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description briefly mentions return fields, which is sufficient. Covers all needed info for a simple 2-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0%, so description adds meaning: clarifies 'error_text' is the error message/traceback and 'context' is optional additional context. Defines each parameter's purpose beyond type alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool analyzes errors and finds documentation, with a specific verb 'analyze' and target resource 'Reflex error'. It distinguishes from siblings that retrieve documentation or components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for error analysis, but no explicit when-to-use or when-not-to-use compared to alternatives. Could mention searching docs directly for non-error queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changelogA
Fetch Reflex release notes from the changelog.
Args: version: Specific version to fetch (e.g., "0.6.1"). Empty for latest releases. limit: Number of recent releases to return if version is empty (default: 5)
Returns: Dict with requested version, count, source URL, and release sections
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the return structure (version, count, source URL, release sections) and implies non-destructive read behavior, but does not explicitly state safety or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear one-sentence purpose followed by structured args and returns. It uses minimal text while conveying all necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool with two parameters and an output schema, the description covers all aspects: what it does, how to use parameters, and what the return value contains. No gaps are evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It adequately explains version as a specific version or empty string, and limit as number of recent releases with default 5, which fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches Reflex release notes from the changelog, using specific verbs and resources. It distinguishes itself from sibling tools like get_doc or get_migration_guide by focusing solely on changelog/release notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains usage via parameters: version for specific release or empty for latest, and limit for number of recent releases. It does not explicitly differentiate from siblings but implies this tool is for release notes, not other documentation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_code_examplesA
Find Python code examples from Reflex docs related to a topic.
Args: topic: Topic to search for (e.g., "state vars", "event handlers") limit: Maximum number of code examples to return (default: 5)
Returns: Dict with topic, count, and list of code examples with source info
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return format (dict with topic, count, list of examples) and source info. No annotations provided, so description carries full burden; it describes side-effect-free read operation adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence for purpose, followed by clean bullet list for parameters. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with output schema, description covers what the tool does, parameters, and return format. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description compensates fully by explaining each parameter: topic with examples, limit with meaning and default. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Find' and specific resource 'Python code examples from Reflex docs' differentiate from siblings like 'get_doc' or 'search_docs' which return full documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., search_api_reference, search_docs). Agent must infer from name, which may lead to incorrect selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentA
Get detailed information about a specific Reflex component.
Args: name: Component name (e.g., "rx.box", "rx.button", "box", "button") The "rx." prefix is optional.
Returns: Component info with name, category, description, and documentation URL
Example: get_component("rx.box") get_component("button")
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns component info including name, category, description, and documentation URL, and that the 'rx.' prefix is optional. It does not mention rate limits or authentication, but for a read-only tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Example) and is concise. Every sentence adds value, and it is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter, and the description covers what it does and what it returns. The presence of an output schema means return values don't need further explanation. However, it lacks information on error handling or behavior when the component is not found, which would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter 'name' has 0% schema description coverage, but the description fully explains it: 'Component name (e.g., "rx.box", "rx.button", "box", "button") The "rx." prefix is optional.' This adds critical meaning beyond the schema, justifying a top score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Get detailed information about a specific Reflex component', which is a clear verb+resource statement. It distinguishes itself from siblings like search_components (which is for searching) and get_component_props (which focuses on props).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples (get_component("rx.box"), get_component("button")) and explains the optional prefix, giving clear usage context. However, it does not explicitly state when to use this over siblings like search_components or get_component_props, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_component_propsA
Get the props table for a specific Reflex component.
Args: name: Component name (e.g., "rx.button", "button"). The "rx." prefix is optional. filter: Optional filter string to match prop names or descriptions
Returns: Dict with component name, total props count, and filtered props list
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return format (dict with specific fields) but does not disclose error behavior (e.g., missing component) or confirm read-only nature. No annotations provided to cover these gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with args/returns sections, front-loaded purpose, but slightly verbose for a tool description. Could be more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, both parameters, and return format. Lacks error handling details, but for a read-like tool with simple parameters, it is fairly complete. Output schema exists, reducing burden on description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds significant meaning beyond the schema: explains 'name' accepts optional 'rx.' prefix and 'filter' matches prop names/descriptions. Schema has 0% description coverage, so description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states it retrieves the props table for a Reflex component. Differentiates from sibling tools like 'get_component' which likely returns full component details, and 'list_components' which lists components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides examples for the 'name' parameter and optional 'filter', but does not explicitly state when to use this tool over alternatives like 'get_component' or 'search_components'. Implied usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docA
Retrieve a full documentation page by its slug.
Args: slug: Document slug (e.g., "library/layout/box", "components/rendering_iterables") extract_code: If True, return only fenced code blocks from the page
Returns: Full document with title, URL, and all sections with markdown content
Example: get_doc("library/layout/box") get_doc("state/overview", extract_code=True)
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| extract_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses the return structure (title, URL, sections with markdown content) and the behavioral change with 'extract_code'. It omits any mention of authentication, rate limits, or error handling, but these are not critical for a read-only retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-organized with clear sections (summary, args, returns, example). Every sentence contributes meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, presence of an output schema, and clear description of return values, the definition is complete. It covers what the tool does, its parameters, and typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the input schema by providing concrete examples for 'slug' and explaining the purpose of 'extract_code' ('return only fenced code blocks'). This fully compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve') and resource ('full documentation page by its slug'), making the tool's purpose immediately apparent. It distinguishes from sibling tools like 'list_components' and 'search_docs' by focusing on single-page retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical usage examples and explains the effect of the optional 'extract_code' parameter. However, it does not explicitly state when to use this tool versus alternatives, nor does it offer exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_migration_guideA
Get migration guidance between two Reflex versions.
Args: from_version: The version you're migrating from (e.g., "0.5.0") to_version: The version you're migrating to (e.g., "0.6.0")
Returns: Dict with breaking changes, relevant docs, and changelog section
| Name | Required | Description | Default |
|---|---|---|---|
| from_version | Yes | ||
| to_version | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes the return value but does not mention read-only nature, authentication needs, error behavior for invalid versions, or any side effects. Output details are provided but behavioral traits are incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with no wasted words. It front-loads the purpose in one sentence, then uses a clear Args/Returns structure. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 string inputs, dict output), the description covers purpose, parameters, and return value. Missing elements include error handling and version validation, but overall it is sufficiently complete for a basic query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to both parameters by providing clear purposes and example values (e.g., '0.5.0'), which the schema lacks (0% coverage). This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides migration guidance between two Reflex versions, which is a specific verb-resource pair. It distinguishes itself from siblings like get_changelog and get_doc by focusing on cross-version migration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for migration planning by naming the parameters, but does not explicitly state when to use this tool over alternatives like get_changelog or get_doc. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsA
Get statistics about the indexed documentation.
Returns: Dictionary with counts of pages, sections, and components
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description should disclose behavioral traits. It only states the output format without indicating whether the operation is read-only, idempotent, or has any side effects. The tool likely performs a simple read, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that convey the core purpose and output. No redundant information, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and the presence of an output schema, the description provides basic completeness by naming the return fields. However, it lacks context on data freshness, any dependencies, or whether stats are computed live or from a snapshot, which would be useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description cannot add parameter semantics beyond the schema. It mentions the return structure, which is helpful but not required for parameter understanding. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get statistics about the indexed documentation.' It specifies what is returned (counts of pages, sections, components) and distinguishes it from sibling tools like get_doc or list_components, which fetch specific content rather than aggregate stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or limitations. For a simple stats tool, context about refresh rate or scope is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_componentsA
List all documented Reflex components.
Args: category: Optional category filter (e.g., "layout", "forms", "data-display")
Returns: List of components with name, category, description, and documentation URL
Example: list_components() list_components("layout") list_components("forms")
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes return format (list with fields) and mentions filtering. It doesn't disclose side effects, but as a read-only list tool, this is sufficient. Could add note about non-destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise docstring style with Args, Returns, Example. Front-loaded with purpose. No wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one optional parameter and existing output schema, the description fully explains what is returned and how to filter. Examples cover typical use. Complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0% but description adds examples of valid category values ('layout', 'forms', 'data-display'), which compensates. The parameter meaning is clear from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all documented Reflex components' with a specific verb and resource. It distinguishes from siblings like 'get_component' (single) and 'search_components' (search) through context. The optional category filter is explicitly mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Examples show usage with and without filter. While it doesn't explicitly state when not to use, the sibling tool names imply alternatives. The description lacks explicit exclusions but is clear enough for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesA
List documentation pages, optionally filtered by slug prefix.
Args: prefix: Optional slug prefix (e.g., "library/", "state/") limit: Maximum number of results to return (default: 200)
Returns: List of pages with slug, title, and URL
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return format (slug, title, URL) and parameter behavior (prefix filtering, limit). However, it does not mention authentication, rate limits, or any side effects, which is acceptable for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured: a one-line summary followed by clearly labeled Args and Returns sections. Every sentence serves a purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional parameters, output schema with clear fields), the description covers parameters and return values adequately. It could mention default behavior for no prefix (all pages) or pagination, but overall it is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds valuable meaning: it explains 'prefix' with an example (e.g., 'library/') and 'limit' with its default value. This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'list' and resource 'documentation pages' with an optional filter. However, it does not explicitly differentiate from sibling list tools like list_components or list_recipes, relying on the tool name for distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing what it does (list pages optionally filtered by prefix) but provides no explicit guidance on when to use this tool versus alternatives such as get_doc or search_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipesA
Browse recipe and tutorial pages from Reflex docs.
Args: category: Optional category filter (e.g., "auth", "database")
Returns: Dict with category filter, count, and list of recipes with summaries
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only mentions the return structure. It does not disclose whether the tool is read-only, rate limits, performance implications, or any side effects, which is insufficient for a tool with no safety cues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a clear one-line summary followed by structured Args/Returns sections. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 optional param, output schema exists), the description fully explains the return structure (category filter, count, list) and covers the essential aspects, making it complete for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds examples ('auth', 'database') for the 'category' parameter, compensating for the input schema's 0% coverage and providing meaningful guidance beyond the schema's default string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Browse recipe and tutorial pages from Reflex docs' with a specific verb and resource. It distinguishes from sibling tools like 'list_components' and 'list_pages' by focusing on recipes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'search_docs' or 'get_doc'. It lacks explicit context for when to browse versus search, and no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_api_referenceA
Look up API reference documentation for a Reflex symbol.
Args: symbol: The symbol to look up (e.g., "rx.State", "rx.button", "EventHandler")
Returns: Dict with symbol info, headings, code blocks, and tables
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It details the return structure (dict with symbol info, headings, code blocks, tables) but does not explicitly state it is read-only or describe error behavior (e.g., symbol not found). The description adds moderate value but lacks full behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient: one line for purpose, followed by args/returns. Every sentence adds value, with no redundancy. The structure is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter lookup tool, the description is largely sufficient. It explains the return format (dict with specific fields), though it could mention edge cases (e.g., symbol not found) or provide more detail about the structure of the dictionary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'symbol' with 0% description coverage. The description compensates well by explaining its purpose ('The symbol to look up') and providing clear examples, adding meaningful context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Look up') and the specific resource ('API reference documentation for a Reflex symbol'), with concrete examples like 'rx.State', 'rx.button', 'EventHandler'. This distinguishes it from siblings like get_doc or search_docs, which cover broader documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as search_docs or get_code_examples. The description does not specify exclusions or prerequisites, limiting the agent's ability to decide between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_componentsA
Search components by name or description.
Args: query: Search query (e.g., "button", "layout", "table") limit: Maximum number of results to return (default: 20)
Returns: List of matching components with name, category, description, and documentation URL
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only mentions return fields. No disclosure of side effects, authentication needs, rate limits, or whether it is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, uses Args/Returns sections, no unnecessary words. Each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers basic usage and return fields, but lacks details on pagination, ordering, case sensitivity, or behavior when no results. Adequate for a simple search but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates with examples for 'query' and explains default for 'limit'. Adds meaning beyond raw schema, though could include validation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool searches components by name or description, distinguishing it from sibling tools like list_components or search_docs. The verb 'search' and resource 'components' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like list_components or search_docs. The description only states functionality, not context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsA
Search Reflex documentation by keyword or natural language query.
Args: query: Search query (e.g., "rx.foreach", "state management", "styling") limit: Maximum number of results to return (default: 10) include_content: If True, include full page content in each result (max 5 results) fuzzy: If True, enable prefix expansion for broader matching (default: True)
Returns: List of matching documentation sections with slug, title, score, snippet, and URL
Example: search_docs("rx.foreach") search_docs("how to style components", fuzzy=True)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No | ||
| include_content | No | ||
| fuzzy | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses key behaviors: supports natural language queries, includes content option with limit of 5, and fuzzy matching default. Since annotations are absent, description carries full burden. It covers major behavioral traits without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with Args, Returns, and Example sections. Every sentence is informative and necessary, no fluff. Front-loaded with purpose and then details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that output schema exists, description's mention of 'slug, title, score, snippet, and URL' is sufficient. With 4 parameters and no annotations, description is complete. Lacks only explicit usage guidelines for sibling differentiation, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage (no param descriptions in schema), but the tool description fully explains each parameter: query as 'Search query', limit as max results with default, include_content with behavior and max 5 constraint, fuzzy with prefix expansion and default. Adds significant meaning beyond schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches 'Reflex documentation by keyword or natural language query', with specific verb 'search' and resource 'Reflex documentation'. Distinguishes itself from siblings like search_api_reference and search_components by focusing on general documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides examples and parameter descriptions, but does not explicitly state when to use this tool versus siblings like search_api_reference or search_components. No guidance on exclusions or alternatives beyond implied purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v0.2.0- First observed
decode_error - First observed
get_changelog - First observed
get_code_examples - First observed
get_component - First observed
get_component_props - First observed
get_doc - First observed
get_migration_guide - First observed
get_stats - First observed
list_components - First observed
list_pages - First observed
list_recipes - First observed
search_api_reference - First observed
search_components - First observed
search_docs
TDQS
Each tool has a clearly distinct purpose: error decoding, changelog, code examples, component details, props, full doc pages, migration guides, stats, and various listing/search functions. Even overlapping tools like get_component, list_components, and search_components are complementary with clear boundaries.
All tools follow a consistent verb_noun pattern with snake_case (e.g., decode_error, get_changelog, list_components, search_docs). No mixing of conventions, making the interface predictable.
14 tools is well-scoped for a documentation server. It provides a comprehensive set of operations without being overwhelming, covering error analysis, browsing, searching, and retrieval.
The tool set covers all major documentation needs: error-assisted lookup, search by keyword/API symbol/component, browsing components/pages/recipes, retrieving full docs and migration guides, and obtaining statistics. No obvious gaps for typical agent interactions with a framework's docs.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search the Cerebrium docs: deployment, cerebrium.toml, hardware, endpoints. Also sends feedback.
Retrieve information from the Medusa documentation to assist you with your Medusa development.
Search the SiteGPT documentation: setup, features, API reference, troubleshooting.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.7221MIT
- FlicenseNot gradedqualityDmaintenanceEnables searching and fetching LlamaIndex documentation for integration with VS Code Copilot and other MCP clients.1-
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to search and retrieve information from large technical documentation (OpenAPI specs, markdown) via intelligent chunking and semantic search.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform semantic, hybrid, and filtered search on indexed local documentation with RAG capabilities.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/itsmeadarsh2008/reflex-docs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server