integrate-sdk 0.1.7 → 0.2.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 CHANGED
@@ -11,10 +11,11 @@ A type-safe TypeScript SDK for connecting to the Integrate MCP (Model Context Pr
11
11
  ## Features
12
12
 
13
13
  - 🔌 **Plugin-Based Architecture** - Enable only the integrations you need
14
- - 🔒 **Type-Safe** - Full TypeScript support with IntelliSense
14
+ - 🔒 **Fully Typed API** - Type-safe methods with autocomplete (e.g., `client.github.createIssue()`)
15
+ - 💡 **IntelliSense Support** - Full TypeScript support with parameter hints
15
16
  - 🌊 **Real-time Communication** - HTTP streaming with NDJSON
16
17
  - 🔐 **OAuth Ready** - Configure OAuth credentials for each provider
17
- - 🛠️ **Extensible** - Create custom plugins for new integrations
18
+ - 🛠️ **Extensible** - Configure plugins for any server-supported integration
18
19
  - 📦 **Zero Dependencies** - Lightweight implementation
19
20
 
20
21
  ## Installation
@@ -44,21 +45,60 @@ const client = createMCPClient({
44
45
  // Connect to the server
45
46
  await client.connect();
46
47
 
47
- // Call a tool
48
- const result = await client.callTool("github_create_issue", {
49
- repo: "owner/repo",
48
+ // Call GitHub methods with full type safety
49
+ const result = await client.github.createIssue({
50
+ owner: "owner",
51
+ repo: "repo",
50
52
  title: "Bug report",
51
53
  body: "Description of the bug",
52
54
  });
53
55
 
54
56
  console.log("Issue created:", result);
55
57
 
58
+ // Call server-level tools with typed methods
59
+ const tools = await client.server.listToolsByIntegration({
60
+ integration: "github",
61
+ });
62
+
56
63
  // Disconnect when done
57
64
  await client.disconnect();
58
65
  ```
59
66
 
60
67
  **Need help?** Check out the [complete documentation](https://integrate.dev) for detailed guides, examples, and API reference.
61
68
 
69
+ ## Why Use Integrate SDK?
70
+
71
+ ### Typed Plugin Methods
72
+
73
+ Instead of generic tool calls, use typed methods with full autocomplete:
74
+
75
+ ```typescript
76
+ // ✅ New: Typed methods with autocomplete
77
+ await client.github.createIssue({ owner: "user", repo: "project", title: "Bug" });
78
+ await client.gmail.sendEmail({ to: "user@example.com", subject: "Hello" });
79
+ ```
80
+
81
+ ### Benefits
82
+
83
+ - **Type Safety**: Parameters are validated at compile time
84
+ - **Autocomplete**: Your IDE suggests available methods and parameters
85
+ - **Documentation**: Inline JSDoc comments for every method
86
+ - **Refactoring**: Rename methods safely across your codebase
87
+
88
+ ### Three Ways to Call Tools
89
+
90
+ ```typescript
91
+ // 1. Typed plugin methods (recommended for built-in plugins like GitHub/Gmail)
92
+ await client.github.createIssue({ owner: "user", repo: "project", title: "Bug" });
93
+ await client.gmail.sendEmail({ to: "user@example.com", subject: "Hello" });
94
+
95
+ // 2. Typed server methods (for server-level tools)
96
+ await client.server.listToolsByIntegration({ integration: "github" });
97
+
98
+ // 3. Direct tool calls (for other server-supported integrations)
99
+ await client._callToolByName("slack_send_message", { channel: "#general", text: "Hello" });
100
+ ```
101
+
62
102
  ## Built-in Plugins
63
103
 
64
104
  ### GitHub Plugin
@@ -66,11 +106,22 @@ await client.disconnect();
66
106
  Access GitHub repositories, issues, pull requests, and more.
67
107
 
68
108
  ```typescript
69
- githubPlugin({
70
- clientId: process.env.GITHUB_CLIENT_ID!,
71
- clientSecret: process.env.GITHUB_CLIENT_SECRET!,
72
- scopes: ["repo", "user"],
109
+ const client = createMCPClient({
110
+ plugins: [
111
+ githubPlugin({
112
+ clientId: process.env.GITHUB_CLIENT_ID!,
113
+ clientSecret: process.env.GITHUB_CLIENT_SECRET!,
114
+ scopes: ["repo", "user"],
115
+ }),
116
+ ],
73
117
  });
118
+
119
+ await client.connect();
120
+
121
+ // Use typed methods
122
+ await client.github.getRepo({ owner: "facebook", repo: "react" });
123
+ await client.github.createIssue({ owner: "user", repo: "repo", title: "Bug" });
124
+ await client.github.listPullRequests({ owner: "user", repo: "repo", state: "open" });
74
125
  ```
75
126
 
76
127
  [→ View GitHub plugin documentation](https://integrate.dev/docs/plugins/github)
@@ -80,32 +131,56 @@ githubPlugin({
80
131
  Send emails, manage labels, and search messages.
81
132
 
82
133
  ```typescript
83
- gmailPlugin({
84
- clientId: process.env.GMAIL_CLIENT_ID!,
85
- clientSecret: process.env.GMAIL_CLIENT_SECRET!,
134
+ const client = createMCPClient({
135
+ plugins: [
136
+ gmailPlugin({
137
+ clientId: process.env.GMAIL_CLIENT_ID!,
138
+ clientSecret: process.env.GMAIL_CLIENT_SECRET!,
139
+ }),
140
+ ],
86
141
  });
142
+
143
+ await client.connect();
144
+
145
+ // Use typed methods
146
+ await client.gmail.sendEmail({ to: "user@example.com", subject: "Hello", body: "Hi!" });
147
+ await client.gmail.listEmails({ maxResults: 10, q: "is:unread" });
148
+ await client.gmail.searchEmails({ query: "from:notifications@github.com" });
87
149
  ```
88
150
 
89
151
  [→ View Gmail plugin documentation](https://integrate.dev/docs/plugins/gmail)
90
152
 
91
- ### Custom Plugins
153
+ ### Configure Additional Integrations
92
154
 
93
- Create your own plugins for any service.
155
+ The server may support additional integrations beyond GitHub and Gmail. You can configure OAuth and enable these tools using `genericOAuthPlugin`:
94
156
 
95
157
  ```typescript
96
158
  import { genericOAuthPlugin } from "integrate-sdk";
97
159
 
160
+ // Configure a plugin for any server-supported integration
98
161
  const slackPlugin = genericOAuthPlugin({
99
162
  id: "slack",
100
163
  provider: "slack",
101
164
  clientId: process.env.SLACK_CLIENT_ID!,
102
165
  clientSecret: process.env.SLACK_CLIENT_SECRET!,
103
166
  scopes: ["chat:write", "channels:read"],
104
- tools: ["slack_send_message", "slack_list_channels"],
167
+ tools: ["slack_send_message", "slack_list_channels"], // Must exist on server
168
+ });
169
+
170
+ const client = createMCPClient({
171
+ plugins: [slackPlugin],
172
+ });
173
+
174
+ await client.connect();
175
+
176
+ // Use _callToolByName to call the tools
177
+ await client._callToolByName("slack_send_message", {
178
+ channel: "#general",
179
+ text: "Hello!"
105
180
  });
106
181
  ```
107
182
 
108
- [→ Learn how to create custom plugins](https://integrate.dev/docs/plugins/custom-plugins)
183
+ **Note**: Plugins configure access to server-provided tools - they don't create new tools. All tool implementations must exist on the Integrate MCP server.
109
184
 
110
185
  ## Vercel AI SDK Integration
111
186
 
@@ -135,7 +210,7 @@ const result = await generateText({
135
210
  For detailed guides, API reference, and examples, visit the [complete documentation](https://integrate.dev):
136
211
 
137
212
  - **[Getting Started](https://integrate.dev/docs/getting-started/installation)** - Installation and quick start
138
- - **[Plugins](https://integrate.dev/docs/plugins)** - Built-in and custom plugins
213
+ - **[Plugins](https://integrate.dev/docs/plugins)** - Built-in plugins and configuration
139
214
  - **[Vercel AI SDK](https://integrate.dev/docs/integrations/vercel-ai)** - AI model integration
140
215
  - **[Advanced Usage](https://integrate.dev/docs/guides/advanced-usage)** - Error handling, retries, and more
141
216
  - **[API Reference](https://integrate.dev/docs/reference/api-reference)** - Complete API documentation
package/dist/client.d.ts CHANGED
@@ -6,6 +6,9 @@ import type { MCPTool, MCPToolCallResponse } from "./protocol/messages.js";
6
6
  import type { MCPPlugin, OAuthConfig } from "./plugins/types.js";
7
7
  import type { MCPClientConfig } from "./config/types.js";
8
8
  import { type AuthenticationError } from "./errors.js";
9
+ import type { GitHubPluginClient } from "./plugins/github-client.js";
10
+ import type { GmailPluginClient } from "./plugins/gmail-client.js";
11
+ import type { ServerPluginClient } from "./plugins/server-client.js";
9
12
  /**
10
13
  * Tool invocation options
11
14
  */
@@ -15,6 +18,25 @@ export interface ToolInvocationOptions {
15
18
  /** Tool arguments */
16
19
  arguments?: Record<string, unknown>;
17
20
  }
21
+ /**
22
+ * Extract all plugin IDs from a plugins array as a union
23
+ */
24
+ type ExtractPluginId<T> = T extends {
25
+ id: infer Id;
26
+ } ? Id : never;
27
+ type PluginIds<TPlugins extends readonly MCPPlugin[]> = ExtractPluginId<TPlugins[number]>;
28
+ /**
29
+ * Check if a specific plugin ID exists in the plugin array
30
+ */
31
+ type HasPluginId<TPlugins extends readonly MCPPlugin[], Id extends string> = Id extends PluginIds<TPlugins> ? true : false;
32
+ /**
33
+ * Plugin namespace type mapping - only includes properties for configured plugins
34
+ */
35
+ type PluginNamespaces<TPlugins extends readonly MCPPlugin[]> = (HasPluginId<TPlugins, "github"> extends true ? {
36
+ github: GitHubPluginClient;
37
+ } : {}) & (HasPluginId<TPlugins, "gmail"> extends true ? {
38
+ gmail: GmailPluginClient;
39
+ } : {});
18
40
  /**
19
41
  * MCP Client Class
20
42
  *
@@ -30,7 +52,27 @@ export declare class MCPClient<TPlugins extends readonly MCPPlugin[] = readonly
30
52
  private onReauthRequired?;
31
53
  private maxReauthRetries;
32
54
  private authState;
55
+ readonly github: PluginNamespaces<TPlugins> extends {
56
+ github: GitHubPluginClient;
57
+ } ? GitHubPluginClient : never;
58
+ readonly gmail: PluginNamespaces<TPlugins> extends {
59
+ gmail: GmailPluginClient;
60
+ } ? GmailPluginClient : never;
61
+ readonly server: ServerPluginClient;
33
62
  constructor(config: MCPClientConfig<TPlugins>);
63
+ /**
64
+ * Create a proxy for a plugin namespace that intercepts method calls
65
+ * and routes them to the appropriate tool
66
+ */
67
+ private createPluginProxy;
68
+ /**
69
+ * Create a proxy for the server namespace that handles server-level tools
70
+ */
71
+ private createServerProxy;
72
+ /**
73
+ * Internal implementation for calling server tools
74
+ */
75
+ private callServerToolInternal;
34
76
  /**
35
77
  * Initialize all plugins
36
78
  */
@@ -48,9 +90,24 @@ export declare class MCPClient<TPlugins extends readonly MCPPlugin[] = readonly
48
90
  */
49
91
  private discoverTools;
50
92
  /**
51
- * Call a tool by name with automatic retry on authentication failure
93
+ * Internal method for integrations to call tools by name
94
+ * Used by integrations like Vercel AI that need to map from tool names
95
+ * @internal
96
+ */
97
+ _callToolByName(name: string, args?: Record<string, unknown>): Promise<MCPToolCallResponse>;
98
+ /**
99
+ * Call any available tool on the server by name, bypassing plugin restrictions
100
+ * Useful for server-level tools like 'list_tools_by_integration' that don't belong to a specific plugin
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * // Call a server-level tool
105
+ * const tools = await client.callServerTool('list_tools_by_integration', {
106
+ * integration: 'github'
107
+ * });
108
+ * ```
52
109
  */
53
- callTool(name: string, args?: Record<string, unknown>): Promise<MCPToolCallResponse>;
110
+ callServerTool(name: string, args?: Record<string, unknown>): Promise<MCPToolCallResponse>;
54
111
  /**
55
112
  * Internal method to call a tool with retry logic
56
113
  */
@@ -134,4 +191,5 @@ export declare class MCPClient<TPlugins extends readonly MCPPlugin[] = readonly
134
191
  * ```
135
192
  */
136
193
  export declare function createMCPClient<TPlugins extends readonly MCPPlugin[]>(config: MCPClientConfig<TPlugins>): MCPClient<TPlugins>;
194
+ export {};
137
195
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,OAAO,EAEP,mBAAmB,EAIpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,SAAS,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,GAAG,SAAS,SAAS,EAAE;IACjF,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,gBAAgB,CAAC,CAAgB;IACzC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAuF;gBAE5F,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;IA+B7C;;OAEG;YACW,iBAAiB;IAQ/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB9B;;OAEG;YACW,UAAU;IAkBxB;;OAEG;YACW,aAAa;IAoB3B;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;OAEG;YACW,iBAAiB;IA4E/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI1C;;OAEG;IACH,iBAAiB,IAAI,OAAO,EAAE;IAI9B;;OAEG;IACH,eAAe,IAAI,OAAO,EAAE;IAM5B;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKzD;;OAEG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAU9C;;OAEG;IACH,SAAS,CACP,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAClC,MAAM,IAAI;IAIb;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,mBAAmB,CAAA;KAAE,GAAG,SAAS;IAIvG;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIlD;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA2BzD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,EACnE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAChC,SAAS,CAAC,QAAQ,CAAC,CAErB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,9 +8,10 @@ export type { MCPClientConfig, ReauthContext, ReauthHandler } from "./config/typ
8
8
  export { IntegrateSDKError, AuthenticationError, AuthorizationError, TokenExpiredError, ConnectionError, ToolCallError, isAuthError, isTokenExpiredError, isAuthorizationError, parseServerError, } from "./errors.js";
9
9
  export type { MCPPlugin, OAuthConfig, ExtractPluginIds, ExtractPluginTools, } from "./plugins/types.js";
10
10
  export { githubPlugin } from "./plugins/github.js";
11
- export type { GitHubPluginConfig, GitHubTools } from "./plugins/github.js";
11
+ export type { GitHubPluginConfig, GitHubTools, GitHubPluginClient } from "./plugins/github.js";
12
12
  export { gmailPlugin } from "./plugins/gmail.js";
13
- export type { GmailPluginConfig, GmailTools } from "./plugins/gmail.js";
13
+ export type { GmailPluginConfig, GmailTools, GmailPluginClient } from "./plugins/gmail.js";
14
+ export type { ServerPluginClient } from "./plugins/server-client.js";
14
15
  export { genericOAuthPlugin, createSimplePlugin, } from "./plugins/generic.js";
15
16
  export type { GenericOAuthPluginConfig } from "./plugins/generic.js";
16
17
  export { convertMCPToolToVercelAI, convertMCPToolsToVercelAI, getVercelAITools, } from "./integrations/vercel-ai.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,cAAc,EACd,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,cAAc,EACd,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -351,6 +351,17 @@ var MCPMethod;
351
351
 
352
352
  // src/client.ts
353
353
  init_errors();
354
+
355
+ // src/utils/naming.ts
356
+ function camelToSnake(str) {
357
+ return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
358
+ }
359
+ function methodToToolName(methodName, pluginId) {
360
+ const snakeCaseMethod = camelToSnake(methodName);
361
+ return `${pluginId}_${snakeCaseMethod}`;
362
+ }
363
+
364
+ // src/client.ts
354
365
  var MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp";
355
366
 
356
367
  class MCPClient {
@@ -363,6 +374,9 @@ class MCPClient {
363
374
  onReauthRequired;
364
375
  maxReauthRetries;
365
376
  authState = new Map;
377
+ github;
378
+ gmail;
379
+ server;
366
380
  constructor(config) {
367
381
  this.transport = new HttpSessionTransport({
368
382
  url: MCP_SERVER_URL,
@@ -384,8 +398,51 @@ class MCPClient {
384
398
  this.authState.set(plugin.oauth.provider, { authenticated: true });
385
399
  }
386
400
  }
401
+ this.github = this.createPluginProxy("github");
402
+ this.gmail = this.createPluginProxy("gmail");
403
+ this.server = this.createServerProxy();
387
404
  this.initializePlugins();
388
405
  }
406
+ createPluginProxy(pluginId) {
407
+ return new Proxy({}, {
408
+ get: (_target, methodName) => {
409
+ return async (args) => {
410
+ const toolName = methodToToolName(methodName, pluginId);
411
+ return await this.callToolWithRetry(toolName, args, 0);
412
+ };
413
+ }
414
+ });
415
+ }
416
+ createServerProxy() {
417
+ return new Proxy({}, {
418
+ get: (_target, methodName) => {
419
+ return async (args) => {
420
+ const toolName = methodToToolName(methodName, "");
421
+ const finalToolName = toolName.startsWith("_") ? toolName.substring(1) : toolName;
422
+ return await this.callServerToolInternal(finalToolName, args);
423
+ };
424
+ }
425
+ });
426
+ }
427
+ async callServerToolInternal(name, args) {
428
+ if (!this.initialized) {
429
+ throw new Error("Client not initialized. Call connect() first.");
430
+ }
431
+ if (!this.availableTools.has(name)) {
432
+ throw new Error(`Tool "${name}" is not available on the server. Available tools: ${Array.from(this.availableTools.keys()).join(", ")}`);
433
+ }
434
+ const params = {
435
+ name,
436
+ arguments: args
437
+ };
438
+ try {
439
+ const response = await this.transport.sendRequest("tools/call" /* TOOLS_CALL */, params);
440
+ return response;
441
+ } catch (error) {
442
+ const parsedError = parseServerError(error, { toolName: name });
443
+ throw parsedError;
444
+ }
445
+ }
389
446
  async initializePlugins() {
390
447
  for (const plugin of this.plugins) {
391
448
  if (plugin.onInit) {
@@ -428,9 +485,28 @@ class MCPClient {
428
485
  const enabledTools = response.tools.filter((tool) => this.enabledToolNames.has(tool.name));
429
486
  console.log(`Discovered ${response.tools.length} tools, ${enabledTools.length} enabled by plugins`);
430
487
  }
431
- async callTool(name, args) {
488
+ async _callToolByName(name, args) {
432
489
  return await this.callToolWithRetry(name, args, 0);
433
490
  }
491
+ async callServerTool(name, args) {
492
+ if (!this.initialized) {
493
+ throw new Error("Client not initialized. Call connect() first.");
494
+ }
495
+ if (!this.availableTools.has(name)) {
496
+ throw new Error(`Tool "${name}" is not available on the server. Available tools: ${Array.from(this.availableTools.keys()).join(", ")}`);
497
+ }
498
+ const params = {
499
+ name,
500
+ arguments: args
501
+ };
502
+ try {
503
+ const response = await this.transport.sendRequest("tools/call" /* TOOLS_CALL */, params);
504
+ return response;
505
+ } catch (error) {
506
+ const parsedError = parseServerError(error, { toolName: name });
507
+ throw parsedError;
508
+ }
509
+ }
434
510
  async callToolWithRetry(name, args, retryCount = 0) {
435
511
  if (!this.initialized) {
436
512
  throw new Error("Client not initialized. Call connect() first.");
@@ -603,22 +679,10 @@ function githubPlugin(config) {
603
679
  }
604
680
  // src/plugins/gmail.ts
605
681
  var GMAIL_TOOLS = [
606
- "gmail_send_email",
607
- "gmail_list_emails",
608
- "gmail_get_email",
609
- "gmail_delete_email",
610
- "gmail_search_emails",
611
- "gmail_mark_as_read",
612
- "gmail_mark_as_unread",
613
- "gmail_add_label",
614
- "gmail_remove_label",
615
- "gmail_list_labels",
616
- "gmail_create_label",
617
- "gmail_get_draft",
618
- "gmail_create_draft",
619
- "gmail_update_draft",
620
- "gmail_delete_draft",
621
- "gmail_send_draft"
682
+ "gmail_send_message",
683
+ "gmail_list_messages",
684
+ "gmail_get_message",
685
+ "gmail_search_messages"
622
686
  ];
623
687
  function gmailPlugin(config) {
624
688
  const oauth = {
@@ -683,7 +747,7 @@ function convertMCPToolToVercelAI(mcpTool, client) {
683
747
  description: mcpTool.description || `Execute ${mcpTool.name}`,
684
748
  parameters: convertMCPSchemaToParameters(mcpTool.inputSchema),
685
749
  execute: async (args) => {
686
- const result = await client.callTool(mcpTool.name, args);
750
+ const result = await client._callToolByName(mcpTool.name, args);
687
751
  return result;
688
752
  }
689
753
  };
@@ -1 +1 @@
1
- {"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../src/integrations/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D;AAcD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,GAChB,YAAY,CASd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,GAChB,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAS9B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,gCAEjD"}
1
+ {"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../src/integrations/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D;AAcD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,GAChB,YAAY,CAUd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,GAChB,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAS9B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,gCAEjD"}
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * Generic OAuth Plugin
3
- * Template for creating custom OAuth provider plugins
3
+ * Configure OAuth and enable tools for any integration supported by the server
4
4
  */
5
5
  import type { MCPPlugin } from "./types.js";
6
6
  /**
7
7
  * Generic OAuth plugin configuration
8
8
  */
9
9
  export interface GenericOAuthPluginConfig {
10
- /** Plugin unique identifier */
10
+ /** Plugin unique identifier (must match the integration ID on the server) */
11
11
  id: string;
12
12
  /** OAuth provider name */
13
13
  provider: string;
@@ -17,7 +17,7 @@ export interface GenericOAuthPluginConfig {
17
17
  clientSecret: string;
18
18
  /** OAuth scopes */
19
19
  scopes: string[];
20
- /** Tool names to enable */
20
+ /** Tool names to enable from the server (must exist on the server) */
21
21
  tools: string[];
22
22
  /** OAuth redirect URI */
23
23
  redirectUri?: string;
@@ -33,10 +33,13 @@ export interface GenericOAuthPluginConfig {
33
33
  /**
34
34
  * Generic OAuth Plugin
35
35
  *
36
- * Use this to create custom plugins for any OAuth provider
36
+ * Configure OAuth and enable tools for any integration supported by the Integrate MCP server.
37
+ * Note: This does NOT create new tools - it only configures access to existing server-side tools.
38
+ * All tools must be implemented on the server and exposed via the MCP protocol.
37
39
  *
38
40
  * @example
39
41
  * ```typescript
42
+ * // Configure Slack integration (assuming server supports Slack tools)
40
43
  * const slackPlugin = genericOAuthPlugin({
41
44
  * id: 'slack',
42
45
  * provider: 'slack',
@@ -44,28 +47,32 @@ export interface GenericOAuthPluginConfig {
44
47
  * clientSecret: process.env.SLACK_CLIENT_SECRET!,
45
48
  * scopes: ['chat:write', 'channels:read'],
46
49
  * tools: [
47
- * 'slack/sendMessage',
48
- * 'slack/listChannels',
49
- * 'slack/getChannel',
50
+ * 'slack_send_message', // Must exist on server
51
+ * 'slack_list_channels', // Must exist on server
50
52
  * ],
51
53
  * });
52
54
  *
53
55
  * const client = createMCPClient({
54
- * serverUrl: 'http://localhost:3000/mcp',
55
56
  * plugins: [slackPlugin],
56
57
  * });
58
+ *
59
+ * await client.connect();
60
+ * // Call server tools using _callToolByName
61
+ * await client._callToolByName('slack_send_message', { channel: '#general', text: 'Hello' });
57
62
  * ```
58
63
  */
59
64
  export declare function genericOAuthPlugin(config: GenericOAuthPluginConfig): MCPPlugin;
60
65
  /**
61
66
  * Create a simple plugin without OAuth
62
- * Useful for plugins that just enable certain tools without authentication
67
+ * Enable server-provided tools that don't require authentication
68
+ * Note: Tools must exist on the server - this does not create new tools
63
69
  *
64
70
  * @example
65
71
  * ```typescript
72
+ * // Enable server-provided math tools (if they exist on the server)
66
73
  * const mathPlugin = createSimplePlugin({
67
74
  * id: 'math',
68
- * tools: ['math/add', 'math/subtract', 'math/multiply', 'math/divide'],
75
+ * tools: ['math_add', 'math_subtract', 'math_multiply', 'math_divide'],
69
76
  * });
70
77
  * ```
71
78
  */
@@ -1 +1 @@
1
- {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../src/plugins/generic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,uCAAuC;IACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,sCAAsC;IACtC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,mCAAmC;IACnC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,wBAAwB,GAC/B,SAAS,CAmBX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD,GAAG,SAAS,CAQZ"}
1
+ {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../src/plugins/generic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,uCAAuC;IACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,sCAAsC;IACtC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,mCAAmC;IACnC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,wBAAwB,GAC/B,SAAS,CAmBX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtD,GAAG,SAAS,CAQZ"}
@@ -0,0 +1,320 @@
1
+ /**
2
+ * GitHub Plugin Client Types
3
+ * Fully typed interface for GitHub plugin methods
4
+ */
5
+ import type { MCPToolCallResponse } from "../protocol/messages.js";
6
+ /**
7
+ * GitHub Issue
8
+ */
9
+ export interface GitHubIssue {
10
+ number: number;
11
+ title: string;
12
+ body?: string;
13
+ state: "open" | "closed";
14
+ html_url: string;
15
+ user?: {
16
+ login: string;
17
+ avatar_url: string;
18
+ };
19
+ created_at: string;
20
+ updated_at: string;
21
+ closed_at?: string;
22
+ labels?: Array<{
23
+ name: string;
24
+ color: string;
25
+ }>;
26
+ }
27
+ /**
28
+ * GitHub Pull Request
29
+ */
30
+ export interface GitHubPullRequest {
31
+ number: number;
32
+ title: string;
33
+ body?: string;
34
+ state: "open" | "closed" | "merged";
35
+ html_url: string;
36
+ user?: {
37
+ login: string;
38
+ avatar_url: string;
39
+ };
40
+ created_at: string;
41
+ updated_at: string;
42
+ merged_at?: string;
43
+ head: {
44
+ ref: string;
45
+ sha: string;
46
+ };
47
+ base: {
48
+ ref: string;
49
+ sha: string;
50
+ };
51
+ }
52
+ /**
53
+ * GitHub Repository
54
+ */
55
+ export interface GitHubRepository {
56
+ id: number;
57
+ name: string;
58
+ full_name: string;
59
+ description?: string;
60
+ html_url: string;
61
+ private: boolean;
62
+ owner: {
63
+ login: string;
64
+ avatar_url: string;
65
+ };
66
+ created_at: string;
67
+ updated_at: string;
68
+ pushed_at: string;
69
+ stargazers_count: number;
70
+ watchers_count: number;
71
+ forks_count: number;
72
+ language?: string;
73
+ default_branch: string;
74
+ }
75
+ /**
76
+ * GitHub Branch
77
+ */
78
+ export interface GitHubBranch {
79
+ name: string;
80
+ commit: {
81
+ sha: string;
82
+ url: string;
83
+ };
84
+ protected: boolean;
85
+ }
86
+ /**
87
+ * GitHub User
88
+ */
89
+ export interface GitHubUser {
90
+ login: string;
91
+ id: number;
92
+ avatar_url: string;
93
+ html_url: string;
94
+ name?: string;
95
+ email?: string;
96
+ bio?: string;
97
+ public_repos: number;
98
+ followers: number;
99
+ following: number;
100
+ created_at: string;
101
+ }
102
+ /**
103
+ * GitHub Commit
104
+ */
105
+ export interface GitHubCommit {
106
+ sha: string;
107
+ commit: {
108
+ message: string;
109
+ author: {
110
+ name: string;
111
+ email: string;
112
+ date: string;
113
+ };
114
+ committer: {
115
+ name: string;
116
+ email: string;
117
+ date: string;
118
+ };
119
+ };
120
+ html_url: string;
121
+ author?: {
122
+ login: string;
123
+ avatar_url: string;
124
+ };
125
+ committer?: {
126
+ login: string;
127
+ avatar_url: string;
128
+ };
129
+ }
130
+ /**
131
+ * GitHub Plugin Client Interface
132
+ * Provides type-safe methods for all GitHub operations
133
+ */
134
+ export interface GitHubPluginClient {
135
+ /**
136
+ * Create a new issue in a repository
137
+ */
138
+ createIssue(params: {
139
+ owner: string;
140
+ repo: string;
141
+ title: string;
142
+ body?: string;
143
+ labels?: string[];
144
+ assignees?: string[];
145
+ }): Promise<MCPToolCallResponse>;
146
+ /**
147
+ * List issues in a repository
148
+ */
149
+ listIssues(params: {
150
+ owner: string;
151
+ repo: string;
152
+ state?: "open" | "closed" | "all";
153
+ labels?: string[];
154
+ sort?: "created" | "updated" | "comments";
155
+ direction?: "asc" | "desc";
156
+ per_page?: number;
157
+ page?: number;
158
+ }): Promise<MCPToolCallResponse>;
159
+ /**
160
+ * Get a specific issue
161
+ */
162
+ getIssue(params: {
163
+ owner: string;
164
+ repo: string;
165
+ issue_number: number;
166
+ }): Promise<MCPToolCallResponse>;
167
+ /**
168
+ * Update an existing issue
169
+ */
170
+ updateIssue(params: {
171
+ owner: string;
172
+ repo: string;
173
+ issue_number: number;
174
+ title?: string;
175
+ body?: string;
176
+ state?: "open" | "closed";
177
+ labels?: string[];
178
+ assignees?: string[];
179
+ }): Promise<MCPToolCallResponse>;
180
+ /**
181
+ * Close an issue
182
+ */
183
+ closeIssue(params: {
184
+ owner: string;
185
+ repo: string;
186
+ issue_number: number;
187
+ }): Promise<MCPToolCallResponse>;
188
+ /**
189
+ * Create a pull request
190
+ */
191
+ createPullRequest(params: {
192
+ owner: string;
193
+ repo: string;
194
+ title: string;
195
+ head: string;
196
+ base: string;
197
+ body?: string;
198
+ draft?: boolean;
199
+ }): Promise<MCPToolCallResponse>;
200
+ /**
201
+ * List pull requests in a repository
202
+ */
203
+ listPullRequests(params: {
204
+ owner: string;
205
+ repo: string;
206
+ state?: "open" | "closed" | "all";
207
+ sort?: "created" | "updated" | "popularity" | "long-running";
208
+ direction?: "asc" | "desc";
209
+ per_page?: number;
210
+ page?: number;
211
+ }): Promise<MCPToolCallResponse>;
212
+ /**
213
+ * Get a specific pull request
214
+ */
215
+ getPullRequest(params: {
216
+ owner: string;
217
+ repo: string;
218
+ pull_number: number;
219
+ }): Promise<MCPToolCallResponse>;
220
+ /**
221
+ * Merge a pull request
222
+ */
223
+ mergePullRequest(params: {
224
+ owner: string;
225
+ repo: string;
226
+ pull_number: number;
227
+ commit_title?: string;
228
+ commit_message?: string;
229
+ merge_method?: "merge" | "squash" | "rebase";
230
+ }): Promise<MCPToolCallResponse>;
231
+ /**
232
+ * List repositories (for a user or organization)
233
+ */
234
+ listRepos(params: {
235
+ owner: string;
236
+ type?: "all" | "owner" | "member";
237
+ sort?: "created" | "updated" | "pushed" | "full_name";
238
+ direction?: "asc" | "desc";
239
+ per_page?: number;
240
+ page?: number;
241
+ }): Promise<MCPToolCallResponse>;
242
+ /**
243
+ * List repositories for the authenticated user
244
+ */
245
+ listOwnRepos(params?: {
246
+ visibility?: "all" | "public" | "private";
247
+ affiliation?: string;
248
+ type?: "all" | "owner" | "public" | "private" | "member";
249
+ sort?: "created" | "updated" | "pushed" | "full_name";
250
+ direction?: "asc" | "desc";
251
+ per_page?: number;
252
+ page?: number;
253
+ }): Promise<MCPToolCallResponse>;
254
+ /**
255
+ * Get a specific repository
256
+ */
257
+ getRepo(params: {
258
+ owner: string;
259
+ repo: string;
260
+ }): Promise<MCPToolCallResponse>;
261
+ /**
262
+ * Create a new repository
263
+ */
264
+ createRepo(params: {
265
+ name: string;
266
+ description?: string;
267
+ private?: boolean;
268
+ auto_init?: boolean;
269
+ gitignore_template?: string;
270
+ license_template?: string;
271
+ }): Promise<MCPToolCallResponse>;
272
+ /**
273
+ * List branches in a repository
274
+ */
275
+ listBranches(params: {
276
+ owner: string;
277
+ repo: string;
278
+ protected?: boolean;
279
+ per_page?: number;
280
+ page?: number;
281
+ }): Promise<MCPToolCallResponse>;
282
+ /**
283
+ * Create a new branch
284
+ */
285
+ createBranch(params: {
286
+ owner: string;
287
+ repo: string;
288
+ branch: string;
289
+ from_branch?: string;
290
+ }): Promise<MCPToolCallResponse>;
291
+ /**
292
+ * Get information about a user
293
+ */
294
+ getUser(params: {
295
+ username: string;
296
+ }): Promise<MCPToolCallResponse>;
297
+ /**
298
+ * List commits in a repository
299
+ */
300
+ listCommits(params: {
301
+ owner: string;
302
+ repo: string;
303
+ sha?: string;
304
+ path?: string;
305
+ author?: string;
306
+ since?: string;
307
+ until?: string;
308
+ per_page?: number;
309
+ page?: number;
310
+ }): Promise<MCPToolCallResponse>;
311
+ /**
312
+ * Get a specific commit
313
+ */
314
+ getCommit(params: {
315
+ owner: string;
316
+ repo: string;
317
+ ref: string;
318
+ }): Promise<MCPToolCallResponse>;
319
+ }
320
+ //# sourceMappingURL=github-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-client.d.ts","sourceRoot":"","sources":["../../src/plugins/github-client.ts"],"names":[],"mappings":"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"}
@@ -47,5 +47,8 @@ export declare function githubPlugin(config: GitHubPluginConfig): MCPPlugin;
47
47
  * Export tool names for type inference
48
48
  */
49
49
  export type GitHubTools = typeof GITHUB_TOOLS[number];
50
- export {};
50
+ /**
51
+ * Export GitHub client types
52
+ */
53
+ export type { GitHubPluginClient } from "./github-client.js";
51
54
  //# sourceMappingURL=github.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/plugins/github.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,QAAA,MAAM,YAAY,kbAmBR,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CA0BlE;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/plugins/github.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,QAAA,MAAM,YAAY,kbAmBR,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CA0BlE;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAEtD;;GAEG;AACH,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Gmail Plugin Client Types
3
+ * Fully typed interface for Gmail plugin methods
4
+ */
5
+ import type { MCPToolCallResponse } from "../protocol/messages.js";
6
+ /**
7
+ * Gmail Email Message
8
+ */
9
+ export interface GmailMessage {
10
+ id: string;
11
+ threadId: string;
12
+ labelIds?: string[];
13
+ snippet?: string;
14
+ payload?: {
15
+ headers?: Array<{
16
+ name: string;
17
+ value: string;
18
+ }>;
19
+ body?: {
20
+ data?: string;
21
+ size?: number;
22
+ };
23
+ parts?: Array<{
24
+ mimeType?: string;
25
+ body?: {
26
+ data?: string;
27
+ size?: number;
28
+ };
29
+ }>;
30
+ };
31
+ sizeEstimate?: number;
32
+ historyId?: string;
33
+ internalDate?: string;
34
+ }
35
+ /**
36
+ * Gmail Label
37
+ */
38
+ export interface GmailLabel {
39
+ id: string;
40
+ name: string;
41
+ type?: "system" | "user";
42
+ messageListVisibility?: "show" | "hide";
43
+ labelListVisibility?: "labelShow" | "labelShowIfUnread" | "labelHide";
44
+ color?: {
45
+ textColor?: string;
46
+ backgroundColor?: string;
47
+ };
48
+ }
49
+ /**
50
+ * Gmail Draft
51
+ */
52
+ export interface GmailDraft {
53
+ id: string;
54
+ message: GmailMessage;
55
+ }
56
+ /**
57
+ * Gmail Plugin Client Interface
58
+ * Provides type-safe methods for all Gmail operations
59
+ */
60
+ export interface GmailPluginClient {
61
+ /**
62
+ * Send a message
63
+ */
64
+ sendMessage(params: {
65
+ to: string | string[];
66
+ subject: string;
67
+ body: string;
68
+ cc?: string | string[];
69
+ bcc?: string | string[];
70
+ from?: string;
71
+ replyTo?: string;
72
+ html?: boolean;
73
+ attachments?: Array<{
74
+ filename: string;
75
+ content: string;
76
+ encoding?: string;
77
+ }>;
78
+ }): Promise<MCPToolCallResponse>;
79
+ /**
80
+ * List messages in the mailbox
81
+ */
82
+ listMessages(params?: {
83
+ maxResults?: number;
84
+ pageToken?: string;
85
+ q?: string;
86
+ labelIds?: string[];
87
+ includeSpamTrash?: boolean;
88
+ }): Promise<MCPToolCallResponse>;
89
+ /**
90
+ * Get a specific message by ID
91
+ */
92
+ getMessage(params: {
93
+ id: string;
94
+ format?: "minimal" | "full" | "raw" | "metadata";
95
+ }): Promise<MCPToolCallResponse>;
96
+ /**
97
+ * Search messages with query
98
+ */
99
+ searchMessages(params: {
100
+ query: string;
101
+ maxResults?: number;
102
+ pageToken?: string;
103
+ includeSpamTrash?: boolean;
104
+ }): Promise<MCPToolCallResponse>;
105
+ }
106
+ //# sourceMappingURL=gmail-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail-client.d.ts","sourceRoot":"","sources":["../../src/plugins/gmail-client.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export interface GmailPluginConfig {
20
20
  * Default Gmail tools that this plugin enables
21
21
  * These should match the tool names exposed by your MCP server
22
22
  */
23
- declare const GMAIL_TOOLS: readonly ["gmail_send_email", "gmail_list_emails", "gmail_get_email", "gmail_delete_email", "gmail_search_emails", "gmail_mark_as_read", "gmail_mark_as_unread", "gmail_add_label", "gmail_remove_label", "gmail_list_labels", "gmail_create_label", "gmail_get_draft", "gmail_create_draft", "gmail_update_draft", "gmail_delete_draft", "gmail_send_draft"];
23
+ declare const GMAIL_TOOLS: readonly ["gmail_send_message", "gmail_list_messages", "gmail_get_message", "gmail_search_messages"];
24
24
  /**
25
25
  * Gmail Plugin
26
26
  *
@@ -44,5 +44,8 @@ export declare function gmailPlugin(config: GmailPluginConfig): MCPPlugin;
44
44
  * Export tool names for type inference
45
45
  */
46
46
  export type GmailTools = typeof GMAIL_TOOLS[number];
47
- export {};
47
+ /**
48
+ * Export Gmail client types
49
+ */
50
+ export type { GmailPluginClient } from "./gmail-client.js";
48
51
  //# sourceMappingURL=gmail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../src/plugins/gmail.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,QAAA,MAAM,WAAW,+VAiBP,CAAC;AAEX;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CA4BhE;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../src/plugins/gmail.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,QAAA,MAAM,WAAW,sGAKP,CAAC;AAEX;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CA4BhE;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAEpD;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Server Plugin Client Types
3
+ * Fully typed interface for server-level tools that don't belong to a specific plugin
4
+ */
5
+ import type { MCPToolCallResponse } from "../protocol/messages.js";
6
+ /**
7
+ * Server Plugin Client Interface
8
+ * Provides type-safe methods for server-level operations
9
+ */
10
+ export interface ServerPluginClient {
11
+ /**
12
+ * List all tools available for a specific integration
13
+ */
14
+ listToolsByIntegration(params: {
15
+ integration: string;
16
+ }): Promise<MCPToolCallResponse>;
17
+ }
18
+ //# sourceMappingURL=server-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-client.d.ts","sourceRoot":"","sources":["../../src/plugins/server-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAClC"}
@@ -33,13 +33,13 @@ export interface MCPPlugin {
33
33
  /** OAuth configuration for this plugin */
34
34
  oauth?: OAuthConfig;
35
35
  /** Called when the plugin is initialized with the client */
36
- onInit?: (client: MCPClient) => Promise<void> | void;
36
+ onInit?: (client: MCPClient<any>) => Promise<void> | void;
37
37
  /** Called before the client connects to the server */
38
- onBeforeConnect?: (client: MCPClient) => Promise<void> | void;
38
+ onBeforeConnect?: (client: MCPClient<any>) => Promise<void> | void;
39
39
  /** Called after the client successfully connects */
40
- onAfterConnect?: (client: MCPClient) => Promise<void> | void;
40
+ onAfterConnect?: (client: MCPClient<any>) => Promise<void> | void;
41
41
  /** Called when the client disconnects */
42
- onDisconnect?: (client: MCPClient) => Promise<void> | void;
42
+ onDisconnect?: (client: MCPClient<any>) => Promise<void> | void;
43
43
  }
44
44
  /**
45
45
  * Helper type to extract plugin IDs from an array of plugins
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,6CAA6C;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAErD,sDAAsD;IACtD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE9D,oDAAoD;IACpD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE7D,yCAAyC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5F;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,GAChB,MAAM,IAAI,SAAS,GAAG;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAE9C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,6CAA6C;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1D,sDAAsD;IACtD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEnE,oDAAoD;IACpD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAElE,yCAAyC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5F;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,GAChB,MAAM,IAAI,SAAS,GAAG;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAE9C"}
@@ -81,6 +81,7 @@ export interface MCPToolCallResponse {
81
81
  [key: string]: unknown;
82
82
  }>;
83
83
  isError?: boolean;
84
+ structuredContent?: Record<string, unknown>;
84
85
  _meta?: Record<string, unknown>;
85
86
  }
86
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/protocol/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/protocol/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Naming conversion utilities
3
+ * Helpers for converting between camelCase and snake_case
4
+ */
5
+ /**
6
+ * Convert camelCase to snake_case
7
+ *
8
+ * @example
9
+ * camelToSnake('getRepo') // 'get_repo'
10
+ * camelToSnake('listOwnRepos') // 'list_own_repos'
11
+ */
12
+ export declare function camelToSnake(str: string): string;
13
+ /**
14
+ * Convert snake_case to camelCase
15
+ *
16
+ * @example
17
+ * snakeToCamel('get_repo') // 'getRepo'
18
+ * snakeToCamel('list_own_repos') // 'listOwnRepos'
19
+ */
20
+ export declare function snakeToCamel(str: string): string;
21
+ /**
22
+ * Convert a method name to a full tool name with plugin prefix
23
+ *
24
+ * @example
25
+ * methodToToolName('getRepo', 'github') // 'github_get_repo'
26
+ * methodToToolName('sendEmail', 'gmail') // 'gmail_send_email'
27
+ */
28
+ export declare function methodToToolName(methodName: string, pluginId: string): string;
29
+ /**
30
+ * Convert a tool name to a method name (removes plugin prefix and converts to camelCase)
31
+ *
32
+ * @example
33
+ * toolNameToMethod('github_get_repo') // 'getRepo'
34
+ * toolNameToMethod('gmail_send_email') // 'sendEmail'
35
+ */
36
+ export declare function toolNameToMethod(toolName: string): string;
37
+ //# sourceMappingURL=naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG7E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIzD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "integrate-sdk",
3
- "version": "0.1.7",
3
+ "version": "0.2.1",
4
4
  "description": "Type-safe TypeScript SDK for MCP Client with plugin-based OAuth provider configuration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -32,7 +32,8 @@
32
32
  "test:watch": "bun test --watch tests/protocol tests/plugins tests/client tests/integrations tests/integration/simple-integration.test.ts",
33
33
  "test:unit": "bun test tests/protocol tests/plugins tests/client tests/integrations",
34
34
  "test:integration": "bun test tests/integration/simple-integration.test.ts",
35
- "test:coverage": "bun test --coverage tests/protocol tests/plugins tests/client tests/integrations tests/integration/simple-integration.test.ts"
35
+ "test:coverage": "bun test --coverage tests/protocol tests/plugins tests/client tests/integrations tests/integration/simple-integration.test.ts",
36
+ "prepare": "simple-git-hooks"
36
37
  },
37
38
  "keywords": [
38
39
  "mcp",
@@ -46,9 +47,13 @@
46
47
  "license": "MIT",
47
48
  "devDependencies": {
48
49
  "@types/bun": "latest",
50
+ "simple-git-hooks": "^2.13.1",
49
51
  "typescript": "^5.3.3"
50
52
  },
51
53
  "peerDependencies": {
52
54
  "typescript": ">=5.0.0"
55
+ },
56
+ "simple-git-hooks": {
57
+ "pre-commit": "./scripts/check-version.sh"
53
58
  }
54
59
  }