opentool
Open-source MCP server. Give AI agents authenticated access to GitHub, Notion, Slack and 10+ tools via one connection.
Links
README
From the repo.
OpenTool
One MCP server. All your tools. Fully open-source and self-hosted.
OpenTool gives AI agents secure, authenticated access to your tools via a single MCP connection. Connect GitHub, Notion, Slack, and more — then point any MCP-compatible agent at OpenTool with one API key.
Built for solo developers building with AI agents.
The original system design sketch. Hours of research distilled into one diagram — this is what the entire project was built from.
Why OpenTool
| Arcade | Composio | OpenTool | |
|---|---|---|---|
| Open source | Partial | Partial | ✅ Full |
| Self-hostable | ❌ | ❌ | ✅ |
| MCP native | ✅ | ✅ | ✅ |
| Free forever (self-hosted) | ❌ | ❌ | ✅ |
| CLI with REPL | ❌ | ❌ | ✅ |
| TypeScript + Python SDKs | ✅ | ✅ | ✅ |
Install
CLI
# npm (recommended)
npm i -g opentool-cli
# or run without installing
npx opentool-cli
# or curl installer
curl -fsSL https://raw.githubusercontent.com/Aditya251610/opentool/main/install.sh | bash
SDKs
# TypeScript
npm i @opentool-ts/sdk
# Python
pip install opentool-sdk
Quickstart (Hosted)
1. Get your API key Sign up at opentool.space → Settings → Generate API key
2. Connect your tools Go to the dashboard → Tools → Connect GitHub, Notion, Slack etc.
3. Connect your agent
For VS Code / Copilot / Claude Code, add to mcp.json:
{
"servers": {
"opentool": {
"type": "http",
"url": "https://opentool.onrender.com/mcp",
"headers": {
"Authorization": "Bearer <TOKEN>"
}
}
}
}
Or use the CLI:
opentool init # guided setup
opentool login # authenticate
opentool tools # see your connected tools
opentool # launch interactive REPL
That's it. Your agent now has access to all your connected tools.
Self-Hosting
Prerequisites: Docker + Docker Compose
git clone https://github.com/Aditya251610/opentool
cd opentool
cp .env.example .env
# Fill in your OAuth app credentials in .env
docker-compose up -d
Dashboard available at http://localhost:3000
MCP server available at http://localhost:3001
Production Deployment
- Self-Hosting Guide — Docker Compose, manual setup, reverse proxy, health checks, backups
- Security Guide — Encryption, authentication, threat model, data handling
Key production checklist:
- Use HTTPS with valid SSL certificates
- Set a strong
TOKEN_ENCRYPTION_KEY(64 hex characters) - Configure
SERVER_URLandDASHBOARD_URLfor your domain - Back up your encryption key separately from database backups
- CSP and HSTS headers are enabled by default
Supported Tools
26 providers, 133 tools — and growing.
Developer & DevOps
| Provider | Status | Tools | Actions |
|---|---|---|---|
| GitHub | ✅ | 7 | Create issue, list issues, create PR, comment, get repo, search code, get PR diff |
| GitLab | ✅ | 8 | Create issue, get issue, create MR, get MR, list MR commits, list pipelines, get pipeline jobs, search |
| Linear | ✅ | 3 | Create issue, update status, search issues |
| Vercel | ✅ | 2 | List deployments, get deployment |
| Docker Hub | ✅ | 4 | Search images, get image, list tags, get vulnerabilities |
| Sentry | ✅ | 7 | List orgs, list projects, list/get/resolve issues, get event, search |
Cloud Platforms
| Provider | Status | Tools | Actions |
|---|---|---|---|
| AWS | ✅ | 8 | List EC2/S3/Lambda/EKS, describe EC2, list S3 objects, invoke Lambda, CloudWatch metrics |
| GCP | ✅ | 7 | List instances/GKE/functions/buckets, get instance, list bucket objects, get project |
| Azure | ✅ | 7 | List subscriptions/resource groups/VMs/AKS/storage/functions, get VM |
| Cloudflare | ✅ | 6 | List zones/DNS/workers, create/update DNS, purge cache |
Productivity & Communication
| Provider | Status | Tools | Actions |
|---|---|---|---|
| Gmail | ✅ | 3 | Send, read, search emails |
| Google Calendar | ✅ | 2 | Create event, list events |
| Google Drive | ✅ | 6 | List/search/get/create/share/delete files |
| Google Meet | ✅ | 3 | Create/list/get meetings |
| Microsoft 365 | ✅ | 8 | List/send/search emails, list/create events, list teams/channels, send channel message |
| Notion | ✅ | 3 | Create page, query database, update block |
| Slack | ✅ | 3 | Send message, read channel, search messages |
| Jira | ✅ | 7 | List projects, search/get/create/update issues, add comment, list transitions |
| Confluence | ✅ | 6 | List spaces/pages, search content, get/create/update page |
Messaging & Notifications
| Provider | Status | Tools | Actions |
|---|---|---|---|
| Telegram | ✅ | 5 | Get bot info, send message/photo, get updates/chat |
| Discord | ✅ | 5 | List guilds/channels, send/get/list messages |
| Twilio | ✅ | 4 | Send SMS/WhatsApp, list/get messages |
Payments & Data
| Provider | Status | Tools | Actions |
|---|---|---|---|
| Stripe | ✅ | 2 | Create payment link, list customers |
| PayPal | ✅ | 8 | Create/list/send invoices, create/get orders, refund, list transactions, create product |
| Resend | ✅ | 1 | Send email |
| PostgreSQL | ✅ | 5 | Execute query, list tables, describe table, run transaction, explain query |
Want a tool added? Open an issue or contribute a tool.
CLI
The CLI ships with an interactive REPL and scriptable subcommands:
opentool # Launch interactive REPL
opentool tools --json # List tools (machine-readable)
opentool exec github.list_issues --args '{"owner":"me","repo":"myrepo"}'
opentool doctor # Run 9-point diagnostics
opentool completion --install # Shell completions (bash/zsh/fish)
REPL features: Tab completion, ghost-text suggestions, Ctrl+R history search, fuzzy "did you mean?", readline keybindings, update notifications.
Full reference: docs/cli-reference.md
Project Structure
opentool/
├── apps/
│ ├── server/ # MCP server + Auth broker + REST API (Hono)
│ │ └── tools/ # Tool definitions (26 providers, 133 tools)
│ └── dashboard/ # Next.js dashboard
├── packages/
│ ├── cli/ # opentool-cli — interactive CLI + REPL
│ ├── sdk/ts/ # @opentool-ts/sdk — TypeScript SDK
│ ├── sdk/python/ # opentool — Python SDK
│ └── tool-schema/ # Shared tool definition types
├── install.sh # curl | sh installer
└── docker-compose.yml
Contributing a Tool
Tools are self-contained modules in apps/server/tools/. Each tool exports:
import { defineTool } from '@opentool/tool-schema'
export const myTool = defineTool({
id: 'my-tool.action',
name: 'My Tool Action',
description: 'What this tool does',
authType: 'oauth2',
inputSchema: z.object({
param: z.string().describe('What this param does'),
}),
execute: async ({ input, auth }) => {
// auth.accessToken available here
// return result
},
})
- Fork the repo
- Add your tool in
apps/server/tools/yourprovider/ - Register it in
apps/server/src/registry/index.ts - Add OAuth config in
.env.example - Open a PR
Full guide: docs/contributing-a-tool.md
Tech Stack
- Server — Hono, TypeScript, Prisma, Postgres, Redis
- Dashboard — Next.js 14, Auth.js
- CLI — TypeScript, Ink (React for terminals), Commander
- Protocol — MCP (Model Context Protocol) TypeScript SDK + gRPC (Protocol Buffers)
- SDKs — TypeScript (npm) + Python (PyPI)
- Monorepo — Turborepo + pnpm
- Security — AES-256-GCM encryption, CSP/HSTS headers, session obfuscation
Documentation
Full docs at docs/:
- Quickstart — Zero to connected tools in 5 minutes
- Self-Hosting — Docker or manual setup
- Configuration — Every env var and OAuth setup
- Architecture — How it all fits together
- Authentication — OAuth flows and token management
- Tools — All 26 providers, 133 tools
- MCP Integration — Claude, Cursor, any MCP client
- SDK Reference — TypeScript and Python
- CLI Reference — Terminal tool management
- API Reference — Every REST endpoint
- Contributing a Tool — Add a provider in ~100 lines
- Security — Encryption, tokens, threat model
- Troubleshooting — Common issues and fixes
- gRPC Transport — High-performance binary transport with streaming
Roadmap
- Core MCP server with 26 providers, 133 tools
- OAuth auth broker with token encryption
- Dashboard (Next.js)
- CLI with interactive REPL (
opentool-clion npm) - TypeScript SDK (
@opentool-ts/sdkon npm) - Python SDK (
opentool-sdkon PyPI) - Production hardening (CSP, HSTS, retry logic, 211 tests)
- CI/CD with automated releases (release-please + tag-based publishing)
- curl installer (
install.sh) - gRPC transport (streaming execution, batch tools, mTLS, Kubernetes-native)
- Cloud providers (AWS, GCP, Azure)
- Microsoft 365 integration (Outlook, Calendar, Teams)
- Atlassian suite (Jira, Confluence)
- Messaging providers (Telegram, Discord, Twilio)
- PayPal payments integration
- Token analytics and usage tracking
- Team/org support (RBAC, invites, SSO, org-scoped keys and connections)
- Tool marketplace
- Webhook support
- Plugin system for custom tools
License
MIT — use it, fork it, self-host it, build on it.
Collected info
- ★ 5 stars
- Language: TypeScript
- Source updated: 7/13/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.