Code reference detail
server.ts
packages/mcp/src/server.ts
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| agent_advisory | done | Agents must pass the [click_session] ID ( `sessionKey` ) to the next click action. This keeps one agent thread on the same session so a revisit can expand connected content and so ranking can use session distance. MCP tool text states this rule and the unique / ambiguous / search paths clearly ( [mcp_server] `click` ). | 0.101 | |
| click | done | The [click_ontology] function returns compact local context for one target. Input: an idea name, a `path#idea` ref, a `.rq` file path, or an indexed code file ( [click_input], [click_code_file] ). Resolution uses [click_ambiguity]: no match uses search; more than one match is ranked; one match uses [click_output]. Optional [click_max_detail] flags cap how many names and bodies are listed. Optional `sessionKey` continues a [click_session]. A second click on a centre already clicked in that session returns the connected content ( [click_session] ). Surfaces: CLI `reqlan click` ( [click_cli] ), MCP `click` ( [mcp_server] ), and [native_analysis_api] `click`. MCP search and retrieval use this tool only ( ["../extension/agent/skills-and-mcp.rq".mcp_click_retrieval] ). Engine: [click_rust] on ["./cli_package.rq".architecture] / ["../core_analysis/rust_port.rq".analytical_rust_port]. Related: [function_parity], [commands], [agent_advisory], [click_session], [click_input], [click_max_detail], [click_output]. | 0.200 | |
| click_max_detail | done | Flags that cap how many names and bodies click lists. Invalid or missing values use the default. Values less than 1 use 1. Defaults live in `.reqlan/config.json` under `click` ( [configuration_location], [configuration_schema_file] ). CLI and MCP flags override config. - `maxBacklinks` / `--max-backlinks` / `click.maxBacklinks` — first n backlink names in [click_output], then " + m more ". - `maxSiblings` / `--max-siblings` / `click.maxSiblings` — first n sibling names, then " + m more ". - `maxOutbound` / `--max-outbound` / `click.maxOutbound` — first n outbound names or paths, then " + m more ". - `maxCandidates` / `--max-candidates` / `click.maxCandidates` — search hits and ranked ambiguous matches. The default for each list is `click.listLimit` in ["../../packages/analytical/src/core/defaults.json"]. `maxDetail` / `--max-detail` is the old hop-depth for a neighbourhood dump. Unique [click_output] does not use hop depth. The flag is still accepted and ignored on the unique path. | 0.122 | |
| diff | done | Compare ideas in two git snapshots. The key is the file path plus the [idea_name]. The command reads `.rq` files from git and parses each snapshot. It does not read or write the ideas index. Line position does not count. The same body and attributes at a different line are unchanged. Content is the idea body plus its attributes. Change kinds: - created — the key exists only on the right snapshot - deleted — the key exists only on the left snapshot - modified — the key exists on both snapshots and the content differs - moved — the name exists in exactly one file on each side, the paths differ, and the content is the same The same name in more than one file on one side stays on the path-plus-name key. A renamed idea is deleted plus created. Unchanged ideas are omitted. A reference-only edit stays modified. No arguments: if any `.rq` path is staged, unstaged, or untracked and not gitignored, the left side is `HEAD` and the right side is that pending snapshot. Otherwise the left side is `HEAD~1` and the right side is `HEAD`. A non- `.rq` change does not select the pending snapshot. One argument: that revision against `HEAD`. Two arguments: the first revision against the second. A target is a branch, a commit, `HEAD`, `~N` ( `HEAD~N` ), or `<rev>~N`. The pending snapshot uses the working-tree file for an unstaged edit, the index blob when the working tree matches `HEAD`, and the working-tree file when a path is both staged and unstaged. An untracked `.rq` file that git does not ignore is included. If `HEAD` has no parent, the left snapshot is empty and every idea on `HEAD` is created. A missing revision or a directory that is not a git repository is an error. Exit status is 2. A successful diff exits 0, including an empty diff. When a side is filled by a default, the human CLI and [diff_webview] print a header `Comparing <from> -> <to>` before the rows. Explicit two-argument runs omit that header. `--json` and MCP stay a row array only. Surfaces: CLI `reqlan diff` ( [commands] ), MCP [skills_and_mcp.mcp_diff], and [diff_webview]. Engine: ["../../crates/reqlan-analytical/src/diff.rs"]. Git spawns stay hidden ( [consumption_silence] ). Related: [architecture] [function_parity] [idea] [idea_reference] [diff_verbosity] [diff_cli_color] | 0.163 | |
| diff_verbosity | done | Three levels. The default is summary. CLI: `--verbosity summary|references|text`, or `-v` / `-vv`. MCP and [diff_webview] use the same three values. - summary — change kind, idea name, and file. `fromFile` only for moved. - references — summary, plus [idea_reference] targets added on the right and removed from the left. Order each list by name. Omit a target that is on both sides. - text — summary, plus the body and attributes before and after. Created shows the right side. Deleted shows the left side. Modified shows both. Moved has no text change. Do not list reference names at this level. Attributes stay inside modified. The references level does not print attribute text. The text level prints body lines, then attribute lines as `@name` / `@name value`. `--json` omits `references` and `text` at summary. It adds `references` at references only. It adds `text` at text only. | 0.071 | |
| check | done | `reqlan check` should run perform the following checks: - ensure all rq [reference] point to real nodes, unless rq ignored with [comment_reference_ignore]. - this tests rqcomments point to real parts of the namespace, that code references exist, and that rq references exists. - report unresolved imports: [check_unresolved_imports]. - report a comment reference with invalid syntax: [code_comment_syntax_errors]. - report a qualified reference whose file is not on disk: [check_qualified_missing_file]. - report a qualified reference whose `.rq` file does not declare the idea: [check_qualified_missing_idea]. - it should really just be a wrapper of the [index] and return the issues ( as a pipe, terminal output, or json ). Issue order: [check_order_by_target]. Sparse wildcards: [check_wildcard_sparse] via flags [check_wildcard_zero] and [check_wildcard_one]. Path globs: [check_glob_patterns]. Skip missing targets: [check_skip_targets] [check_skip_gitignored_targets]. CLI: ["../cli/cli_package.rq".commands]. MCP: ["../extension/agent/skills-and-mcp.rq".mcp_check]. CI: [check_meta_implementation]. Site demo: ["../site/site.rq".broken_links_showcase]. | 1.000 | |
| check_glob_patterns | done | [check] accepts more than one `--glob` pattern. Repeat `--glob` for each pattern. A file is in the recursive scan when it matches any glob. One `--glob` selects the same files as one path glob. A reference target that matches no glob is still checked. That target must resolve. [check] does not walk a directory that matches no glob. A positional path can name a file outside the globs. [check] checks that file. A positional path that is a directory outside the globs is not walked. An empty `--glob` value is an error. API: `AnalysisApi.check({ pathGlobs, paths })`. CLI: ["../cli/cli_package.rq".commands]. MCP: ["../extension/agent/skills-and-mcp.rq".mcp_check]. Related: [check] | 0.308 | |
| check_unresolved_imports | done | [check] reports an error when an import does not resolve. A missing import path is an error. A named imported idea that is not in the target file is an error. Do not report imported idea names when the path is missing. An existing folder is a valid import path ( [import_folder_targets] ). A remote URL is not a missing path. Import paths with no extension mean `.rq` first ( [implicit_file_extension] ). Ignore a site with [comment_reference_ignore]. Issue kind is `import`. The `label` is the missing path or the missing idea name. Forms: [import_from], [import_namespace], [import_qualified]. Editor underline: [import_does_not_exist_error]. [check_skip_targets] matches that label. [check_skip_gitignored_targets] omits a missing import path that Git ignore rules ignore. Related: [check] [check_order_by_target] [import_does_not_exist_error] | 0.425 | |
| mcp_check | done | MCP `check` wraps [check] for AI clients ( [mcp_server] ). The tool returns JSON issue rows in [check_order_by_target] order. An empty list means that there are no issues. Optional arguments match the CLI [check] flags: glob, wildcard-zero, wildcard-one, skip-targets, and skip-gitignored-targets. `glob` is one path pattern or a list of path patterns ( [check_glob_patterns] ). A file that matches any pattern is in the scan. Related: [mcp_tools] [check] ["../../core_analysis/check.rq".check_unresolved_imports] | 0.243 | |
| mcp_click_retrieval | done | MCP `click` is the canonical search and retrieval tool ( [click], [mcp_server] ). One tool returns compact unique context, ranked ambiguous matches, or search hits. A second click on the same centre in the session returns connected content ( [agent_advisory] ). This surface maximises the token-to-insight ratio: names, short bodies, and caps — not edge dumps or full-graph lists. Keyword search, file context, local graph, and subtree expansion are click paths, not extra MCP tools. Agents must pass `sessionKey` on the next click. Related: [mcp_keyword_search], [mcp_tree_interrogation], [mcp_tree_summarisation]. | 0.144 | |
| mcp_diff | done | MCP `diff` wraps [diff] for AI clients ( [mcp_server] ). Arguments are optional `from`, optional `to`, and optional `verbosity` ( [diff_verbosity] ). The tool returns the same JSON array as `reqlan diff --json`. An empty array means that no idea changed. A missing revision is a tool error. Related: [mcp_tools] [diff] | 0.074 | |
| mcp_interaction_discovery | done | MCP clients discover tools through the MCP protocol tool list. Do not expose a list_interactions MCP tool. | 0.040 | |
| mcp_tools | done | The MCP server ( `@reqlan/mcp`, [mcp_server] ) exposes a small tool set for AI clients. Search and retrieval use [mcp_click_retrieval] only. Reference checks use [mcp_check]. Idea diffs use [mcp_diff]. Do not expose parse, search, list, file context, local graph, summarise subtree, requirement_reference, file_reference, or list_interactions as MCP tools. Those operations stay on AnalysisApi and CLI when they exist. Headless index storage follows [application_memory] ( `<base>/.reqlan` ), shared with the extension and CLI. | 0.097 | |
| mcp_tools_prompt | done | An mcp tool may provide a prompt-oriented entry point for working with the requirement graph. That tool must call [mcp_click_retrieval] for search and retrieval. It must not call the removed tools. | 0.040 | |
| application_memory | done | Base-local application memory for reqlan tools lives under `<base>/.reqlan/`. The presence of `.reqlan` **marks** a directory as a ["../../bases/base.rq".base]; each base owns its own store. Shared by the VS Code extension, ["../../cli/cli_package.rq".cli_package], and MCP ( [mcp_server] ) — not VS Code `globalStorageUri` / extension-private storage. The ideas graph index ( [indexer.index_ideas] and [indexer.index_technology] ) persists as `ideas-index.sqlite` inside that directory. Schema: ["../../indexer/sqlite-schema.rq".ideas_index_sqlite]. Index timing diagnostics persist separately as `index-diagnostics.sqlite` ( [index_diagnostics_store] / ["./index-diagnostics.rq".index_diagnostics] ) so rebuilds of the ideas index do not wipe history. Click session state persists as `click-sessions.sqlite` ( ["../../cli/click.rq".click_session] ) so agent / CLI click cursors survive ideas-index rebuilds. Diagnostics schema: ["../../indexer/diagnostics-schema.rq".diagnostics_sqlite]. WAL sidecars and JSON siblings: ["../../indexer/sidecars.rq".reqlan_directory_layout]. Export form defaults ( all formats via ["../export/export.rq".export_webview], including HTML options in ["../export/html-export.rq".html_export_form] ) persist as `export_settings.json` in the same directory ( active base ). Path ignore rules live as `.rqignore` in the same directory ( [rqignore] / [configuration.configuration_rqignore] ). Git ignore for SQLite stores lives as `.gitignore` in the same directory ( ["../../bases/base.rq".base_initialisation_ignore] ). Path resolution is owned by [application_memory_impl] ( `resolveApplicationMemoryPath` ); consumers must use it ( or `REQLAN_INDEX_PATH` override for a single store ) so tools read and write the same store for a given base. Multi-base discovery / registry: ["../../bases/base.rq".multi_base_environment]. Index engine ownership: ["../../indexer/indexer.rq".ownership]. Extension wiring: [analytical_submodule]. Aligns with ["../../cli/cli_package.rq".function_parity]: shared analytical memory, not host-only state. | 0.494 | |
| headless_consumers | CLI and MCP open the same per-base application memory via [analysis_runtime] / `openAnalysisApi`. They sync on activate or command ( ["./sequencing.rq".headless_sync_on_ready] ). They have no file watchers and no idle stale loop. Shared path rules: [application_memory], `REQLAN_INDEX_PATH` when set. [index_consumers] [cli_package] [mcp_server] | 0.054 | ||
| index_consumers | done | Modules that read or write [ideas_schema.ideas_index_sqlite] / [index]: - Engine write / read: [workspace_index], Rust sync / store under [ownership] - Extension adapter: [editor_index_adapter] ( watchers, Uri conversion, multi-base ) - Headless: [analysis_runtime] for [cli_package] and [mcp_server] - Activity bar: [activity_bar_host] ( ideas-in-file, hop refs, search via fuzzy ) - Ideas Summary: [ideas_summary_panel] ( table SQL, graph slices, overview ) - Search: [fuzzy_search], [file_search] - Check / analyse / export: [check], analytical export APIs - Local graph: [local_graph_analysis] Product aliases: [index_ideas], [index_technology], [consumption]. Related: [cache_reuse.index_cache_reuse], ["./sequencing.rq".index_sequencing]. | 0.169 |
Reference labels
"../../packages/mcp/src/server.ts", ../../../packages/mcp/src/server.ts, ../../packages/mcp/src/server.ts