Skip to content

Conversation

nlarew
Copy link

@nlarew nlarew commented Aug 22, 2025

Proposed changes

(EAI-1266) Knowledge Search on MCP

Adds a new class of Assistant tools for interacting with the MongoDB Assistant (AI Chatbot + Search).

This PR scaffolds the generic AssistantToolBase class as well as two initial tools:

  • list_knowledge_sources - pulls a list of all available data sources. Useful for knowing what data is available and for filtering the search_knowledge
  • search_knowledge - runs a natural language search against the MongoDB Assistant knowledge base. Returns content chunks for the most relevant results.

Checklist

@Copilot Copilot AI review requested due to automatic review settings August 22, 2025 19:27
@nlarew nlarew requested a review from a team as a code owner August 22, 2025 19:27
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces MongoDB Assistant tools for the MCP server, enabling natural language search and knowledge source discovery. It adds integration with the MongoDB Assistant AI chatbot and search service.

  • Scaffolds a new AssistantToolBase class for MongoDB Assistant tool interactions
  • Implements two initial tools: list_knowledge_sources and search_knowledge
  • Adds comprehensive test coverage with mocked API responses

Reviewed Changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/common/config.ts Adds assistantBaseUrl configuration option
src/tools/tool.ts Extends ToolCategory type to include "assistant"
src/tools/assistant/assistantTool.ts Base class for Assistant tools with common functionality
src/tools/assistant/list_knowledge_sources.ts Tool for listing available knowledge sources
src/tools/assistant/search_knowledge.ts Tool for searching the knowledge base
src/tools/assistant/tools.ts Exports array of Assistant tools
src/server.ts Registers Assistant tools with the server
tests/integration/helpers.ts Updates response element types to support metadata
tests/integration/tools/assistant/assistantHelpers.ts Test utilities for Assistant tool testing
tests/integration/tools/assistant/listKnowledgeSources.test.ts Integration tests for list knowledge sources tool
tests/integration/tools/assistant/searchKnowledge.test.ts Integration tests for search knowledge tool

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.


export const SearchKnowledgeToolArgs = {
query: z.string().describe("A natural language query to search for in the knowledge base"),
limit: z.number().min(1).max(100).optional().default(5).describe("The maximum number of results to return"),

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
limit: z.number().min(1).max(100).optional().default(5).describe("The maximum number of results to return"),
limit: z.number().min(1).max(100).optional().default(10).describe("The maximum number of results to return"),

i've seen 10 chunks in a bunch of other implementations. we dont do this in our chatbot, but that's largely for latency/price

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I figured this should match the default of 5 we have on our server, no? Open to changing that though.

https://github.com/mongodb/chatbot/blob/003cec9b918c8e2ff3c87696021e1d6488c95b98/packages/mongodb-chatbot-server/src/routes/content/searchContent.ts#L27

// eslint-disable-next-line @typescript-eslint/no-unused-vars
args: ToolArgs<typeof this.argsShape>
): TelemetryToolMetadata {
return {};
Copy link
Author

@nlarew nlarew Aug 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what if anything I should have here - would appreciate advice from the DevTools team on this.

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.

2 participants