attio-mcp 1.3.0 → 1.3.5
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/CHANGELOG.md +31 -0
- package/dist/server/createServer.d.ts +17 -0
- package/dist/server/createServer.d.ts.map +1 -1
- package/dist/smithery.d.ts +17 -0
- package/dist/smithery.d.ts.map +1 -1
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
19
19
|
|
|
20
20
|
### Deprecated
|
|
21
21
|
|
|
22
|
+
## [1.3.5] - 2025-12-02
|
|
23
|
+
|
|
24
|
+
**Self-host your own remote MCP server** - Use Attio from Claude.ai, ChatGPT, or any remote MCP client without relying on third-party platforms.
|
|
25
|
+
|
|
26
|
+
This release addresses [Issue #928](https://github.com/kesslerio/attio-mcp-server/issues/928) by providing a **free, self-hosted alternative to Smithery** for remote OAuth MCP deployment. Deploy once to Cloudflare Workers (free tier) and access your Attio data from anywhere.
|
|
27
|
+
|
|
28
|
+
### Why This Matters
|
|
29
|
+
|
|
30
|
+
- **No third-party dependencies** - Your credentials stay on infrastructure you control
|
|
31
|
+
- **Works with any remote MCP client** - Claude.ai, ChatGPT, custom integrations
|
|
32
|
+
- **Completely free** - Cloudflare Workers free tier is more than sufficient
|
|
33
|
+
- **Global edge deployment** - Low latency from anywhere in the world
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- **Self-hosted Remote MCP Server** ([docs](https://github.com/kesslerio/attio-mcp-server/tree/main/examples/cloudflare-mcp-server))
|
|
38
|
+
- Full MCP protocol over HTTP - all 40+ Attio tools work remotely
|
|
39
|
+
- OAuth 2.1 with PKCE for secure authentication
|
|
40
|
+
- Encrypted token storage in Cloudflare Workers KV
|
|
41
|
+
- Dynamic client registration for Claude.ai and ChatGPT
|
|
42
|
+
- One-time deploy, works forever
|
|
43
|
+
|
|
44
|
+
- **`@attio-mcp/core` package** - Edge-compatible core library for custom deployments
|
|
45
|
+
|
|
46
|
+
### Security
|
|
47
|
+
|
|
48
|
+
- **OAuth security hardening**
|
|
49
|
+
- Exact hostname validation prevents redirect attacks
|
|
50
|
+
- One-time authorization codes (deleted after use)
|
|
51
|
+
- Session token separation from auth codes
|
|
52
|
+
|
|
22
53
|
## [1.3.0] - 2025-12-02
|
|
23
54
|
|
|
24
55
|
OAuth access token support - enables delegated authentication for third-party integrations and Claude Desktop users who prefer OAuth over API keys.
|
|
@@ -42,9 +42,18 @@ export declare function createServer(context?: ServerContext): Server<{
|
|
|
42
42
|
method: string;
|
|
43
43
|
params?: {
|
|
44
44
|
[x: string]: unknown;
|
|
45
|
+
task?: {
|
|
46
|
+
[x: string]: unknown;
|
|
47
|
+
ttl?: number | null | undefined;
|
|
48
|
+
pollInterval?: number | undefined;
|
|
49
|
+
} | undefined;
|
|
45
50
|
_meta?: {
|
|
46
51
|
[x: string]: unknown;
|
|
47
52
|
progressToken?: string | number | undefined;
|
|
53
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
54
|
+
[x: string]: unknown;
|
|
55
|
+
taskId: string;
|
|
56
|
+
} | undefined;
|
|
48
57
|
} | undefined;
|
|
49
58
|
} | undefined;
|
|
50
59
|
}, {
|
|
@@ -53,12 +62,20 @@ export declare function createServer(context?: ServerContext): Server<{
|
|
|
53
62
|
[x: string]: unknown;
|
|
54
63
|
_meta?: {
|
|
55
64
|
[x: string]: unknown;
|
|
65
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
66
|
+
[x: string]: unknown;
|
|
67
|
+
taskId: string;
|
|
68
|
+
} | undefined;
|
|
56
69
|
} | undefined;
|
|
57
70
|
} | undefined;
|
|
58
71
|
}, {
|
|
59
72
|
[x: string]: unknown;
|
|
60
73
|
_meta?: {
|
|
61
74
|
[x: string]: unknown;
|
|
75
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
76
|
+
[x: string]: unknown;
|
|
77
|
+
taskId: string;
|
|
78
|
+
} | undefined;
|
|
62
79
|
} | undefined;
|
|
63
80
|
}>;
|
|
64
81
|
//# sourceMappingURL=createServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../src/server/createServer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAYvB,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa
|
|
1
|
+
{"version":3,"file":"createServer.d.ts","sourceRoot":"","sources":["../../src/server/createServer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAYvB,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EnD"}
|
package/dist/smithery.d.ts
CHANGED
|
@@ -40,9 +40,18 @@ export default function createServer({ config, }: {
|
|
|
40
40
|
method: string;
|
|
41
41
|
params?: {
|
|
42
42
|
[x: string]: unknown;
|
|
43
|
+
task?: {
|
|
44
|
+
[x: string]: unknown;
|
|
45
|
+
ttl?: number | null | undefined;
|
|
46
|
+
pollInterval?: number | undefined;
|
|
47
|
+
} | undefined;
|
|
43
48
|
_meta?: {
|
|
44
49
|
[x: string]: unknown;
|
|
45
50
|
progressToken?: string | number | undefined;
|
|
51
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
52
|
+
[x: string]: unknown;
|
|
53
|
+
taskId: string;
|
|
54
|
+
} | undefined;
|
|
46
55
|
} | undefined;
|
|
47
56
|
} | undefined;
|
|
48
57
|
}, {
|
|
@@ -51,12 +60,20 @@ export default function createServer({ config, }: {
|
|
|
51
60
|
[x: string]: unknown;
|
|
52
61
|
_meta?: {
|
|
53
62
|
[x: string]: unknown;
|
|
63
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
64
|
+
[x: string]: unknown;
|
|
65
|
+
taskId: string;
|
|
66
|
+
} | undefined;
|
|
54
67
|
} | undefined;
|
|
55
68
|
} | undefined;
|
|
56
69
|
}, {
|
|
57
70
|
[x: string]: unknown;
|
|
58
71
|
_meta?: {
|
|
59
72
|
[x: string]: unknown;
|
|
73
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
74
|
+
[x: string]: unknown;
|
|
75
|
+
taskId: string;
|
|
76
|
+
} | undefined;
|
|
60
77
|
} | undefined;
|
|
61
78
|
}>;
|
|
62
79
|
//# sourceMappingURL=smithery.d.ts.map
|
package/dist/smithery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smithery.d.ts","sourceRoot":"","sources":["../src/smithery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAmBvB,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACtC
|
|
1
|
+
{"version":3,"file":"smithery.d.ts","sourceRoot":"","sources":["../src/smithery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAmBvB,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFA"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "attio-mcp",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.5",
|
|
4
4
|
"description": "AI-powered access to Attio CRM. Manage contacts, companies, deals, tasks, and notes. Search records, update pipelines, and automate workflows for sales and GTM teams.",
|
|
5
5
|
"mcpName": "io.github.kesslerio/attio-mcp-server",
|
|
6
6
|
"main": "dist/smithery.js",
|
|
7
7
|
"module": "src/smithery.ts",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"access": "public",
|
|
10
|
+
"workspaces": [
|
|
11
|
+
"packages/*"
|
|
12
|
+
],
|
|
10
13
|
"bin": {
|
|
11
14
|
"attio-mcp": "dist/cli.js",
|
|
12
15
|
"attio-discover": "dist/cli/discover.js"
|