- Fixed imports in examples/tests/ to use correct Brainy import - Fixed imports in tests/benchmarks/ to use correct paths - Updated bin/brainy-interactive.js to use Brainy instead of BrainyData - Corrected documentation references throughout codebase - Removed duplicate imports in benchmark files - All files now consistently use 'Brainy' class from dist/index.js
104 lines
3.2 KiB
Markdown
104 lines
3.2 KiB
Markdown
# Model Control Protocol (MCP) for Brainy
|
|
|
|
This document provides information about the Model Control Protocol (MCP) implementation in Brainy, which allows external models to access Brainy data and use the augmentation pipeline as tools.
|
|
|
|
## Components
|
|
|
|
The MCP implementation consists of three main components:
|
|
|
|
1. **BrainyMCPAdapter**: Provides access to Brainy data through MCP
|
|
2. **MCPAugmentationToolset**: Exposes the augmentation pipeline as tools
|
|
3. **BrainyMCPService**: Integrates the adapter and toolset, providing WebSocket and REST server implementations for external model access
|
|
|
|
## Environment Compatibility
|
|
|
|
### BrainyMCPAdapter
|
|
|
|
The `BrainyMCPAdapter` has no environment-specific dependencies and can run in any environment where Brainy itself runs, including:
|
|
|
|
- Browser environments
|
|
- Node.js environments
|
|
- Server environments
|
|
|
|
### MCPAugmentationToolset
|
|
|
|
The `MCPAugmentationToolset` also has no environment-specific dependencies and can run in any environment where Brainy itself runs, including:
|
|
|
|
- Browser environments
|
|
- Node.js environments
|
|
- Server environments
|
|
|
|
### BrainyMCPService
|
|
|
|
The `BrainyMCPService` has been refactored to separate the core functionality from the Node.js-specific server functionality:
|
|
|
|
1. **Core Functionality**: The core request handling functionality (`handleMCPRequest`) can run in any environment where Brainy itself runs. This is what remains in the main Brainy package.
|
|
|
|
2. **Server Functionality**: The WebSocket and REST server functionality is not included in the main Brainy package to keep the browser bundle lightweight and avoid Node.js-specific dependencies. In browser or other environments, you can use the core functionality through the `handleMCPRequest` method.
|
|
|
|
## Usage
|
|
|
|
### In Any Environment (Browser, Node.js, Server)
|
|
|
|
```typescript
|
|
import { Brainy, BrainyMCPAdapter, MCPAugmentationToolset } from '@soulcraft/brainy'
|
|
|
|
// Create a Brainy instance
|
|
const brainyData = new Brainy()
|
|
await brainyData.init()
|
|
|
|
// Create an MCP adapter
|
|
const adapter = new BrainyMCPAdapter(brainyData)
|
|
|
|
// Create a toolset
|
|
const toolset = new MCPAugmentationToolset()
|
|
|
|
// Use the adapter to access Brainy data
|
|
const response = await adapter.handleRequest({
|
|
type: 'data_access',
|
|
operation: 'search',
|
|
requestId: adapter.generateRequestId(),
|
|
version: '1.0.0',
|
|
parameters: {
|
|
query: 'example query',
|
|
k: 5
|
|
}
|
|
})
|
|
|
|
// Use the toolset to execute augmentation pipeline tools
|
|
const toolResponse = await toolset.handleRequest({
|
|
type: 'tool_execution',
|
|
toolName: 'brainy_memory_storeData',
|
|
requestId: toolset.generateRequestId(),
|
|
version: '1.0.0',
|
|
parameters: {
|
|
args: ['key1', { some: 'data' }]
|
|
}
|
|
})
|
|
```
|
|
|
|
|
|
### In Browser Environment (Core Functionality Only)
|
|
|
|
```typescript
|
|
import { Brainy, BrainyMCPService } from '@soulcraft/brainy'
|
|
|
|
// Create a Brainy instance
|
|
const brainyData = new Brainy()
|
|
await brainyData.init()
|
|
|
|
// Create an MCP service (server functionality will be disabled in browser)
|
|
const mcpService = new BrainyMCPService(brainyData)
|
|
|
|
// Use the core functionality
|
|
const response = await mcpService.handleMCPRequest({
|
|
type: 'data_access',
|
|
operation: 'search',
|
|
requestId: mcpService.generateRequestId(),
|
|
version: '1.0.0',
|
|
parameters: {
|
|
query: 'example query',
|
|
k: 5
|
|
}
|
|
})
|
|
```
|