Skip to content

Switch MCP server from BinlogInsights.Mcp to AITools.BinlogMcp#8

Open
YuliiaKovalova wants to merge 10 commits into
mainfrom
switch-to-aitools-binlogmcp
Open

Switch MCP server from BinlogInsights.Mcp to AITools.BinlogMcp#8
YuliiaKovalova wants to merge 10 commits into
mainfrom
switch-to-aitools-binlogmcp

Conversation

@YuliiaKovalova
Copy link
Copy Markdown
Contributor

Replaces BinlogInsights.Mcp dotnet tool with AITools.BinlogMcp from the dotnet-eng feed. All 208 tests pass.

YuliiaKovalova and others added 10 commits May 15, 2026 15:48
Replace the BinlogInsights.Mcp dotnet tool with AITools.BinlogMcp from
the dotnet-eng Azure DevOps feed. Key changes:

- Package ID: BinlogInsights.Mcp -> AITools.BinlogMcp
- Executable: binlog-insights-mcp -> binlog-mcp
- Feed: nuget.org -> pkgs.dev.azure.com/dnceng/public/.../dotnet-eng
- Install/update commands now use --prerelease --add-source flags
- Version detection updated for prerelease version format
- All user-facing messages, docs, and prompts updated

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
AITools.BinlogMcp returns different response formats than BinlogInsights:
- binlog_overview: human-readable text instead of JSON
- binlog_search: human-readable text instead of JSON array
- binlog_projects: uses projectFile instead of fullPath
- binlog_expensive_targets/tasks: uses targetName/taskName instead of name

Changes:
- binlogDocumentProvider: handle text overview, read projectFile in array format
- binlogTreeView: handle text search results in analyzer fallback, extract
  extractAnalyzerTiming() method for reuse across JSON and text formats
- Both old JSON and new text formats are supported for backward compatibility

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add parseSearchResults() helper to handle both JSON array (old) and
  human-readable text (new) binlog_search responses
- Fix binlog.search and binlog.searchLoadAll commands that would show
  'no results' despite the new tool finding matches
- Parse text search format: [NodeType] message + Project/Target/Task metadata

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The binlog_overview tool reports total project evaluations (including
restore and multi-targeting duplicates), while the tree view deduplicates
by filename. This caused the /summary chat to show e.g. '56 projects'
while the tree showed '22'.

Fix: binlog_lm_overview now appends the deduplicated project count from
binlog_projects to the overview text, so the model reports the unique
count that matches the tree view.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
binlog_evaluations returns human-readable text instead of JSON. Parse
the text format '[id=N] path/to/project.csproj  (Nms)' into structured
data for the tree view.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
AITools.BinlogMcp's binlog_projects only returns top-level projects
(e.g. the .sln or Build.proj), not the individual .csproj files that
are built as part of the solution. The old BinlogInsights.Mcp returned
all projects recursively.

Fix: when binlog_projects returns <= 2 entries, fall back to
binlog_evaluations to extract the full list of unique project files.
Evaluations contain entries for every project evaluation in the build.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The AITools.BinlogMcp ProjectsQuery was fixed to enumerate all projects
via VisitAllChildren + ProjectEvaluation nodes, so the extension no
longer needs the binlog_evaluations fallback workaround.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The binlog_evaluations tool is not registered in current feed versions
of AITools.BinlogMcp. Show an informational message instead of an error
when the tool is unavailable. Text format parsing is retained for when
the tool becomes available.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The MCP server throws isError=true for unknown tools, which causes
McpClient.callTool to throw an exception. The previous check on
result.text never ran. Move the 'Unknown tool' detection to the
catch block.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The McpClient may have been created with multiple binlog paths and not
recreated when one is removed. The tree view's binlogPaths gets updated
but McpClient.loadedBinlogs is stale. Always inject binlog_file using
the active binlog path to avoid 'requires explicit binlog_file' errors.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant