ai-armory
Provides tools for Gmail, enabling AI agents to interact with email, including creating drafts and confirming sends.
Provides tools for Google Workspace services, including Gmail, Calendar, Chat, Docs, Sheets, Slides, and Drive, across multiple accounts.
Provides tools to control macOS, including sending notifications, opening apps and links, running Apple Shortcuts, controlling volume, and accessing the clipboard.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ai-armorycheck my unread emails and summarize today's calendar"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ 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:#334155Tool 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 | Claude Desktop, Claude Code, any MCP client |
๐ Quickstart
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 list3. Connect a client โ for example, Claude Code serving the clock:
claude mcp add ai-armory -- ai-armory serve --toolsets clockClaude 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 |
|
|
| the |
| the Google client libraries, shared by all seven Google tool sets |
| the same as |
| nothing more: |
|
|
|
|
๐งฐ Everyday commands
Command | What it does | |
๐ |
| See the tool sets |
๐ |
| Serve chosen tool sets over stdio |
๐ฌ |
| A group: all seven Google tool sets |
โ |
| Several, comma-separated |
๐ |
| Serve every installed tool set |
๐ |
| Sign a Google account in |
serve --name <name>sets the server name reported to the client (defaultai-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]"
pytestSee ๐งฉ 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
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Nifty's MCP server โ exposes tasks, projects, messages, and files as tools for AI agents.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables 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-
- AlicenseNot gradedqualityAmaintenanceEnables 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.348 npmApache 2.0
- FlicenseNot gradedqualityAmaintenanceExposes 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.-
- FlicenseNot gradedqualityAmaintenanceExposes 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.-