Skip to main content
Glama

License: MIT Python 3.11+ MCP Claude Agent SDK

πŸ”Œ Serving  Β·  πŸ“¬ Google  Β·  🍎 Mac  Β·  🧩 Writing a tool set  Β·  🀝 Contributing


AI Armory is a collection of MCP tool sets: Google Workspace and Mac control today, with GitHub and more planned. Each tool set is a separate module you can load on its own, written in plain Python with no MCP imports. Load the ones you want, then serve them in-process to the Claude Agent SDK or over stdio to any MCP client.

🐍 Plain Python

A tool is an async function plus a JSON Schema. No MCP library in sight.

πŸ“¦ Only what you use

Each tool set has its own extra, so you install only its dependencies.

πŸ”’ Safe by design

Sends and deletes are flagged for the host to confirm. AI Armory never prompts.

✨ Tool sets

πŸ“¬ Google Workspace gmail Β· calendar Β· chat Β· docs Β· sheets Β· slides Β· drive across any number of accounts, or all seven as the google group.

🍎 Mac Notifications, apps and links, Apple Shortcuts, the volume and the clipboard on this Mac. Nothing to configure.

⏰ Clock clock: the current date and time, in any IANA time zone.

🧩 Your own Add a module here, or ship one in another package through an entry point.

Related MCP server: Slipway

🧭 How it fits together

flowchart TB
    google["πŸ“¬ google<br/>gmail Β· calendar Β· chat Β· docs<br/>sheets Β· slides Β· drive"]
    mac["🍎 mac"]
    clock["⏰ clock"]
    plugin["πŸ”Œ your package<br/>via entry point"]
    registry[["πŸ“š registry Β· load_many()"]]
    subgraph Adapters["πŸ”€ Adapters"]
        direction LR
        sdk["🐍 claude_sdk.py<br/>create_sdk_server()"]
        stdio["πŸ–₯️ stdio.py<br/>ai-armory serve"]
    end
    agent(["πŸ€– Claude Agent SDK apps"])
    clients(["πŸ’¬ Claude Desktop Β· Claude Code<br/>any MCP client"])

    google & mac & clock --> registry
    plugin -.-> registry
    registry --> sdk & stdio
    sdk -->|"in-process"| agent
    stdio -->|"stdio"| clients

    classDef set fill:#e0f2fe,stroke:#0284c7,color:#0c4a6e
    classDef ext fill:#f1f5f9,stroke:#64748b,stroke-dasharray:5 4,color:#0f172a
    classDef core fill:#ede9fe,stroke:#7c3aed,color:#2e1065
    classDef adapter fill:#fff7ed,stroke:#ea580c,color:#7c2d12
    classDef host fill:#ecfdf5,stroke:#059669,color:#064e3b
    class google,mac,clock set
    class plugin ext
    class registry core
    class sdk,stdio adapter
    class agent,clients host
    style Adapters fill:#f8fafc,stroke:#94a3b8,color:#334155
  • Tool sets (blue) are plain Python with no MCP imports; the registry loads them by name.

  • Adapters turn the same tool sets into an in-process SDK server or a stdio MCP server.

Mode

Built on

Typical host

In-process

Claude Agent SDK MCP server

Your own Agent SDK app, e.g. a voice assistant

Standalone

Official mcp SDK, over stdio

Claude Desktop, Claude Code, any MCP client

πŸš€ Quickstart

IMPORTANT

NeedsPython 3.11+. The mac tool set works only on macOS; the rest run anywhere.

1. Install β€” clone, then install everything or just the extras you need:

git clone https://github.com/anilkumarmeena/ai-armory
cd ai-armory
pip install -e ".[all]"

2. Look around β€” list the tool sets this install can load:

ai-armory list

3. Connect a client β€” for example, Claude Code serving the clock:

claude mcp add ai-armory -- ai-armory serve --toolsets clock
TIP

Claude Desktop config, the in-process adapter and how confirmation reaches the host are inπŸ”Œ Serving. The Google tool sets need a one-time sign-in: see πŸ“¬ Google β€Ί Configure.

πŸ“¦ Install extras

pip install -e ".[all]"       # everything
pip install -e ".[sdk,clock]" # the Agent SDK adapter and the clock tool set
pip install -e ".[google]"    # the Google tool sets (gmail, calendar, chat, docs, sheets, slides, drive)

Extra

Installs

sdk

claude-agent-sdk, for the in-process adapter

clock

the clock tool set

google

the Google client libraries, shared by all seven Google tool sets

gmail Β· calendar Β· chat Β· docs Β· sheets Β· slides Β· drive

the same as google

mac

nothing more: mac runs macOS's own programs

all

sdk + clock + google + mac

dev

all + pytest + anyio

🧰 Everyday commands

Command

What it does

πŸ“‹

ai-armory list

See the tool sets

πŸ”Œ

ai-armory serve --toolsets clock

Serve chosen tool sets over stdio

πŸ“¬

ai-armory serve --toolsets google

A group: all seven Google tool sets

βž•

ai-armory serve --toolsets mac,clock

Several, comma-separated

🌐

ai-armory serve

Serve every installed tool set

πŸ”‘

python -m ai_armory.toolsets.google login work

Sign a Google account in

  • serve --name <name> sets the server name reported to the client (default ai-armory).

πŸ“š Documentation

πŸ”Œ Serving Standalone over stdio, in-process with the Agent SDK, and how confirmation reaches the host.

πŸ“¬ Google Every Google tool, accounts, the draft-then-confirm flow, and setup.

🍎 Mac The seven Mac tools, what each runs, and macOS permissions.

🧩 Writing a tool set Adding a tool set, plugins from other packages, the code layout and tests.

πŸ” Safety at a glance

  • Tools that send, delete or otherwise act on the world are declared needs_confirmation=True; the host gates them.

  • Google sends and deletes are two tools: draft, then confirm, and a draft can be used once at most.

  • Nothing here sends email without a confirmed draft, trashes mail, deletes a document, spreadsheet, deck or row, or changes, shares or deletes a Drive file.

  • Tools that return other people's text tell the model not to follow instructions in it.

Details: πŸ”Œ Serving β€Ί Confirmation and πŸ“¬ Google β€Ί Draft, then confirm.

πŸ§ͺ Development

pip install -e ".[dev]"
pytest

See 🧩 Writing a tool set to add your own.

🀝 Contributing

Issues and pull requests are welcome. 🀝 Contributing covers setup with uv, the checks, code style and what makes a pull request easy to merge.

πŸ“„ License

MIT, see LICENSE.


AI Armory Β· tools for agents, written once

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to securely discover, execute, and observe tools with role-based access control and audit logging. Serves tools over MCP stdio and HTTP for integration with Claude Desktop, Cursor, and other clients.
      1
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables developers to expose a single set of tool definitions as MCP server tools over stdio or Streamable HTTP, so Claude Code, Codex, Claude Desktop and Cursor can call them with risk-based annotations, human-approved irreversible writes, typed structured results and long-running job handling built in. It also ships the same tools as a CLI from one source, keeping both surfaces in parity.
      594 npm
      Apache 2.0
    • F
      license
      Not graded
      quality
      A
      maintenance
      Exposes a governed suite of 38 tools over a single OAuth-gated MCP endpoint, letting web-based AI clients such as Claude, ChatGPT, and Grok read and edit files, run whitelisted shell commands, search, query SQLite, use Git, automate browsers and DevTools, manage background tasks, reach localhost services, and control the clipboard, notifications, ports, and Postman. This turns remote AI chats into secure operators of a local machine without granting unrestricted shell access.
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Exposes a governed suite of 38 tools over one OAuth-gated MCP endpoint, letting web-based AI clients such as Claude, ChatGPT, and Grok read and edit files, run whitelisted shell commands, search content, use Git, inspect SQLite databases and localhost APIs, automate browsers, manage background tasks, and control Postman. It runs locally with a tailnet or public ingress so browser-based chats can act on your own machine without granting unrestricted shell access.
      -