Skip to content

Repository files navigation

mu

Tools for agents. News, mail, search, weather, markets, video, places, files, contacts, calendar and a database, as tools an agent can call over MCP and REST — behind one account instead of one per provider.

The same services render as a web app: a home screen with a card per service and the agent inline.

Use it live at micro.mu, or run your own.

Install

curl -fsSL https://raw.githubusercontent.com/micro/mu/main/install.sh | sh
mu --serve

Open http://localhost:8080. The first account you create is the admin.

It runs with no configuration. On a fresh install, with no keys, these answer: news, markets, weather, prayer times, quran, mail, files, contacts, calendar, tasks, the database, and search over your own content. Weather comes from Open-Meteo; places and geocoding from OpenStreetMap. No account, no card, no signup.

Three things need a key, because there is no free provider worth wiring in:

For Set Notes
The agent, and anything that composes an answer ANTHROPIC_API_KEY, ATLAS_API_KEY, or OPENAI_BASE_URL free if you run Ollama locally
Web search BRAVE_API_KEY Brave has a free tier
Video YOUTUBE_API_KEY free quota

Without them those tools say so plainly rather than failing oddly. Everything else keeps working.

mu setup        # pick an AI provider, paste a key
mu --serve

Everything else — mail and DKIM, Google sign-in, Stripe, x402 — is optional, and configurable from /admin/env once you are signed in as admin.

Other ways to run it:

# Docker
git clone https://github.com/micro/mu && cd mu
docker compose up

# From source
git clone https://github.com/micro/mu
cd mu && go install
mu --serve

See the installation guide.

Connect an agent

Cursor, and clients with a config file. Create a token at /token:

{
  "mcpServers": {
    "mu": {
      "url": "https://micro.mu/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MU_TOKEN}"
      }
    }
  }
}

Claude Desktop. Settings → Connectors → Add custom connector, and paste https://micro.mu/mcp. It registers itself, opens a browser and asks you to sign in — no token needed. Pasting the URL into claude_desktop_config.json will not work: that file only takes local command-line servers.

Anything else. It is JSON-RPC over HTTP POST:

curl -X POST https://micro.mu/mcp -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Scope the connection to the services you need:

https://micro.mu/mcp?tools=news,web,mail

That is what gets listed to your agent. Everything else is still callable.

micro.mu/tools lists every tool with what each call costs. See MCP docs for the protocol.

The tools

Here are the tools

Service Tools
Apps apps_build · apps_create · apps_edit · apps_fork · apps_read · apps_run · apps_search · apps_test — build and run small web tools
Blog blog_create · blog_read · blog_list · blog_update · blog_delete — publish, with AI-generated daily digests
Chat chat_rooms · chat_messages · chat_send — the live discussion rooms attached to an item, and saying something in one
Contacts contacts_add · contacts_find · contacts_list · contacts_delete — turn a name into an address
Docs docs_create · docs_get · docs_list · docs_delete — named collections of your own documents, private by default, that outlive a conversation (docs_create with an id overwrites). Apps get their own separate store through mu.db
Events events_create · events_list · events_delete · events_free — schedule, cancel, and find when you are free, counting the Google Calendar you already keep
Files files_put · files_get · files_list · files_share · files_delete — keep a file, get a URL
Images images_generate · images_search
Index index_search — everything this instance holds for you
Mail mail_inbox · mail_send · mail_search · mail_address — a real SMTP server with DKIM, and an address per agent. Write to you+name@ and that agent answers in the thread
Markets markets_list — stocks, crypto, futures, commodities, currencies
News news_list · news_read · news_search — RSS aggregation, full articles
Notes notes_add · notes_get · notes_list · notes_delete — a title and what is under it, kept between conversations and read back into every one
Places places_search · places_nearby · places_eta · places_geocode — points of interest, geocoding, travel time
Prayer prayer_times · prayer_qibla · prayer_reflection · prayer_verse · prayer_saying · prayer_search — Islamic prayer times, qibla, a daily verse and saying, and the sources by reference or by question
Search web_search · web_fetch — search the web, read a page as clean text
Social social_list · social_search — public threads and replies
Stream stream_list · stream_post — this instance's own timeline
Tasks tasks_create · tasks_list · tasks_next · tasks_update · tasks_delete — what is to be done, and work you can hand to the agent
User Prefs user_saved · user_save · user_unsave · user_hide · user_flag · user_block · user_unblock — what you do about other people's posts: keep one, stop seeing one, report one, or stop hearing from an account
Video video_list · video_search — curated channels, no ads or recommendations
Weather weather_forecast — conditions, forecast, pollen

Request a tool

Open an issue and say what it should do.

CLI

Every tool is a mu subcommand. The same binary runs the server (mu --serve) and the CLI.

mu news list                            # latest headlines
mu news search "ai safety"              # search news
mu web search "claude code"             # search the web
mu markets list --category stocks       # live prices
mu agent "what is the btc price?"       # run the full agent
mu weather forecast --lat 51.5 --lon -0.12
mu docs list --collection notes         # your own documents
mu wallet                               # your balance
mu help                                 # full tool list

Every tool in the table above is a command: the service, then the method. The underscore form works too, so mu news list and mu news_list are the same call.

The CLI is registry-driven — a tool added to the server automatically becomes a CLI command.

mu login                  # opens /token in your browser, paste the PAT back
mu config set token xxx   # or set it directly
export MU_TOKEN=xxx       # or use the environment

See CLI docs.

Discord & Telegram

Talk to the agent from Discord or Telegram — questions, markets, news, all from chat. Join the Discord

Every tool is a command on both, in the same two-word shape as the CLI: /news list, /markets list category:stocks, /prayer times. Discord gets one slash command per service with the methods as subcommands; on Telegram you type /news list. Both also take /agent <question> for anything that needs composing, and /usage for your own stats.

Setup for both is in Installation.

The app

The server includes a web app. A home screen renders each service at a glance — headlines, prices, weather, unread mail — and the agent sits inline to act on what you are looking at. Apps run sandboxed, in an opaque origin, and reach the platform through a fixed set of operations rather than your session.

Sign in with a username and password, a passkey (WebAuthn), or Google.

Configuration

Customise feeds, prompts and cards by editing JSON files:

  • service/news/feeds.json — RSS news feeds
  • service/chat/prompts.json — chat topics
  • home/cards.json — home screen cards
  • service/video/channels.json — YouTube channels
  • service/places/locations.json — saved locations

See Environment Variables for all options.

Documentation

Full docs in the docs folder. Start with MCP for agents, Architecture for the code. The live tool catalogue is at /tools.

License

About

Tools for Agents

Topics

Resources

Security policy

Stars

324 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages