0nmcp 1.2.2 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -44
- package/catalog.js +300 -0
- package/index.js +12 -3
- package/lib/badges.json +32 -0
- package/lib/catalog.json +813 -0
- package/lib/stats.js +123 -0
- package/lib/stats.json +797 -0
- package/package.json +44 -6
package/README.md
CHANGED
|
@@ -19,20 +19,20 @@
|
|
|
19
19
|
[](https://nodejs.org)
|
|
20
20
|
[](https://modelcontextprotocol.io)
|
|
21
21
|
[](http://makeapullrequest.com)
|
|
22
|
-
[](#-supported-services)
|
|
23
|
+
[](#-all-tools)
|
|
24
24
|
[](#-community)
|
|
25
25
|
[](https://github.com/0nork/0nMCP/discussions)
|
|
26
26
|
|
|
27
|
-
**
|
|
27
|
+
**535 tools. 26 services. Zero configuration. One natural language interface.**
|
|
28
28
|
|
|
29
|
-
[Quick Start](#-installation) · [Services](#-supported-services) · [
|
|
29
|
+
[Quick Start](#-installation) · [Services](#-supported-services) · [535 Tools](#-all-tools) · [.0n Standard](#-the-0n-standard) · [Unlocks](#-unlocks) · [Community](#-community) · [Contributing](#-contributing)
|
|
30
30
|
|
|
31
31
|
</div>
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
-
> **v1.
|
|
35
|
+
> **v1.3.0** — 535 tools across 26 services in 13 categories. Gmail, Google Sheets, Google Drive, Jira, Zendesk, Mailchimp, Zoom, Microsoft 365, and MongoDB now live. Full CRM coverage (245 tools), rate limiting, webhooks, TypeScript definitions, and a growing open source community. [See what's new](#-whats-new-in-v13).
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
@@ -146,11 +146,20 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) o
|
|
|
146
146
|
| **Supabase** | Database | Tables, auth users, storage buckets |
|
|
147
147
|
| **Calendly** | Scheduling | Events, event types, availability |
|
|
148
148
|
| **Google Calendar** | Scheduling | Events, calendars, CRUD |
|
|
149
|
+
| **Gmail** | Email | Send, read, search emails, manage labels, drafts, threads, attachments |
|
|
150
|
+
| **Google Sheets** | Database | Read/write spreadsheets, create sheets, append rows, batch operations |
|
|
151
|
+
| **Google Drive** | Storage | Upload, download, search, share files, manage folders, permissions |
|
|
152
|
+
| **Jira** | Dev Tools | Issues, projects, sprints, boards, transitions, comments, assignments |
|
|
153
|
+
| **Zendesk** | Support | Tickets, users, organizations, comments, tags, views, search |
|
|
154
|
+
| **Mailchimp** | Marketing | Campaigns, lists, members, templates, automations, reports |
|
|
155
|
+
| **Zoom** | Communication | Meetings, webinars, recordings, users, registrants |
|
|
156
|
+
| **Microsoft 365** | Productivity | Outlook mail, Teams messages, OneDrive files, calendar events |
|
|
157
|
+
| **MongoDB** | Database | Find, insert, update, delete, aggregate documents via Atlas Data API |
|
|
149
158
|
| **CRM** | CRM | **245 tools** — contacts, conversations, calendars, invoices, payments, products, pipelines, social media, custom objects, and more |
|
|
150
159
|
|
|
151
|
-
**
|
|
160
|
+
**26 services. 535 tools. 13 categories. One interface.**
|
|
152
161
|
|
|
153
|
-
> **More coming:**
|
|
162
|
+
> **More coming:** QuickBooks, Asana, Intercom, AWS S3, Vercel, Cloudflare, Firebase, Figma...
|
|
154
163
|
|
|
155
164
|
---
|
|
156
165
|
|
|
@@ -175,9 +184,9 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) o
|
|
|
175
184
|
### Multi-Step
|
|
176
185
|
|
|
177
186
|
```
|
|
178
|
-
"Create a Stripe invoice for $1000, then email the link to john@client.com"
|
|
187
|
+
"Create a Stripe invoice for $1000, then email the link via Gmail to john@client.com"
|
|
179
188
|
|
|
180
|
-
"Create a
|
|
189
|
+
"Create a Jira issue for the login bug, then post it to #bugs on Slack"
|
|
181
190
|
|
|
182
191
|
"Look up sarah@example.com in my CRM and send her a follow-up email"
|
|
183
192
|
```
|
|
@@ -235,7 +244,7 @@ One tool call. Everything deployed:
|
|
|
235
244
|
| `connect_service` | Connect a new service with credentials |
|
|
236
245
|
| `disconnect_service` | Remove a connected service |
|
|
237
246
|
| `list_connections` | See what's connected and capability counts |
|
|
238
|
-
| `list_available_services` | Browse all
|
|
247
|
+
| `list_available_services` | Browse all 26 services grouped by category |
|
|
239
248
|
| `get_service_info` | Deep dive on a specific service — endpoints, auth, capabilities |
|
|
240
249
|
| `api_call` | Direct API call to any connected service endpoint |
|
|
241
250
|
|
|
@@ -258,15 +267,19 @@ The deepest CRM integration available in any MCP server. 245 tools across 12 mod
|
|
|
258
267
|
| **Users** | 24 | Users, forms, surveys, funnels, media, companies, businesses |
|
|
259
268
|
| **Objects** | 34 | Custom objects, associations, email, workflows, snapshots, links, campaigns, courses, SaaS |
|
|
260
269
|
|
|
261
|
-
**
|
|
270
|
+
**535 total tools.** Universal orchestration (290 catalog tools across 26 services) + the most comprehensive CRM integration in the MCP ecosystem (245 dedicated tools).
|
|
262
271
|
|
|
263
272
|
> Every CRM tool is data-driven — defined as configuration, not code. Adding new endpoints takes minutes, not hours. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
264
273
|
|
|
265
274
|
---
|
|
266
275
|
|
|
267
|
-
## What's New in v1.
|
|
276
|
+
## What's New in v1.3
|
|
268
277
|
|
|
269
|
-
- **
|
|
278
|
+
- **26 services, 535 tools** — up from 17 services and 252 tools
|
|
279
|
+
- **9 new integrations** — Gmail, Google Sheets, Google Drive, Jira, Zendesk, Mailchimp, Zoom, Microsoft 365, MongoDB
|
|
280
|
+
- **13 categories** — added Storage, Support, and Marketing categories
|
|
281
|
+
- **Three-Level Execution Hierarchy** (Patent Pending) — Pipeline → Assembly Line → Radial Burst
|
|
282
|
+
- **245 CRM tools** — full API coverage across 12 modules
|
|
270
283
|
- **Data-driven tool factory** — every tool is a config object, new endpoints in minutes
|
|
271
284
|
- **Rate limiting** — built-in per-service rate limits with automatic retry
|
|
272
285
|
- **Webhook support** — receive and process external events
|
|
@@ -285,7 +298,7 @@ The deepest CRM integration available in any MCP server. 245 tools across 12 mod
|
|
|
285
298
|
│ for $500 and │ │ 2. Plan steps │ │ SendGrid │
|
|
286
299
|
│ notify #sales" │ │ 3. Execute APIs │ │ Slack │
|
|
287
300
|
│ │◀────│ 4. Chain data │◀────│ CRM │
|
|
288
|
-
│ │ │ 5. Summarize │ │ +
|
|
301
|
+
│ │ │ 5. Summarize │ │ + 22 more... │
|
|
289
302
|
└─────────────────┘ └──────────────────┘ └─────────────────┘
|
|
290
303
|
```
|
|
291
304
|
|
|
@@ -310,7 +323,7 @@ The orchestrator uses keyword matching to route tasks to the right service. Less
|
|
|
310
323
|
| **Flexibility** | Say what you want | Triggers/actions only | Unlimited but complex |
|
|
311
324
|
| **Maintenance** | Zero | Update broken zaps | Fix API changes |
|
|
312
325
|
| **Open source** | Yes (MIT) | No | Depends |
|
|
313
|
-
| **Tools available** |
|
|
326
|
+
| **Tools available** | 535 | Varies | Whatever you build |
|
|
314
327
|
|
|
315
328
|
---
|
|
316
329
|
|
|
@@ -362,7 +375,7 @@ Every task execution is logged to `~/.0n/history/` as JSONL — full audit trail
|
|
|
362
375
|
```
|
|
363
376
|
0nMCP/
|
|
364
377
|
├── index.js # Entry point — 7 universal tools + server startup
|
|
365
|
-
├── catalog.js # Service catalog —
|
|
378
|
+
├── catalog.js # Service catalog — 26 integrations with endpoints
|
|
366
379
|
├── connections.js # Connection manager — ~/.0n/connections/*.0n
|
|
367
380
|
├── orchestrator.js # AI execution planner — the brain
|
|
368
381
|
├── webhooks.js # Webhook receiver and event processing
|
|
@@ -392,7 +405,7 @@ Every task execution is logged to `~/.0n/history/` as JSONL — full audit trail
|
|
|
392
405
|
|
|
393
406
|
| Component | What It Does |
|
|
394
407
|
|-----------|-------------|
|
|
395
|
-
| **Service Catalog** | Defines all
|
|
408
|
+
| **Service Catalog** | Defines all 26 services — their base URLs, endpoints, auth patterns, and capabilities |
|
|
396
409
|
| **Connection Manager** | Stores credentials as `.0n` files in `~/.0n/connections/` per the .0n standard |
|
|
397
410
|
| **Orchestrator** | The brain — parses natural language, plans multi-step execution, calls APIs, chains data |
|
|
398
411
|
| **CRM Modules** | 245 tools across 12 modules — data-driven, every tool is config not code |
|
|
@@ -484,35 +497,71 @@ The tool factory handles registration, validation, API calls, error handling —
|
|
|
484
497
|
|
|
485
498
|
---
|
|
486
499
|
|
|
487
|
-
##
|
|
500
|
+
## Unlocks
|
|
488
501
|
|
|
489
|
-
|
|
502
|
+
0nMCP grows with its community. Every milestone unlocks new capabilities — the more developers who join, the more powerful the platform becomes.
|
|
490
503
|
|
|
504
|
+
**See the full unlock schedule at [0nmcp.com/sponsor](https://0nmcp.com/sponsor)**
|
|
505
|
+
|
|
506
|
+
### Phase 0 — Foundation (Current)
|
|
507
|
+
|
|
508
|
+
- [x] **26 services, 535 tools, 13 categories**
|
|
491
509
|
- [x] Core orchestration engine with AI planning
|
|
492
|
-
- [x] 17 service integrations
|
|
493
|
-
- [x] Multi-step execution with data chaining
|
|
494
510
|
- [x] **245 CRM tools** — full API coverage across 12 modules
|
|
511
|
+
- [x] Gmail, Google Sheets, Google Drive, Jira, Zendesk, Mailchimp, Zoom, Microsoft 365, MongoDB
|
|
495
512
|
- [x] Data-driven tool factory — config, not code
|
|
496
513
|
- [x] Full snapshot deployment (pipeline + tags + values + workflows)
|
|
497
|
-
- [x] Keyword fallback mode (works without Anthropic key)
|
|
498
514
|
- [x] **.0n Standard** — universal config format (`~/.0n/`)
|
|
499
|
-
- [x]
|
|
500
|
-
- [x] **Rate limiting** — per-service with automatic retry
|
|
501
|
-
- [x] **Webhook support** — receive external events
|
|
502
|
-
- [x] **TypeScript definitions** — full type coverage
|
|
503
|
-
- [x] **CLI** — interactive setup, migration, colored output
|
|
515
|
+
- [x] Rate limiting, webhooks, TypeScript definitions, CLI
|
|
504
516
|
- [x] **npm published** — `npx 0nmcp` live on npm
|
|
505
517
|
|
|
506
|
-
|
|
518
|
+
### Phase 1 — Essential Expansion (100 stars / $500 MRR)
|
|
519
|
+
|
|
520
|
+
- [ ] **OAuth flows** — connect services with one click
|
|
521
|
+
- [ ] **Credential encryption** — AES-256-GCM at-rest
|
|
522
|
+
- [ ] **QuickBooks** — accounting and invoicing
|
|
523
|
+
- [ ] **Asana** — project and task management
|
|
524
|
+
- [ ] **Intercom** — customer messaging
|
|
525
|
+
- [ ] Target: 30+ services, 620+ tools
|
|
526
|
+
|
|
527
|
+
### Phase 2 — Full Stack (500 stars / $2K MRR)
|
|
507
528
|
|
|
508
|
-
- [ ] **
|
|
509
|
-
- [ ] **
|
|
529
|
+
- [ ] **AWS S3** — cloud storage
|
|
530
|
+
- [ ] **Vercel** — deployment management
|
|
531
|
+
- [ ] **Cloudflare** — DNS, workers, security
|
|
510
532
|
- [ ] **Scheduled tasks** — "every Monday, send a report"
|
|
511
|
-
- [ ] **
|
|
533
|
+
- [ ] **Conditionals** — "if balance < $100, alert me"
|
|
534
|
+
- [ ] Target: 35+ services, 750+ tools
|
|
535
|
+
|
|
536
|
+
### Phase 3 — Platform (1,000 stars / $5K MRR)
|
|
537
|
+
|
|
512
538
|
- [ ] **Plugin system** — bring your own services
|
|
513
539
|
- [ ] **Web dashboard** — manage connections visually
|
|
514
|
-
- [ ] **
|
|
515
|
-
- [ ] **
|
|
540
|
+
- [ ] **Workflow marketplace** — share and discover automations
|
|
541
|
+
- [ ] **Firebase, Figma, WordPress, Webflow**
|
|
542
|
+
- [ ] Target: 42+ services, 900+ tools
|
|
543
|
+
|
|
544
|
+
### Phase 4 — Industry Packs (5,000 stars / $15K MRR)
|
|
545
|
+
|
|
546
|
+
- [ ] Healthcare, Legal, Real Estate, and E-Commerce industry packs
|
|
547
|
+
- [ ] **Twilio Flex, Square, Plaid, DocuSign**
|
|
548
|
+
- [ ] Target: 55+ services, 1,200+ tools
|
|
549
|
+
|
|
550
|
+
### Phase 5 — Ecosystem Dominance (10,000 stars / $50K MRR)
|
|
551
|
+
|
|
552
|
+
- [ ] Multi-agent orchestration
|
|
553
|
+
- [ ] Self-hosted enterprise edition
|
|
554
|
+
- [ ] Real-time streaming execution
|
|
555
|
+
- [ ] Target: 75+ services, 2,000+ tools
|
|
556
|
+
|
|
557
|
+
### Phase 6 — The Singularity (25,000+ stars / $100K+ MRR)
|
|
558
|
+
|
|
559
|
+
- [ ] Autonomous agent mode
|
|
560
|
+
- [ ] Cross-organization federation
|
|
561
|
+
- [ ] AI-generated service adapters
|
|
562
|
+
- [ ] Target: 100+ services, 5,000+ tools
|
|
563
|
+
|
|
564
|
+
> Every unlock is permanent. Once a milestone is hit, the feature ships for everyone — free and open source forever.
|
|
516
565
|
|
|
517
566
|
---
|
|
518
567
|
|
|
@@ -520,27 +569,28 @@ The tool factory handles registration, validation, API calls, error handling —
|
|
|
520
569
|
|
|
521
570
|
0nMCP is built in the open by a growing network of developers who believe AI orchestration should be free, composable, and community-owned.
|
|
522
571
|
|
|
523
|
-
**The 0n community is
|
|
572
|
+
**The 0n community is growing fast** — building integrations, shipping tools, and pushing the boundaries of what MCP can do.
|
|
524
573
|
|
|
525
574
|
### This is not a side project. This is infrastructure.
|
|
526
575
|
|
|
527
576
|
We ship weekly. The codebase is active. The community is real. If you're building with MCP, you're already one of us.
|
|
528
577
|
|
|
529
|
-
###
|
|
578
|
+
### Join the Community
|
|
530
579
|
|
|
580
|
+
- **[0nmcp.com/community](https://0nmcp.com/community)** — community hub with guides, events, and resources
|
|
581
|
+
- **[GitHub Discussions](https://github.com/0nork/0nMCP/discussions)** — ask questions, share ideas, show off what you built
|
|
582
|
+
- **[Sponsor on GitHub](https://github.com/sponsors/0nork)** — fund the next unlock and get your name on the wall
|
|
531
583
|
- **Star this repo** — it helps more than you think
|
|
532
|
-
- **Open an issue** — [bugs, ideas, questions](https://github.com/0nork/0nMCP/issues)
|
|
533
|
-
- **Join the discussion** — [GitHub Discussions](https://github.com/0nork/0nMCP/discussions)
|
|
534
584
|
- **Submit a PR** — [Contributing Guide](CONTRIBUTING.md)
|
|
535
585
|
- **Learn the .0n Standard** — [0n-spec](https://github.com/0nork/0n-spec)
|
|
536
|
-
- **Spread the word** — tell a developer friend
|
|
537
586
|
|
|
538
587
|
### Community Stats
|
|
539
588
|
|
|
540
589
|
| Metric | |
|
|
541
590
|
|--------|---|
|
|
542
|
-
| **Tools shipped** |
|
|
543
|
-
| **Services integrated** |
|
|
591
|
+
| **Tools shipped** | 535 |
|
|
592
|
+
| **Services integrated** | 26 |
|
|
593
|
+
| **Categories** | 13 |
|
|
544
594
|
| **CRM endpoints covered** | 245 / 245 (100%) |
|
|
545
595
|
| **npm packages** | 3 ([0nmcp](https://www.npmjs.com/package/0nmcp), [0nork](https://www.npmjs.com/package/0nork), [0n-spec](https://www.npmjs.com/package/0n-spec)) |
|
|
546
596
|
| **Open source repos** | 3 |
|
|
@@ -589,7 +639,7 @@ node index.js
|
|
|
589
639
|
|
|
590
640
|
| Project | Description |
|
|
591
641
|
|---------|-------------|
|
|
592
|
-
| **[0nMCP](https://github.com/0nork/0nMCP)** | Universal AI API Orchestrator —
|
|
642
|
+
| **[0nMCP](https://github.com/0nork/0nMCP)** | Universal AI API Orchestrator — 535 tools, 26 services, natural language interface |
|
|
593
643
|
| **[0n-spec](https://github.com/0nork/0n-spec)** | The .0n Standard — universal configuration format for AI orchestration |
|
|
594
644
|
| **[0nork](https://github.com/0nork/0nork)** | The parent org — AI orchestration infrastructure |
|
|
595
645
|
|
|
@@ -604,7 +654,7 @@ node index.js
|
|
|
604
654
|
|
|
605
655
|
<div align="center">
|
|
606
656
|
|
|
607
|
-
**[Sponsor on GitHub](https://github.com/sponsors/0nork)** · **[Star the repo](https://github.com/0nork/0nMCP)** · **[Tell a friend](https://twitter.com/intent/tweet?text=0nMCP%20-%
|
|
657
|
+
**[Sponsor on GitHub](https://github.com/sponsors/0nork)** · **[Star the repo](https://github.com/0nork/0nMCP)** · **[Tell a friend](https://twitter.com/intent/tweet?text=0nMCP%20-%20535%20tools,%2026%20services,%20zero%20config.%20The%20universal%20AI%20API%20orchestrator.%20Free%20and%20open%20source.&url=https://github.com/0nork/0nMCP)**
|
|
608
658
|
|
|
609
659
|
</div>
|
|
610
660
|
|
|
@@ -614,9 +664,9 @@ node index.js
|
|
|
614
664
|
|
|
615
665
|
### Stop building workflows. Start describing outcomes.
|
|
616
666
|
|
|
617
|
-
**
|
|
667
|
+
**535 tools. 26 services. Zero config. MIT licensed. Community driven.**
|
|
618
668
|
|
|
619
|
-
**[Get Started](https://github.com/0nork/0nMCP)** · **[Join the Community](https://
|
|
669
|
+
**[Get Started](https://github.com/0nork/0nMCP)** · **[Join the Community](https://0nmcp.com/community)** · **[Unlock Schedule](https://0nmcp.com/sponsor)** · **[Read the Docs](https://github.com/0nork/0n-spec)**
|
|
620
670
|
|
|
621
671
|
---
|
|
622
672
|
|
package/catalog.js
CHANGED
|
@@ -461,6 +461,306 @@ export const SERVICE_CATALOG = {
|
|
|
461
461
|
}),
|
|
462
462
|
},
|
|
463
463
|
|
|
464
|
+
// ── Gmail ───────────────────────────────────────────────────
|
|
465
|
+
gmail: {
|
|
466
|
+
name: "Gmail",
|
|
467
|
+
type: "email",
|
|
468
|
+
description: "Email — send, receive, labels, threads, drafts, search",
|
|
469
|
+
baseUrl: "https://gmail.googleapis.com/gmail/v1",
|
|
470
|
+
authType: "oauth",
|
|
471
|
+
credentialKeys: ["access_token"],
|
|
472
|
+
capabilities: [
|
|
473
|
+
{ name: "send_email", actions: ["send"], description: "Send emails" },
|
|
474
|
+
{ name: "manage_messages", actions: ["list", "get", "delete", "trash"], description: "Read, search, and manage messages" },
|
|
475
|
+
{ name: "manage_drafts", actions: ["create", "list", "send"], description: "Create and manage drafts" },
|
|
476
|
+
{ name: "manage_labels", actions: ["list", "create", "update"], description: "Organize with labels" },
|
|
477
|
+
{ name: "manage_threads", actions: ["list", "get"], description: "View conversation threads" },
|
|
478
|
+
],
|
|
479
|
+
endpoints: {
|
|
480
|
+
list_messages: { method: "GET", path: "/users/me/messages", query: ["q", "maxResults", "labelIds", "pageToken"] },
|
|
481
|
+
get_message: { method: "GET", path: "/users/me/messages/{messageId}", query: ["format"] },
|
|
482
|
+
send_message: { method: "POST", path: "/users/me/messages/send", body: { raw: "" } },
|
|
483
|
+
trash_message: { method: "POST", path: "/users/me/messages/{messageId}/trash" },
|
|
484
|
+
untrash_message: { method: "POST", path: "/users/me/messages/{messageId}/untrash" },
|
|
485
|
+
list_threads: { method: "GET", path: "/users/me/threads", query: ["q", "maxResults", "pageToken"] },
|
|
486
|
+
get_thread: { method: "GET", path: "/users/me/threads/{threadId}" },
|
|
487
|
+
create_draft: { method: "POST", path: "/users/me/drafts", body: { message: { raw: "" } } },
|
|
488
|
+
list_drafts: { method: "GET", path: "/users/me/drafts" },
|
|
489
|
+
send_draft: { method: "POST", path: "/users/me/drafts/send", body: { id: "" } },
|
|
490
|
+
list_labels: { method: "GET", path: "/users/me/labels" },
|
|
491
|
+
create_label: { method: "POST", path: "/users/me/labels", body: { name: "" } },
|
|
492
|
+
get_profile: { method: "GET", path: "/users/me/profile" },
|
|
493
|
+
},
|
|
494
|
+
authHeader: (creds) => ({
|
|
495
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
496
|
+
"Content-Type": "application/json",
|
|
497
|
+
}),
|
|
498
|
+
},
|
|
499
|
+
|
|
500
|
+
// ── Google Sheets ───────────────────────────────────────────
|
|
501
|
+
google_sheets: {
|
|
502
|
+
name: "Google Sheets",
|
|
503
|
+
type: "database",
|
|
504
|
+
description: "Spreadsheets — read, write, append, create, format cells",
|
|
505
|
+
baseUrl: "https://sheets.googleapis.com/v4",
|
|
506
|
+
authType: "oauth",
|
|
507
|
+
credentialKeys: ["access_token"],
|
|
508
|
+
capabilities: [
|
|
509
|
+
{ name: "manage_spreadsheets", actions: ["create", "get"], description: "Create and get spreadsheet metadata" },
|
|
510
|
+
{ name: "manage_values", actions: ["get", "update", "append", "clear"], description: "Read, write, and append cell values" },
|
|
511
|
+
{ name: "manage_sheets", actions: ["create", "delete"], description: "Add and remove sheets within a spreadsheet" },
|
|
512
|
+
],
|
|
513
|
+
endpoints: {
|
|
514
|
+
create_spreadsheet: { method: "POST", path: "/spreadsheets", body: { properties: { title: "" } } },
|
|
515
|
+
get_spreadsheet: { method: "GET", path: "/spreadsheets/{spreadsheetId}" },
|
|
516
|
+
get_values: { method: "GET", path: "/spreadsheets/{spreadsheetId}/values/{range}" },
|
|
517
|
+
update_values: { method: "PUT", path: "/spreadsheets/{spreadsheetId}/values/{range}", query: ["valueInputOption"], body: { values: [] } },
|
|
518
|
+
append_values: { method: "POST", path: "/spreadsheets/{spreadsheetId}/values/{range}:append", query: ["valueInputOption"], body: { values: [] } },
|
|
519
|
+
clear_values: { method: "POST", path: "/spreadsheets/{spreadsheetId}/values/{range}:clear" },
|
|
520
|
+
batch_get: { method: "GET", path: "/spreadsheets/{spreadsheetId}/values:batchGet", query: ["ranges"] },
|
|
521
|
+
batch_update: { method: "POST", path: "/spreadsheets/{spreadsheetId}/values:batchUpdate", body: { data: [], valueInputOption: "USER_ENTERED" } },
|
|
522
|
+
},
|
|
523
|
+
authHeader: (creds) => ({
|
|
524
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
525
|
+
"Content-Type": "application/json",
|
|
526
|
+
}),
|
|
527
|
+
},
|
|
528
|
+
|
|
529
|
+
// ── Google Drive ────────────────────────────────────────────
|
|
530
|
+
google_drive: {
|
|
531
|
+
name: "Google Drive",
|
|
532
|
+
type: "storage",
|
|
533
|
+
description: "Cloud storage — files, folders, sharing, search, permissions",
|
|
534
|
+
baseUrl: "https://www.googleapis.com/drive/v3",
|
|
535
|
+
authType: "oauth",
|
|
536
|
+
credentialKeys: ["access_token"],
|
|
537
|
+
capabilities: [
|
|
538
|
+
{ name: "manage_files", actions: ["list", "get", "create", "delete", "copy"], description: "Upload, download, and manage files" },
|
|
539
|
+
{ name: "manage_permissions", actions: ["create", "list", "delete"], description: "Share files and manage access" },
|
|
540
|
+
{ name: "search_files", actions: ["search"], description: "Search across Drive" },
|
|
541
|
+
],
|
|
542
|
+
endpoints: {
|
|
543
|
+
list_files: { method: "GET", path: "/files", query: ["q", "pageSize", "orderBy", "fields", "pageToken"] },
|
|
544
|
+
get_file: { method: "GET", path: "/files/{fileId}", query: ["fields"] },
|
|
545
|
+
create_file: { method: "POST", path: "/files", body: { name: "", mimeType: "", parents: [] } },
|
|
546
|
+
copy_file: { method: "POST", path: "/files/{fileId}/copy", body: { name: "" } },
|
|
547
|
+
update_file: { method: "PATCH", path: "/files/{fileId}", body: { name: "" } },
|
|
548
|
+
delete_file: { method: "DELETE", path: "/files/{fileId}" },
|
|
549
|
+
create_permission: { method: "POST", path: "/files/{fileId}/permissions", body: { role: "", type: "", emailAddress: "" } },
|
|
550
|
+
list_permissions: { method: "GET", path: "/files/{fileId}/permissions" },
|
|
551
|
+
delete_permission: { method: "DELETE", path: "/files/{fileId}/permissions/{permissionId}" },
|
|
552
|
+
generate_ids: { method: "GET", path: "/files/generateIds", query: ["count"] },
|
|
553
|
+
},
|
|
554
|
+
authHeader: (creds) => ({
|
|
555
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
556
|
+
"Content-Type": "application/json",
|
|
557
|
+
}),
|
|
558
|
+
},
|
|
559
|
+
|
|
560
|
+
// ── Jira ────────────────────────────────────────────────────
|
|
561
|
+
jira: {
|
|
562
|
+
name: "Jira",
|
|
563
|
+
type: "project",
|
|
564
|
+
description: "Project management — issues, sprints, boards, projects, epics, JQL search",
|
|
565
|
+
baseUrl: "https://{domain}.atlassian.net/rest/api/3",
|
|
566
|
+
authType: "basic",
|
|
567
|
+
credentialKeys: ["email", "apiToken", "domain"],
|
|
568
|
+
capabilities: [
|
|
569
|
+
{ name: "manage_issues", actions: ["create", "get", "update", "delete", "search", "transition"], description: "Full issue lifecycle management" },
|
|
570
|
+
{ name: "manage_projects", actions: ["list", "get"], description: "List and view projects" },
|
|
571
|
+
{ name: "manage_sprints", actions: ["list"], description: "View sprints and boards" },
|
|
572
|
+
{ name: "manage_comments", actions: ["create", "list"], description: "Add and view issue comments" },
|
|
573
|
+
],
|
|
574
|
+
endpoints: {
|
|
575
|
+
search_issues: { method: "POST", path: "/search", body: { jql: "", maxResults: 50 } },
|
|
576
|
+
create_issue: { method: "POST", path: "/issue", body: { fields: { project: {}, summary: "", issuetype: {}, description: {} } } },
|
|
577
|
+
get_issue: { method: "GET", path: "/issue/{issueIdOrKey}", query: ["fields", "expand"] },
|
|
578
|
+
update_issue: { method: "PUT", path: "/issue/{issueIdOrKey}", body: { fields: {} } },
|
|
579
|
+
delete_issue: { method: "DELETE", path: "/issue/{issueIdOrKey}" },
|
|
580
|
+
transition_issue: { method: "POST", path: "/issue/{issueIdOrKey}/transitions", body: { transition: { id: "" } } },
|
|
581
|
+
get_transitions: { method: "GET", path: "/issue/{issueIdOrKey}/transitions" },
|
|
582
|
+
add_comment: { method: "POST", path: "/issue/{issueIdOrKey}/comment", body: { body: {} } },
|
|
583
|
+
list_comments: { method: "GET", path: "/issue/{issueIdOrKey}/comment" },
|
|
584
|
+
list_projects: { method: "GET", path: "/project", query: ["maxResults", "startAt"] },
|
|
585
|
+
get_project: { method: "GET", path: "/project/{projectIdOrKey}" },
|
|
586
|
+
assign_issue: { method: "PUT", path: "/issue/{issueIdOrKey}/assignee", body: { accountId: "" } },
|
|
587
|
+
},
|
|
588
|
+
authHeader: (creds) => ({
|
|
589
|
+
"Authorization": "Basic " + Buffer.from(`${creds.email}:${creds.apiToken}`).toString("base64"),
|
|
590
|
+
"Content-Type": "application/json",
|
|
591
|
+
}),
|
|
592
|
+
},
|
|
593
|
+
|
|
594
|
+
// ── Zendesk ─────────────────────────────────────────────────
|
|
595
|
+
zendesk: {
|
|
596
|
+
name: "Zendesk",
|
|
597
|
+
type: "support",
|
|
598
|
+
description: "Customer support — tickets, users, organizations, search, macros",
|
|
599
|
+
baseUrl: "https://{subdomain}.zendesk.com/api/v2",
|
|
600
|
+
authType: "basic",
|
|
601
|
+
credentialKeys: ["email", "apiToken", "subdomain"],
|
|
602
|
+
capabilities: [
|
|
603
|
+
{ name: "manage_tickets", actions: ["create", "list", "get", "update", "delete"], description: "Full ticket lifecycle" },
|
|
604
|
+
{ name: "manage_users", actions: ["create", "list", "search"], description: "Manage end-users and agents" },
|
|
605
|
+
{ name: "manage_organizations", actions: ["list", "get"], description: "View organizations" },
|
|
606
|
+
{ name: "search", actions: ["search"], description: "Full-text search across tickets, users, orgs" },
|
|
607
|
+
],
|
|
608
|
+
endpoints: {
|
|
609
|
+
list_tickets: { method: "GET", path: "/tickets.json", query: ["page", "per_page", "sort_by", "sort_order"] },
|
|
610
|
+
get_ticket: { method: "GET", path: "/tickets/{ticketId}.json" },
|
|
611
|
+
create_ticket: { method: "POST", path: "/tickets.json", body: { ticket: { subject: "", description: "", priority: "" } } },
|
|
612
|
+
update_ticket: { method: "PUT", path: "/tickets/{ticketId}.json", body: { ticket: {} } },
|
|
613
|
+
delete_ticket: { method: "DELETE", path: "/tickets/{ticketId}.json" },
|
|
614
|
+
list_ticket_comments: { method: "GET", path: "/tickets/{ticketId}/comments.json" },
|
|
615
|
+
search: { method: "GET", path: "/search.json", query: ["query", "sort_by", "sort_order"] },
|
|
616
|
+
list_users: { method: "GET", path: "/users.json", query: ["role", "page", "per_page"] },
|
|
617
|
+
create_user: { method: "POST", path: "/users.json", body: { user: { name: "", email: "" } } },
|
|
618
|
+
get_user: { method: "GET", path: "/users/{userId}.json" },
|
|
619
|
+
list_organizations: { method: "GET", path: "/organizations.json" },
|
|
620
|
+
list_macros: { method: "GET", path: "/macros.json" },
|
|
621
|
+
},
|
|
622
|
+
authHeader: (creds) => ({
|
|
623
|
+
"Authorization": "Basic " + Buffer.from(`${creds.email}/token:${creds.apiToken}`).toString("base64"),
|
|
624
|
+
"Content-Type": "application/json",
|
|
625
|
+
}),
|
|
626
|
+
},
|
|
627
|
+
|
|
628
|
+
// ── Mailchimp ───────────────────────────────────────────────
|
|
629
|
+
mailchimp: {
|
|
630
|
+
name: "Mailchimp",
|
|
631
|
+
type: "marketing",
|
|
632
|
+
description: "Email marketing — audiences, campaigns, automations, templates, analytics",
|
|
633
|
+
baseUrl: "https://{dc}.api.mailchimp.com/3.0",
|
|
634
|
+
authType: "api_key",
|
|
635
|
+
credentialKeys: ["apiKey"],
|
|
636
|
+
capabilities: [
|
|
637
|
+
{ name: "manage_audiences", actions: ["list", "get"], description: "View and manage audiences/lists" },
|
|
638
|
+
{ name: "manage_members", actions: ["create", "update", "list", "search"], description: "Add and manage subscribers" },
|
|
639
|
+
{ name: "manage_campaigns", actions: ["create", "list", "send"], description: "Create and send email campaigns" },
|
|
640
|
+
{ name: "manage_templates", actions: ["list"], description: "View email templates" },
|
|
641
|
+
],
|
|
642
|
+
endpoints: {
|
|
643
|
+
list_audiences: { method: "GET", path: "/lists", query: ["count", "offset"] },
|
|
644
|
+
get_audience: { method: "GET", path: "/lists/{listId}" },
|
|
645
|
+
add_member: { method: "POST", path: "/lists/{listId}/members", body: { email_address: "", status: "subscribed" } },
|
|
646
|
+
update_member: { method: "PATCH", path: "/lists/{listId}/members/{subscriberHash}", body: {} },
|
|
647
|
+
list_members: { method: "GET", path: "/lists/{listId}/members", query: ["count", "offset", "status"] },
|
|
648
|
+
search_members: { method: "GET", path: "/search-members", query: ["query", "list_id"] },
|
|
649
|
+
list_campaigns: { method: "GET", path: "/campaigns", query: ["count", "offset", "status", "type"] },
|
|
650
|
+
create_campaign: { method: "POST", path: "/campaigns", body: { type: "regular", recipients: {}, settings: {} } },
|
|
651
|
+
send_campaign: { method: "POST", path: "/campaigns/{campaignId}/actions/send" },
|
|
652
|
+
get_campaign_report: { method: "GET", path: "/reports/{campaignId}" },
|
|
653
|
+
list_templates: { method: "GET", path: "/templates", query: ["count", "type"] },
|
|
654
|
+
list_automations: { method: "GET", path: "/automations" },
|
|
655
|
+
},
|
|
656
|
+
authHeader: (creds) => {
|
|
657
|
+
const dc = creds.apiKey.split("-").pop();
|
|
658
|
+
return {
|
|
659
|
+
"Authorization": "Basic " + Buffer.from(`anystring:${creds.apiKey}`).toString("base64"),
|
|
660
|
+
"Content-Type": "application/json",
|
|
661
|
+
};
|
|
662
|
+
},
|
|
663
|
+
},
|
|
664
|
+
|
|
665
|
+
// ── Zoom ────────────────────────────────────────────────────
|
|
666
|
+
zoom: {
|
|
667
|
+
name: "Zoom",
|
|
668
|
+
type: "communication",
|
|
669
|
+
description: "Video conferencing — meetings, webinars, recordings, users",
|
|
670
|
+
baseUrl: "https://api.zoom.us/v2",
|
|
671
|
+
authType: "oauth",
|
|
672
|
+
credentialKeys: ["access_token"],
|
|
673
|
+
capabilities: [
|
|
674
|
+
{ name: "manage_meetings", actions: ["create", "list", "get", "update", "delete"], description: "Schedule and manage meetings" },
|
|
675
|
+
{ name: "manage_recordings", actions: ["list", "get", "delete"], description: "Access meeting recordings" },
|
|
676
|
+
{ name: "manage_users", actions: ["list", "get"], description: "View Zoom users" },
|
|
677
|
+
{ name: "manage_webinars", actions: ["list", "create"], description: "Schedule webinars" },
|
|
678
|
+
],
|
|
679
|
+
endpoints: {
|
|
680
|
+
list_meetings: { method: "GET", path: "/users/{userId}/meetings", query: ["type", "page_size", "page_number"] },
|
|
681
|
+
create_meeting: { method: "POST", path: "/users/{userId}/meetings", body: { topic: "", type: 2, start_time: "", duration: 60 } },
|
|
682
|
+
get_meeting: { method: "GET", path: "/meetings/{meetingId}" },
|
|
683
|
+
update_meeting: { method: "PATCH", path: "/meetings/{meetingId}", body: {} },
|
|
684
|
+
delete_meeting: { method: "DELETE", path: "/meetings/{meetingId}" },
|
|
685
|
+
list_recordings: { method: "GET", path: "/users/{userId}/recordings", query: ["from", "to", "page_size"] },
|
|
686
|
+
get_recording: { method: "GET", path: "/meetings/{meetingId}/recordings" },
|
|
687
|
+
delete_recording: { method: "DELETE", path: "/meetings/{meetingId}/recordings" },
|
|
688
|
+
list_users: { method: "GET", path: "/users", query: ["status", "page_size", "page_number"] },
|
|
689
|
+
get_user: { method: "GET", path: "/users/{userId}" },
|
|
690
|
+
},
|
|
691
|
+
authHeader: (creds) => ({
|
|
692
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
693
|
+
"Content-Type": "application/json",
|
|
694
|
+
}),
|
|
695
|
+
},
|
|
696
|
+
|
|
697
|
+
// ── Microsoft Graph (Outlook, Teams, OneDrive) ──────────────
|
|
698
|
+
microsoft: {
|
|
699
|
+
name: "Microsoft 365",
|
|
700
|
+
type: "productivity",
|
|
701
|
+
description: "Outlook mail, Teams messages, OneDrive files, calendar — via Microsoft Graph API",
|
|
702
|
+
baseUrl: "https://graph.microsoft.com/v1.0",
|
|
703
|
+
authType: "oauth",
|
|
704
|
+
credentialKeys: ["access_token"],
|
|
705
|
+
capabilities: [
|
|
706
|
+
{ name: "manage_mail", actions: ["send", "list", "get", "delete"], description: "Send and manage Outlook email" },
|
|
707
|
+
{ name: "manage_events", actions: ["create", "list", "update", "delete"], description: "Manage Outlook calendar events" },
|
|
708
|
+
{ name: "manage_files", actions: ["list", "get", "upload"], description: "OneDrive file management" },
|
|
709
|
+
{ name: "manage_teams", actions: ["send", "list"], description: "Send Teams messages and list channels" },
|
|
710
|
+
{ name: "manage_users", actions: ["list", "get"], description: "View organization users" },
|
|
711
|
+
],
|
|
712
|
+
endpoints: {
|
|
713
|
+
send_mail: { method: "POST", path: "/me/sendMail", body: { message: { subject: "", body: {}, toRecipients: [] } } },
|
|
714
|
+
list_messages: { method: "GET", path: "/me/messages", query: ["$top", "$skip", "$filter", "$select", "$orderby"] },
|
|
715
|
+
get_message: { method: "GET", path: "/me/messages/{messageId}" },
|
|
716
|
+
delete_message: { method: "DELETE", path: "/me/messages/{messageId}" },
|
|
717
|
+
list_events: { method: "GET", path: "/me/events", query: ["$top", "$filter", "$orderby"] },
|
|
718
|
+
create_event: { method: "POST", path: "/me/events", body: { subject: "", start: {}, end: {}, attendees: [] } },
|
|
719
|
+
update_event: { method: "PATCH", path: "/me/events/{eventId}", body: {} },
|
|
720
|
+
delete_event: { method: "DELETE", path: "/me/events/{eventId}" },
|
|
721
|
+
list_drive_items: { method: "GET", path: "/me/drive/root/children" },
|
|
722
|
+
get_drive_item: { method: "GET", path: "/me/drive/items/{itemId}" },
|
|
723
|
+
search_drive: { method: "GET", path: "/me/drive/root/search(q='{query}')" },
|
|
724
|
+
list_teams: { method: "GET", path: "/me/joinedTeams" },
|
|
725
|
+
list_channels: { method: "GET", path: "/teams/{teamId}/channels" },
|
|
726
|
+
send_channel_message: { method: "POST", path: "/teams/{teamId}/channels/{channelId}/messages", body: { body: { content: "" } } },
|
|
727
|
+
get_user: { method: "GET", path: "/me" },
|
|
728
|
+
},
|
|
729
|
+
authHeader: (creds) => ({
|
|
730
|
+
"Authorization": `Bearer ${creds.access_token}`,
|
|
731
|
+
"Content-Type": "application/json",
|
|
732
|
+
}),
|
|
733
|
+
},
|
|
734
|
+
|
|
735
|
+
// ── MongoDB Atlas ───────────────────────────────────────────
|
|
736
|
+
mongodb: {
|
|
737
|
+
name: "MongoDB",
|
|
738
|
+
type: "database",
|
|
739
|
+
description: "NoSQL database — find, insert, update, delete, aggregate via Atlas Data API",
|
|
740
|
+
baseUrl: "https://data.mongodb-api.com/app/{appId}/endpoint/data/v1",
|
|
741
|
+
authType: "api_key",
|
|
742
|
+
credentialKeys: ["apiKey", "appId"],
|
|
743
|
+
capabilities: [
|
|
744
|
+
{ name: "manage_documents", actions: ["find", "insert", "update", "delete"], description: "CRUD operations on documents" },
|
|
745
|
+
{ name: "aggregate", actions: ["aggregate"], description: "Run aggregation pipelines" },
|
|
746
|
+
],
|
|
747
|
+
endpoints: {
|
|
748
|
+
find_one: { method: "POST", path: "/action/findOne", body: { dataSource: "", database: "", collection: "", filter: {} } },
|
|
749
|
+
find_many: { method: "POST", path: "/action/find", body: { dataSource: "", database: "", collection: "", filter: {}, limit: 100 } },
|
|
750
|
+
insert_one: { method: "POST", path: "/action/insertOne", body: { dataSource: "", database: "", collection: "", document: {} } },
|
|
751
|
+
insert_many: { method: "POST", path: "/action/insertMany", body: { dataSource: "", database: "", collection: "", documents: [] } },
|
|
752
|
+
update_one: { method: "POST", path: "/action/updateOne", body: { dataSource: "", database: "", collection: "", filter: {}, update: {} } },
|
|
753
|
+
update_many: { method: "POST", path: "/action/updateMany", body: { dataSource: "", database: "", collection: "", filter: {}, update: {} } },
|
|
754
|
+
delete_one: { method: "POST", path: "/action/deleteOne", body: { dataSource: "", database: "", collection: "", filter: {} } },
|
|
755
|
+
aggregate: { method: "POST", path: "/action/aggregate", body: { dataSource: "", database: "", collection: "", pipeline: [] } },
|
|
756
|
+
},
|
|
757
|
+
authHeader: (creds) => ({
|
|
758
|
+
"api-key": creds.apiKey,
|
|
759
|
+
"Content-Type": "application/json",
|
|
760
|
+
"Access-Control-Request-Headers": "*",
|
|
761
|
+
}),
|
|
762
|
+
},
|
|
763
|
+
|
|
464
764
|
};
|
|
465
765
|
|
|
466
766
|
// ── Helpers ────────────────────────────────────────────────
|
package/index.js
CHANGED
|
@@ -34,7 +34,7 @@ const orchestrator = new Orchestrator(connections);
|
|
|
34
34
|
|
|
35
35
|
const server = new McpServer({
|
|
36
36
|
name: "0nMCP",
|
|
37
|
-
version: "1.
|
|
37
|
+
version: "1.3.1",
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
// ============================================================
|
|
@@ -113,9 +113,18 @@ Examples:
|
|
|
113
113
|
- CRM: { "access_token": "..." }
|
|
114
114
|
- HubSpot: { "accessToken": "..." }
|
|
115
115
|
- Shopify: { "accessToken": "...", "store": "mystore" }
|
|
116
|
-
- Supabase: { "apiKey": "...", "projectRef": "..." }
|
|
116
|
+
- Supabase: { "apiKey": "...", "projectRef": "..." }
|
|
117
|
+
- Gmail: { "access_token": "..." }
|
|
118
|
+
- Google Sheets: { "access_token": "..." }
|
|
119
|
+
- Google Drive: { "access_token": "..." }
|
|
120
|
+
- Jira: { "email": "...", "apiToken": "...", "domain": "mycompany" }
|
|
121
|
+
- Zendesk: { "email": "...", "apiToken": "...", "subdomain": "mycompany" }
|
|
122
|
+
- Mailchimp: { "apiKey": "...-us21" }
|
|
123
|
+
- Zoom: { "access_token": "..." }
|
|
124
|
+
- Microsoft 365: { "access_token": "..." }
|
|
125
|
+
- MongoDB: { "apiKey": "...", "appId": "..." }`,
|
|
117
126
|
{
|
|
118
|
-
service: z.string().describe("Service key (e.g., stripe, sendgrid, twilio, slack, crm, github, notion, airtable, openai, shopify, hubspot, supabase, discord, linear, resend, calendly, google_calendar)"),
|
|
127
|
+
service: z.string().describe("Service key (e.g., stripe, sendgrid, twilio, slack, crm, github, notion, airtable, openai, shopify, hubspot, supabase, discord, linear, resend, calendly, google_calendar, gmail, google_sheets, google_drive, jira, zendesk, mailchimp, zoom, microsoft, mongodb)"),
|
|
119
128
|
credentials: z.record(z.string()).describe("Service credentials as key-value pairs"),
|
|
120
129
|
},
|
|
121
130
|
async ({ service, credentials }) => {
|