Build MCP Agents https://nanobot.ai
Find a file Use this template
Craig Jellick 34965f7d83 enhance: use human-friendly step names in workflows
Update workflow schema and agent instructions to use Title Case step
names (e.g., "Bake Donuts") instead of snake_case identifiers (e.g.,
"bake_donuts"). Since workflows are executed by LLMs, human-readable
names improve clarity without sacrificing functionality.

Signed-off-by: Craig Jellick <craig@obot.ai>
2026-02-05 11:25:36 -07:00
.github/workflows fix: ensure UI is built during release CI (#101) 2026-01-06 11:01:57 -05:00
docs chore: add docs for agents 2025-12-23 15:14:26 -07:00
examples chore: move agent configuration to subdirectory 2026-01-30 09:53:55 -05:00
packages/ui Merge pull request #112 from ivyjeong13/fix/chat-related-ui-fixes 2026-01-30 14:15:46 -05:00
pkg enhance: use human-friendly step names in workflows 2026-02-05 11:25:36 -07:00
scripts fix: properly support macos and arm64 in install script 2025-05-19 10:43:50 -07:00
.gitignore feat: add worflows MCP server and expose to UI (#113) 2026-01-30 13:31:20 -05:00
.goreleaser.yml fix: ensure UI is built during release CI (#101) 2026-01-06 11:01:57 -05:00
biome.json chore: add workspace javascript code 2025-12-17 17:50:13 -07:00
CLAUDE.md chore: use mcp-servers.{json,yaml} instead of mcpServers.{json,yaml} (#109) 2026-01-29 11:58:57 -05:00
Dockerfile Chore: Add utilities to dockerfile (#125) 2026-02-03 06:21:16 -05:00
generate.go chore: add workspace javascript code 2025-12-17 17:50:13 -07:00
go.mod feat: basic resource subscribe for workflows 2026-02-02 10:05:12 -05:00
go.sum feat: basic resource subscribe for workflows 2026-02-02 10:05:12 -05:00
LICENSE chore: update logo, add license 2025-05-22 21:22:49 -07:00
main.go chore: rename package to nanobot-ai 2025-06-10 20:31:20 -07:00
Makefile fix: ensure UI is built during release CI (#101) 2026-01-06 11:01:57 -05:00
package.json chore: add docs for agents 2025-12-23 15:14:26 -07:00
pnpm-lock.yaml feat: local workflows (#106) 2026-01-27 11:21:19 -05:00
pnpm-workspace.yaml chore: add workspace javascript code 2025-12-17 17:50:13 -07:00
README.md Chore: Update read with caution 2026-02-02 19:41:49 -07:00
tsconfig.json chore: add workspace javascript code 2025-12-17 17:50:13 -07:00
workspaces.md enhance: add workspace ts api 2025-12-19 16:40:19 -07:00

Nanobot

Nanobot - Build MCP Agents

Warning

This project is under heavy development and is moving away from its original design and intent. Expect significant breaking changes, architectural shifts, and evolving APIs.

Nanobot enables building agents with MCP and MCP-UI by providing a flexible MCP host. While existing applications like VSCode, Claude, Cursor, ChatGPT, and Goose all include an MCP host, Nanobot is designed to be a standalone, open-source MCP host that can be easily deployed or integrated into your applications. You can use Nanobot to create your own dedicated MCP and MCP-UI powered chatbot.

What is an MCP Host?

An MCP host is the service that combines MCP servers with an LLM and context to present an agent experience to a consumer. The primary experience today is a chat interface, but it can be many other interfaces such as voice, SMS, e-mail, AR/VR, Slack, MCP, or any other interface that can be used to interact with an agent.

MCP host

Examples

Here are some examples of Nanobots in action:

Installation

Nanobot can be installed via Homebrew:

brew install nanobot-ai/tap/nanobot

This will give you the nanobot CLI, which you can use to run and manage your MCP host.


Getting Started


Configuration

Nanobot supports two configuration formats:

  1. Single File Configuration - A nanobot.yaml file
  2. Directory-Based Configuration - A directory with .md agent files

Single File Configuration

Nanobot supports the following providers:

  • OpenAI (e.g. gpt-4)
  • Anthropic (e.g. claude-3)

To use them, set the corresponding API key:

# For OpenAI models
export OPENAI_API_KEY=sk-...

# For Anthropic models
export ANTHROPIC_API_KEY=sk-ant-...

Nanobot automatically selects the correct provider based on the model specified.


Create a configuration file (e.g. nanobot.yaml) that defines your agents and MCP servers.

Example:

agents:
  dealer:
    name: Blackjack Dealer
    model: gpt-4.1
    mcpServers: blackjackmcp

mcpServers:
  blackjackmcp:
    url: https://blackjack.nanobot.ai/mcp

Start Nanobot with:

nanobot run ./nanobot.yaml

The UI will be available at http://localhost:8080.

Directory-Based Configuration

Instead of using a nanobot.yaml file, you can organize your configuration as a directory structure where each agent is defined in its own .md file with YAML front-matter.

Directory Structure:

my-config/
├── agents/              # Agent definitions directory
│   ├── main.md          # Main agent (auto-set as entrypoint)
│   └── helper.md        # Additional agent
└── mcp-servers.yaml     # MCP server definitions

Agent File Format (agents/main.md):

---
name: Shopping Assistant
model: claude-3-7-sonnet-latest
mcpServers:
  - store
temperature: 0.7
---

You are a helpful shopping assistant.

Help users find products and answer their questions.

The YAML front-matter supports all agent configuration fields (model, name, mcpServers, tools, temperature, etc.), and the markdown body becomes the agent's instructions.

MCP Servers File (mcp-servers.yaml or mcp-servers.json):

store:
  url: https://example.com/mcp
  headers:
    Authorization: Bearer ${MY_TOKEN}

Usage:

nanobot run ./my-config/

Features:

  • Agent directory: All agent .md files must be in the agents/ subdirectory
  • Auto-entrypoint: If agents/main.md exists, it's automatically set as the default agent
  • Agent ID: Use the id field in front-matter, or defaults to the filename (without .md)
  • README.md: Automatically ignored in the agents/ directory (use it for documentation)

See the directory-config example for a complete working example.


Development & Contribution

Contributions are welcome! Nanobot is still in alpha, so expect active development and rapid changes.

Build from Source

make

Working on the UI

The Nanobot UI lives in the ./ui directory. To develop against it:

  1. Remove the old build artifacts:

    rm -rf ./ui/dist
    
  2. Rebuild the Nanobot binary:

    make
    
  3. Start the UI in development mode:

    cd ui
    npm run dev
    
  4. The UI must be served from port 5173.
    Nanobot runs on port 8080 and will forward UI requests to :5173.


Features & Roadmap

Nanobot aims to be a fully compliant MCP Host and support all MCP + MCP-UI features.

Feature Category Feature Status
MCP Core TODO Implemented
TODO 🚧 Partial
TODO Not yet
TODO Implemented
MCP-UI TODO 🚧 Partial
TODO Implemented
TODO Not yet

= Implemented🚧 = Partial / WIP = Not yet = Planned

Roadmap

  • Full MCP + MCP-UI compliance
  • More robust multi-agent support
  • Production-ready UI
  • Expanded model provider support
  • Expanded authentication and security features
  • Frontend integrations (Slack, SMS, email, embedded web agents)
  • Easy embedding into existing apps and websites

License

Nanobot is licensed under the Apache 2.0 License.