Skip to content

A model-agnostic MCP Client-Server for .Net and Unity

License

Notifications You must be signed in to change notification settings

rob1997/CereBro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CereBro

GitHub release NuGet stable version GitHub license

CereBro is a model-agnostic AI Agent Wrapper for .Net. Now with 🔥 Model Context Protocol 🔥 , based on the Official C# SDK, you can write Tools that can be used with different AI models without changing the code.

Models

Below is a list of supported and planned models for CereBro.

Supported:

Planned:

Installation

You can install the package from NuGet using the following command:

dotnet add package Rob1997.CereBro

dotnet add package Rob1997.CereBro.Open-AI

Usage

Step 1: Create a servers.json file

This file will contain the configuration for the MCP servers you want to use. Below is an example of the servers.json file.

[
  {
    "Id": "everything-server",
    "Name": "Everything",
    "TransportType": "stdio",
    "TransportOptions": {
      "command": "npx",
      "arguments": "-y @modelcontextprotocol/server-everything"
    }
  }
]

You can check out more servers here.

Step 2: Add your OpenAI API Key to your environment variables

export OPEN_AI_API_KEY="your-api-key"
$env:OPEN_AI_API_KEY="your-api-key"

If you want this to be permanent, you can add it to your .bashrc or .bash_profile file in linux or use the following command in PowerShell.

[Environment]::SetEnvironmentVariable("OPEN_AI_API_KEY", "your-api-key", "User")

Step 3: Add the following code to your Program.cs (Entry Point)

public static async Task Main(string[] args)
{
    var builder = Host.CreateApplicationBuilder(args);
    
    builder.Services.UseOpenAI(Environment.GetEnvironmentVariable("OPEN_AI_API_KEY"), "gpt-4o-mini");
            
    IHost cereBro = builder.BuildCereBro(new CereBroConfig{ ServersFilePath = "./servers.json" });

    await cereBro.RunAsync();
}

CereBro uses the Console as a chat dispatcher. You can create your own dispatcher by implementing the IChatDispatcher interface and use builder.BuildCereBro<IChatDispatcher>(config) to build CereBro's host.

Step 4: Run your application

dotnet run

Adding a new Model

Currently, CereBro only supports OpenAI's models. To add a new model you'll need to Implement Microsoft.Extensions.AI.IChatClient, unless it already exists, Microsoft already has implementations for some models like OpenAI and Ollama.

Once you've done that you can create a Placeholder Type that implements Microsoft.Extensions.AI.FunctionInvokingChatClient something like this.

Finally, you can use the UseChatClient<T>(this IServiceCollection services, IChatClient chatClient) where T : FunctionInvokingChatClient extension method to add your model to the service collection.

⚠️ Note ⚠️

At the moment CereBro doesn't support multiple models at the same time, so you'll have to remove the UseOpenAI method from the Program.cs file to use another model.

CereBro.Unity

CereBro.Unity is a Unity package that allows you to use CereBro in Unity. README.

Contributing

If you'd like to contribute to the project, you can fork the repository and create a pull request. You can also create an issue if you find any bugs or have any feature requests.