Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

AIContextBuilder

NUGET · AICONTEXTBUILDER · SCANNED SEP 25

Symbol-aware C# and .NET code context for AI coding assistants.

Available components

70 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency35
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Build provenance not yet verified. View diagnostics → Unverified
  • License check failed: no license is declared. See how to fix → Fail
  • Actively maintained (last published 0 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 30863 tokens (~523/item across 59 items; 54 tools + 5 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
  • Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 54 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 56 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the AIContextBuilder MCP server?

AIContextBuilder runs locally as a NuGet package, launched with dnx AIContextBuilder@0.5.464.41 --yes. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

nuget · AIContextBuilder

# add to Claude Code
claude mcp add gregordadera-aicb -- dnx AIContextBuilder@0.5.464.41 --yes
// .cursor/mcp.json
{
  "mcpServers": {
    "gregordadera-aicb": {
      "command": "dnx",
      "args": [
        "AIContextBuilder@0.5.464.41",
        "--yes"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "gregordadera-aicb": {
      "command": "dnx",
      "args": [
        "AIContextBuilder@0.5.464.41",
        "--yes"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add gregordadera-aicb -- dnx AIContextBuilder@0.5.464.41 --yes
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gregordadera-aicb": {
      "type": "local",
      "command": [
        "dnx",
        "AIContextBuilder@0.5.464.41",
        "--yes"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  gregordadera-aicb:
    command: "dnx"
    args: ["AIContextBuilder@0.5.464.41", "--yes"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "gregordadera-aicb": {
      "Transport": "stdio",
      "Command": "dnx",
      "Arguments": [
        "AIContextBuilder@0.5.464.41",
        "--yes"
      ]
    }
  }
}
// mcp.json
{
  "mcpServers": {
    "gregordadera-aicb": {
      "command": "dnx",
      "args": [
        "AIContextBuilder@0.5.464.41",
        "--yes"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 25 Sept 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 0
    • Tool safety: pass → unverified ▼ security
    • Malware scan: pass → unverified ▼ security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Stability: unverified → 0.03 ▲ functional
    • Package version: 0.5.464.36 → 0.5.464.41 functional
    • Package version: 0.5.464.36 → 0.5.464.40 functional
  • 23 Sept 26 69

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Sept 2026 · Analysed nuget/AIContextBuilder@0.5.464.41

Provenance Inconclusive

We could not complete the check, so nothing is claimed either way. This is a gap on our side, not a finding about the package.

Result Inconclusive
Ecosystem nuget
Reason Signature present, unverified

Signer

Subject CN=NuGet.org Repository by Microsoft,O=NuGet.org Repository by Microsoft,L=Redmond,ST=Washington,C=US
Issuer CN=DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1,O=DigiCert\, Inc.,C=US
Valid from 23 Feb 2024
Valid until 18 May 2027

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 54 exposed · ~30,044 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
solution_config_status ~282

Check whether a solution's Layer Profile, Exclude-Namespaces and Test Profile have been initialized via the guided setup, and which Layer Profile / Exclusion List / Test Profile is currently active. 'initialized' is an explicit marker for all three slots (stamped by apply_solution_config - it is NOT inferred from having an active id, which a user can also set manually via the Settings panel); the testProfile slot additionally reports the effective per-solution active test-detection profile. Pass the session_id; dbPath is optional - omit it to use the server's default config DB (the same one the GUI uses), if the server resolved one. Each slot reports its source (db/sidecar/none): a repo with a valid .aicb.json sidecar but no DB row reads initialized=true, source:sidecar (the sidecar IS consumed at analyze time), not a misleading uninitialized. Use this on solution start: if a slot is not initialized, offer to run init_solution_config + apply_solution_config.

NameTypeReqDescription
dbPathstring|null–Absolute path to the aicb config/master SQLite DB that holds the per-solution configuration. Omit to use the server's default config DB (the same one the GUI uses), if the server resolved one.
sessionIdstringyesThe session_id returned by analyze_solution.

No output schema declared.

No examples provided.

solution_metrics ~669

The solution-wide quality rollup in ONE call - the same numbers the CLI '--fail-on' quality gate evaluates and the QP7 snapshot stamp persists: typeCount/methodCount (logical types - partial fragments merged, multi-TFM deduplicated), complexityMax/complexityAvg, methodsOverComplexityThreshold (STRICTLY greater than complexityThreshold - the response's complexityThresholdBoundary field states it; symbol_metrics' minComplexity and the complex-untested insight floor INCLUSIVELY at >=, so their lists at the same number are larger by exactly the boundary methods; the long-methods insight's complexity arm shares the strict boundary), ceMax/caMax (coupling maxima; Ca = reverse fan-in from the persisted dependencies), plus the quality-insight severity counts (critical/warning/info/ok) and the technical-debt estimate. Pass failOn to evaluate a gate expression (same syntax as 'aicb analyze --fail-on', e.g. 'critical>0 OR ce-max>50') against these numbers - the response then carries gate.passed/violatedClauses (advisory; the blocking gate stays the CLI). knownGateMetrics lists the valid metric tokens. Scope matches the CLI gate: PRODUCTION code only - test projects (per the active test profile) are excluded from every number, exactly as the severity/debt inputs beside them are (one population per gate object). The response says so itself: scope:'production' plus testMethodCount/testTypeCount, the EXCLUDED test-side tallies in the same units - methodCount+testMethodCount is the full solution's method-unit count, so cross-tool comparisons have their denominator. Pass dbPath to use that DB's active QualityProfile for the thresholds AND its configured default layer profile (per-solution > app-global) for the layer-violation severity - the same resolution the CLI gate and list_insights use; an explicit analyze_solution(layerProfile) still wins. The response discloses the effective layerProfile. Omit dbPath for the default profile. Works on recalled sessions - the LOC-based debt/lo…

NameTypeReqDescription
dbPathstring|null–Optional path to an AIContextBuilder SQLite DB. When set, the complexity threshold and producer toggles come from that DB's active QualityProfile (same semantics as list_insights); omit to fall back…
failOnstring|null–Optional quality-gate expression to evaluate against the rollup (CLI '--fail-on' syntax, e.g. 'critical>0 OR debt>120min OR ce-max>50'). An invalid expression or unknown metric is rejected with the k…
sessionIdstringyesThe session_id returned by analyze_solution.

No output schema declared.

No examples provided.

symbol_metrics ~938

Query per-method complexity directly, or rank the complexity hotspots. Returns BOTH McCabe CYCLOMATIC complexity (independent-path count) and SonarSource-style COGNITIVE complexity (how hard the method is to UNDERSTAND: a nesting penalty, else/catch counted, boolean-operator runs collapsed) for every method. Pass symbol=<exact method name> to get both numbers + the parameter count of that method (and any overloads/same-name methods), or the qualified Type.Member form to report that member on that type only - the same string find_usages / find_tests_for / explain_symbol resolve; omit symbol to RANK all methods by complexity descending, optionally filtered to complexity >= minComplexity (0 = no filter). The floor is INCLUSIVE - a method exactly AT minComplexity is listed, and a filtered answer states that as minComplexityBoundary; solution_metrics' methodsOverComplexityThreshold counts STRICTLY greater, so at the same number that count is smaller by exactly the boundary methods. By default ranking + the floor use cyclomatic complexity; set rankByCognitive=true to rank + filter by cognitive complexity instead (surfaces deeply-nested methods a low path-count would otherwise hide). get_context only surfaces complexity as an opt-in tag attribute - this gives a direct queryable/rankable view. Both metrics come from the persisted Roslyn fact (NOT line-count metrics, which are live-only) so it works on recalled sessions (a snapshot taken before cognitive complexity existed reports 0 for it). When ranking, test-project methods are EXCLUDED by default (production hotspots) - set includeTests=true to include them. How many of them cleared the floor is reported as 'testMethodsFiltered: N' - counted over the methods the filter REMOVED, which methodsScanned does not include, so it can exceed that number. When the strongest would have landed INSIDE the shown ranks a note names it and the rank it would hold: in a ranking, a count alone cannot say whether the missing methods sat at…

NameTypeReqDescription
includeTestsboolean–When ranking: include test-project methods (default false - production hotspots; CC-heavy test harnesses would otherwise skew the top-N). Ignored in the by-name symbol lookup (which always returns th…
minComplexityinteger–When ranking (no symbol): only include methods whose ranking complexity (cyclomatic, or cognitive when rankByCognitive=true) >= this. 0 (default) = no filter.
rankByCognitiveboolean–When ranking: rank + filter by COGNITIVE complexity instead of cyclomatic (default false). Both numbers are always present per method; this only changes the sort + minComplexity axis. Ignored in the…
scopestring–When ranking: 'solution' (default) or a namespace prefix to narrow scope. Ignored when symbol is given.
sessionIdstringyesThe session_id returned by analyze_solution.
symbolstring|null–Exact (case-sensitive) method name to report - bare (every same-named method) or in the qualified Type.Member form (that type's member only). Omit to rank all methods by complexity.

No output schema declared.

No examples provided.

symbol_signature ~322

Return a symbol's signature(s) WITHOUT the body: the type declaration, the method/operator signature or a member's declaration (property, field, event, enum member - the last as its qualified Enum.Member form), plus its XML <summary> doc and its declaring file + start line - for understanding an API without reading the whole file/body, and for navigating straight to it. 'file' is the fragment's OWN file (for a partial type a method points at the file the METHOD lives in, not at the first type fragment); it is omitted only when the snapshot carries no path, and a member's 'line' is null (no line fact is modeled for members). Exact (case-sensitive) name match; multiple results for overloads or name collisions. A user-defined operator matches by its METADATA name ('op_Equality' / 'op_Implicit' / …). Leaner than get_context (which returns the full source). Returns a capped envelope (items/count/totalFound/truncated), max 50. Matching is EXACT, so a typo or case-mismatch returns an empty list rather than an error - when nothing matched, the response therefore carries a 'nearest' suggestion (the closest declared name), which distinguishes 'you spelled it differently' from 'this symbol genuinely has no signature'.

NameTypeReqDescription
sessionIdstringyesThe session_id returned by analyze_solution.
symbolstringyesThe exact (case-sensitive) type, method, property, field, event, enum-member or operator name (e.g. 'op_Equality').

No output schema declared.

No examples provided.

usage_report ~1,254

Report the SERVER-side tool-call telemetry: every tools/call invocation the CallTool filter has recorded into the config DB's tool_calls table - cross-client (corpus runs, foreign adopters), not this client's transcript. READ THE SCOPE FIRST - it is narrower than the numbers look, and the response repeats it in recordedVia because a client caches this description until it reconnects: the filter sits on the tools/call pipeline ONLY. A sub-query inside batch or measure records the PARENT call and no child row, and a one-shot `aicb call` invocation records nothing at all - both measured with planted probes. So every count here is a LOWER BOUND, and a tool at 0 was not called THROUGH THIS DOOR rather than not called. What the correction leaves untouched is the cross-client property: no transcript-based view can see a foreign harness at all. Returns overall totals (total calls, error count + rate, distinct tools + sessions, first/last timestamp, the clients + server versions seen) and a per-tool breakdown ranked by call count: calls, errors + rate, and latency (ms) + result size (chars) each as average / nearest-rank p50 + p90 / max - the percentiles are the honest read for the right-skewed latency distribution (one warmup call drags the average). Each tool with errors also carries errorClasses, the exception-TYPE histogram behind its error count (e.g. {"McpException": 3, "ArgumentException": 1}) - read the rate through it: McpException is a GUIDED failure the tool raised on purpose (expired session, unknown policy token), any other type is a defect suspicion worth chasing - with ONE exception the histogram cannot express, which is why argumentBindingErrors exists next to it: that count is the subset where the CALLER named an argument this tool does not have, so the call never reached the tool (neither a defect nor a refusal). It is not derivable from errorClasses, because the same ArgumentException is also what a guard INSIDE a tool raises; a value here means the tool'…

NameTypeReqDescription
sinceDaysinteger|null–Only count calls from the last N days (omit for the whole log; clamped to 1..3650).
topToolsinteger–Cap on the per-tool breakdown, ranked by call count (default 30; clamped to 1..200).

No output schema declared.

No examples provided.

verify_claim ~512

Verify a structured claim about a change by diffing two analyzed sessions (baseline → changed). Supported claim types (MVP): 'no_new_api' (no types/methods were ADDED AND no method signatures changed) and 'symbol_removed_unused' (the named symbol was removed AND had no usages in the baseline's static fan-in graph). Returns a verdict of confirmed / refuted / indeterminate with a reason + evidence. NOTE THE SCOPE OF 'no_new_api': it is about ADDITIONS and SIGNATURE CHANGES, so a REMOVAL does not refute it - a change set that only deletes public API is legitimately 'confirmed'. Removals are therefore never silent: the reason states the boundary and every removal the same diff records is listed as evidence, prefixed '-'. For the removal question ask verify_claim(symbol_removed_unused), or diff_public_contract (outside the default profile's pool). Conservative in BOTH directions: what the diff cannot prove is never falsely confirmed - and never falsely refuted either, because 'was not removed' is a claim about the change that is only made once the string resolves to something this diff could report on. A name that resolves to nothing, a property/field/event/enum member (the diff models types and methods only), and the simple name of a removed type the diff had to render by its FULL name because it is ambiguous, each return 'indeterminate' naming that cause - not a confident 'was not removed'. Unsupported claim types return indeterminate.

NameTypeReqDescription
baselineSessionIdstringyesThe baseline session_id (before the change).
changedSessionIdstringyesThe changed session_id (after the change).
claimTypestringyesClaim type: 'no_new_api' or 'symbol_removed_unused'.
symbolstring|null–The symbol name the claim is about (required for symbol_removed_unused) - a bare name or the qualified Type.Member form, the same strings find_usages / impact_of_change / find_tests_for resolve. A re…

No output schema declared.

No examples provided.

Common questions

What is the AIContextBuilder MCP server?

AIContextBuilder is an MCP server listed in the public MCP registry as io.github.gregordadera/aicb. Symbol-aware C# and .NET code context for AI coding assistants. This page covers its NuGet package (AIContextBuilder).

Is the AIContextBuilder MCP server safe to use?

AIContextBuilder scores 70 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the AIContextBuilder MCP server expose?

AIContextBuilder exposes 54 tools: coverage_gaps, impact_of_change, install_agent_hooks, docs, apply_solution_config, and 49 more. Their descriptions and schemas cost roughly 30,044 tokens of context every time the server is loaded.

Is the AIContextBuilder MCP server still maintained?

AIContextBuilder is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.