griptape-mcp 0.1.0__tar.gz

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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kian Salem
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,323 @@
1
+ Metadata-Version: 2.4
2
+ Name: griptape-mcp
3
+ Version: 0.1.0
4
+ Summary: MCP server providing Griptape Framework & Nodes documentation to LLMs
5
+ Author: Kian
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/KianSalem/griptape-mcp
8
+ Project-URL: Repository, https://github.com/KianSalem/griptape-mcp
9
+ Project-URL: Bug Tracker, https://github.com/KianSalem/griptape-mcp/issues
10
+ Keywords: mcp,model-context-protocol,griptape,llm,documentation,ai,claude
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
+ Classifier: Topic :: Software Development :: Documentation
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: mcp<3,>=1.8.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: httpx[http2]<1,>=0.28.0; extra == "dev"
26
+ Requires-Dist: beautifulsoup4<5,>=4.12.0; extra == "dev"
27
+ Requires-Dist: lxml<6,>=5.0.0; extra == "dev"
28
+ Requires-Dist: defusedxml<1,>=0.7.1; extra == "dev"
29
+ Requires-Dist: pytest<9,>=7.0; extra == "dev"
30
+ Dynamic: license-file
31
+
32
+ <p align="center">
33
+ <h1 align="center">griptape-mcp</h1>
34
+ <p align="center">
35
+ Stop letting your AI guess at Griptape APIs.<br/>
36
+ Give it the actual docs.
37
+ </p>
38
+ </p>
39
+
40
+ <p align="center">
41
+ <a href="https://pypi.org/project/griptape-mcp/"><img src="https://img.shields.io/pypi/v/griptape-mcp?color=blue&logo=pypi&logoColor=white" alt="PyPI"></a>
42
+ <a href="https://pypi.org/project/griptape-mcp/"><img src="https://img.shields.io/pypi/pyversions/griptape-mcp?logo=python&logoColor=white" alt="Python 3.10+"></a>
43
+ <a href="https://github.com/KianSalem/griptape-mcp/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
44
+ <br/>
45
+ <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-8A2BE2" alt="MCP Compatible"></a>
46
+ <img src="https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white" alt="Docker">
47
+ <a href="https://github.com/KianSalem/griptape-mcp/stargazers"><img src="https://img.shields.io/github/stars/KianSalem/griptape-mcp?style=social" alt="GitHub Stars"></a>
48
+ </p>
49
+
50
+ ---
51
+
52
+ Your AI keeps hallucinating Griptape method names. You ask it to build an Agent, it writes confident code that doesn't exist. You paste the error. It apologizes and writes different wrong code.
53
+
54
+ **griptape-mcp** fixes this. It ships the entire Griptape documentation — 84 framework pages, 125 nodes, 714 real code examples — as a pre-built SQLite database your AI can actually search. No hallucinations. No outdated training data. No API keys.
55
+
56
+ > Install it once. Your AI figures out the rest.
57
+
58
+ ### What's inside the box
59
+
60
+ | | |
61
+ |---|---|
62
+ | 📚 **84 framework pages** | Agents, Pipelines, Workflows, Tools, Drivers, Engines, RAG, and more |
63
+ | 🧩 **125 visual nodes** | Every node in Griptape Nodes across 17 categories |
64
+ | 🔍 **Full-text search** | SQLite FTS5 — fast, typo-tolerant, ranked by relevance |
65
+ | 💻 **714 code examples** | Real, working snippets pulled straight from the official docs |
66
+ | 📦 **Ships ready to go** | Pre-built database included. No network calls, no API keys, no scraping at query time. |
67
+
68
+ ---
69
+
70
+ ## What it looks like
71
+
72
+ Once connected, your AI uses the tools automatically. No prompting required.
73
+
74
+ **You:** How do I add conversation memory to an Agent?
75
+
76
+ **Claude:** *(calls `search_docs("conversation memory")`)* Found it. Here's the pattern:
77
+
78
+ ```python
79
+ from griptape.structures import Agent
80
+ from griptape.memory.structure import ConversationMemory
81
+
82
+ agent = Agent(conversation_memory=ConversationMemory())
83
+ ```
84
+
85
+ No guessing. No hallucinated imports. Just the actual docs.
86
+
87
+ ---
88
+
89
+ ## Get running in 60 seconds
90
+
91
+ **Step 1 — Install**
92
+
93
+ ```bash
94
+ pip install griptape-mcp
95
+ ```
96
+
97
+ **Step 2 — Connect your client**
98
+
99
+ <details>
100
+ <summary><b>Claude Desktop</b></summary>
101
+
102
+ Add to your config file:
103
+
104
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
105
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
106
+ - **Linux**: `~/.config/Claude/claude_desktop_config.json`
107
+
108
+ ```json
109
+ {
110
+ "mcpServers": {
111
+ "griptape-docs": {
112
+ "command": "griptape-mcp"
113
+ }
114
+ }
115
+ }
116
+ ```
117
+
118
+ Restart Claude Desktop. Look for the 🔨 icon — that means tools are loaded.
119
+
120
+ </details>
121
+
122
+ <details>
123
+ <summary><b>Claude Code (one command)</b></summary>
124
+
125
+ ```bash
126
+ claude mcp add griptape-docs griptape-mcp
127
+ ```
128
+
129
+ Done. That's genuinely it.
130
+
131
+ Or add manually to your MCP settings:
132
+
133
+ ```json
134
+ {
135
+ "mcpServers": {
136
+ "griptape-docs": {
137
+ "command": "griptape-mcp"
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ </details>
144
+
145
+ <details>
146
+ <summary><b>Docker</b></summary>
147
+
148
+ ```bash
149
+ docker build -t griptape-mcp .
150
+ ```
151
+
152
+ ```json
153
+ {
154
+ "mcpServers": {
155
+ "griptape-docs": {
156
+ "command": "docker",
157
+ "args": ["run", "-i", "--rm", "griptape-mcp"]
158
+ }
159
+ }
160
+ }
161
+ ```
162
+
163
+ </details>
164
+
165
+ **Step 3 — Ask anything**
166
+
167
+ > *"How do I create a Griptape Agent with custom tools?"*
168
+ >
169
+ > *"What's the difference between a Pipeline and a Workflow?"*
170
+ >
171
+ > *"Show me a RAG pipeline example in Griptape"*
172
+ >
173
+ > *"What image processing nodes does Griptape Nodes have?"*
174
+ >
175
+ > *"Find me code examples for conversation memory"*
176
+
177
+ ---
178
+
179
+ ## What your AI can look up
180
+
181
+ Six tools your AI assistant can call, all read-only and fast:
182
+
183
+ | Tool | What it does |
184
+ |------|-------------|
185
+ | `search_docs` | Full-text search across all Griptape documentation. Filter by `"framework"`, `"nodes"`, or `"all"`. |
186
+ | `get_page` | Pull the complete content of any doc page by URL or title. Includes sections and code blocks. |
187
+ | `search_griptape_nodes` | Find nodes by name, description, or category. Returns descriptions and doc links. |
188
+ | `get_node_details` | Deep dive on a single node — full description, config, and code examples. |
189
+ | `list_categories` | Browse what's available: 8 framework sections + 17 node categories with counts. |
190
+ | `get_code_examples` | Search for working code snippets by topic. Great for "show me how to..." questions. |
191
+
192
+ ---
193
+
194
+ ## How it works
195
+
196
+ The architecture is intentionally boring — a SQLite file shipped inside the pip package, opened read-only at query time. No network calls happen during conversations.
197
+
198
+ ```
199
+ ┌──────────────────────────────────────────────────────────┐
200
+ │ At build time │
201
+ │ │
202
+ │ docs.griptape.ai ──┐ │
203
+ │ ├──▶ scraper ──▶ SQLite + FTS5 │
204
+ │ GitHub markdown ────┘ (shipped in package) │
205
+ └──────────────────────────────────────────────────────────┘
206
+
207
+ ┌──────────────────────────────────────────────────────────┐
208
+ │ At query time │
209
+ │ │
210
+ │ Claude / AI ◀──stdio──▶ griptape-mcp ◀──▶ SQLite (ro) │
211
+ │ │
212
+ │ No network calls. No API keys. Just a local subprocess. │
213
+ └──────────────────────────────────────────────────────────┘
214
+ ```
215
+
216
+ 1. **Scrapers** crawl `docs.griptape.ai` (via sitemap) and Griptape Nodes (via GitHub markdown)
217
+ 2. Content gets parsed into structured pieces: titles, headings, code blocks, node metadata
218
+ 3. Everything lands in a **SQLite database** with FTS5 full-text search indexes
219
+ 4. That database **ships inside the pip package** — nothing to fetch at runtime
220
+ 5. The MCP server opens it read-only and exposes 6 search/lookup tools over stdio
221
+ 6. A **nightly GitHub Actions job** re-scrapes and rebuilds to stay current
222
+
223
+ ---
224
+
225
+ ## Node coverage
226
+
227
+ 125 nodes across 17 categories:
228
+
229
+ | Category | Count | | Category | Count |
230
+ |----------|------:|-|----------|------:|
231
+ | Image | 32 | | Lists | 17 |
232
+ | Video | 18 | | Text | 12 |
233
+ | Config | 9 | | Number | 7 |
234
+ | Tools | 7 | | JSON | 5 |
235
+ | Dict | 4 | | Audio | 3 |
236
+ | Execution | 3 | | Rules | 2 |
237
+ | Adv. Media Library | 2 | | Agents | 1 |
238
+ | Convert | 1 | | Utils | 1 |
239
+ | 3D | 1 | | | |
240
+
241
+ ---
242
+
243
+ ## Development
244
+
245
+ ### Setup
246
+
247
+ ```bash
248
+ git clone https://github.com/KianSalem/griptape-mcp.git
249
+ cd griptape-mcp
250
+ pip install -e ".[dev]"
251
+ ```
252
+
253
+ ### Rebuild the docs database
254
+
255
+ ```bash
256
+ cd scripts
257
+ python build_db.py
258
+ ```
259
+
260
+ This scrapes both documentation sources and writes to `src/griptape_mcp/data/griptape.db`. If the website rate-limits you, the build script automatically falls back to scraping GitHub markdown.
261
+
262
+ ### Run against a local database
263
+
264
+ ```bash
265
+ GRIPTAPE_MCP_DB_PATH=./griptape.db griptape-mcp
266
+ ```
267
+
268
+ ### Validate
269
+
270
+ ```bash
271
+ python scripts/validate_db.py src/griptape_mcp/data/griptape.db
272
+ ```
273
+
274
+ ```
275
+ [PASS] Framework pages > 10 - got 84
276
+ [PASS] Nodes pages > 10 - got 164
277
+ [PASS] Nodes extracted > 20 - got 125
278
+ [PASS] Sections > 50 - got 2263
279
+ [PASS] Code examples > 10 - got 714
280
+ [PASS] FTS search works - 'agent' matched 79 pages
281
+ [PASS] Multiple node categories - got 17
282
+ ALL CHECKS PASSED
283
+ ```
284
+
285
+ ### Project structure
286
+
287
+ ```
288
+ griptape-mcp/
289
+ ├── src/griptape_mcp/
290
+ │ ├── server.py ← MCP tools (FastMCP)
291
+ │ ├── db.py ← Schema, queries, FTS
292
+ │ ├── __main__.py ← Entry point
293
+ │ └── data/griptape.db ← Pre-built database (14 MB)
294
+ ├── scripts/
295
+ │ ├── build_db.py ← Orchestrates full rebuild
296
+ │ ├── scrape_framework.py ← Crawls docs.griptape.ai
297
+ │ ├── scrape_nodes.py ← Crawls docs.griptapenodes.com
298
+ │ ├── scrape_nodes_github.py ← GitHub fallback scraper
299
+ │ └── validate_db.py ← Post-build validation
300
+ ├── .github/workflows/
301
+ │ ├── rebuild-db.yml ← Nightly CI rebuild
302
+ │ └── publish.yml ← PyPI publish on release
303
+ ├── Dockerfile
304
+ └── pyproject.toml
305
+ ```
306
+
307
+ ---
308
+
309
+ ## Contributing
310
+
311
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
312
+
313
+ ---
314
+
315
+ ## License
316
+
317
+ MIT — do whatever you want with it.
318
+
319
+ ---
320
+
321
+ <p align="center">
322
+ <sub>Built because reading docs is great, but having your AI read them <i>for</i> you is better.</sub>
323
+ </p>
@@ -0,0 +1,292 @@
1
+ <p align="center">
2
+ <h1 align="center">griptape-mcp</h1>
3
+ <p align="center">
4
+ Stop letting your AI guess at Griptape APIs.<br/>
5
+ Give it the actual docs.
6
+ </p>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://pypi.org/project/griptape-mcp/"><img src="https://img.shields.io/pypi/v/griptape-mcp?color=blue&logo=pypi&logoColor=white" alt="PyPI"></a>
11
+ <a href="https://pypi.org/project/griptape-mcp/"><img src="https://img.shields.io/pypi/pyversions/griptape-mcp?logo=python&logoColor=white" alt="Python 3.10+"></a>
12
+ <a href="https://github.com/KianSalem/griptape-mcp/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
13
+ <br/>
14
+ <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-8A2BE2" alt="MCP Compatible"></a>
15
+ <img src="https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white" alt="Docker">
16
+ <a href="https://github.com/KianSalem/griptape-mcp/stargazers"><img src="https://img.shields.io/github/stars/KianSalem/griptape-mcp?style=social" alt="GitHub Stars"></a>
17
+ </p>
18
+
19
+ ---
20
+
21
+ Your AI keeps hallucinating Griptape method names. You ask it to build an Agent, it writes confident code that doesn't exist. You paste the error. It apologizes and writes different wrong code.
22
+
23
+ **griptape-mcp** fixes this. It ships the entire Griptape documentation — 84 framework pages, 125 nodes, 714 real code examples — as a pre-built SQLite database your AI can actually search. No hallucinations. No outdated training data. No API keys.
24
+
25
+ > Install it once. Your AI figures out the rest.
26
+
27
+ ### What's inside the box
28
+
29
+ | | |
30
+ |---|---|
31
+ | 📚 **84 framework pages** | Agents, Pipelines, Workflows, Tools, Drivers, Engines, RAG, and more |
32
+ | 🧩 **125 visual nodes** | Every node in Griptape Nodes across 17 categories |
33
+ | 🔍 **Full-text search** | SQLite FTS5 — fast, typo-tolerant, ranked by relevance |
34
+ | 💻 **714 code examples** | Real, working snippets pulled straight from the official docs |
35
+ | 📦 **Ships ready to go** | Pre-built database included. No network calls, no API keys, no scraping at query time. |
36
+
37
+ ---
38
+
39
+ ## What it looks like
40
+
41
+ Once connected, your AI uses the tools automatically. No prompting required.
42
+
43
+ **You:** How do I add conversation memory to an Agent?
44
+
45
+ **Claude:** *(calls `search_docs("conversation memory")`)* Found it. Here's the pattern:
46
+
47
+ ```python
48
+ from griptape.structures import Agent
49
+ from griptape.memory.structure import ConversationMemory
50
+
51
+ agent = Agent(conversation_memory=ConversationMemory())
52
+ ```
53
+
54
+ No guessing. No hallucinated imports. Just the actual docs.
55
+
56
+ ---
57
+
58
+ ## Get running in 60 seconds
59
+
60
+ **Step 1 — Install**
61
+
62
+ ```bash
63
+ pip install griptape-mcp
64
+ ```
65
+
66
+ **Step 2 — Connect your client**
67
+
68
+ <details>
69
+ <summary><b>Claude Desktop</b></summary>
70
+
71
+ Add to your config file:
72
+
73
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
74
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
75
+ - **Linux**: `~/.config/Claude/claude_desktop_config.json`
76
+
77
+ ```json
78
+ {
79
+ "mcpServers": {
80
+ "griptape-docs": {
81
+ "command": "griptape-mcp"
82
+ }
83
+ }
84
+ }
85
+ ```
86
+
87
+ Restart Claude Desktop. Look for the 🔨 icon — that means tools are loaded.
88
+
89
+ </details>
90
+
91
+ <details>
92
+ <summary><b>Claude Code (one command)</b></summary>
93
+
94
+ ```bash
95
+ claude mcp add griptape-docs griptape-mcp
96
+ ```
97
+
98
+ Done. That's genuinely it.
99
+
100
+ Or add manually to your MCP settings:
101
+
102
+ ```json
103
+ {
104
+ "mcpServers": {
105
+ "griptape-docs": {
106
+ "command": "griptape-mcp"
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ </details>
113
+
114
+ <details>
115
+ <summary><b>Docker</b></summary>
116
+
117
+ ```bash
118
+ docker build -t griptape-mcp .
119
+ ```
120
+
121
+ ```json
122
+ {
123
+ "mcpServers": {
124
+ "griptape-docs": {
125
+ "command": "docker",
126
+ "args": ["run", "-i", "--rm", "griptape-mcp"]
127
+ }
128
+ }
129
+ }
130
+ ```
131
+
132
+ </details>
133
+
134
+ **Step 3 — Ask anything**
135
+
136
+ > *"How do I create a Griptape Agent with custom tools?"*
137
+ >
138
+ > *"What's the difference between a Pipeline and a Workflow?"*
139
+ >
140
+ > *"Show me a RAG pipeline example in Griptape"*
141
+ >
142
+ > *"What image processing nodes does Griptape Nodes have?"*
143
+ >
144
+ > *"Find me code examples for conversation memory"*
145
+
146
+ ---
147
+
148
+ ## What your AI can look up
149
+
150
+ Six tools your AI assistant can call, all read-only and fast:
151
+
152
+ | Tool | What it does |
153
+ |------|-------------|
154
+ | `search_docs` | Full-text search across all Griptape documentation. Filter by `"framework"`, `"nodes"`, or `"all"`. |
155
+ | `get_page` | Pull the complete content of any doc page by URL or title. Includes sections and code blocks. |
156
+ | `search_griptape_nodes` | Find nodes by name, description, or category. Returns descriptions and doc links. |
157
+ | `get_node_details` | Deep dive on a single node — full description, config, and code examples. |
158
+ | `list_categories` | Browse what's available: 8 framework sections + 17 node categories with counts. |
159
+ | `get_code_examples` | Search for working code snippets by topic. Great for "show me how to..." questions. |
160
+
161
+ ---
162
+
163
+ ## How it works
164
+
165
+ The architecture is intentionally boring — a SQLite file shipped inside the pip package, opened read-only at query time. No network calls happen during conversations.
166
+
167
+ ```
168
+ ┌──────────────────────────────────────────────────────────┐
169
+ │ At build time │
170
+ │ │
171
+ │ docs.griptape.ai ──┐ │
172
+ │ ├──▶ scraper ──▶ SQLite + FTS5 │
173
+ │ GitHub markdown ────┘ (shipped in package) │
174
+ └──────────────────────────────────────────────────────────┘
175
+
176
+ ┌──────────────────────────────────────────────────────────┐
177
+ │ At query time │
178
+ │ │
179
+ │ Claude / AI ◀──stdio──▶ griptape-mcp ◀──▶ SQLite (ro) │
180
+ │ │
181
+ │ No network calls. No API keys. Just a local subprocess. │
182
+ └──────────────────────────────────────────────────────────┘
183
+ ```
184
+
185
+ 1. **Scrapers** crawl `docs.griptape.ai` (via sitemap) and Griptape Nodes (via GitHub markdown)
186
+ 2. Content gets parsed into structured pieces: titles, headings, code blocks, node metadata
187
+ 3. Everything lands in a **SQLite database** with FTS5 full-text search indexes
188
+ 4. That database **ships inside the pip package** — nothing to fetch at runtime
189
+ 5. The MCP server opens it read-only and exposes 6 search/lookup tools over stdio
190
+ 6. A **nightly GitHub Actions job** re-scrapes and rebuilds to stay current
191
+
192
+ ---
193
+
194
+ ## Node coverage
195
+
196
+ 125 nodes across 17 categories:
197
+
198
+ | Category | Count | | Category | Count |
199
+ |----------|------:|-|----------|------:|
200
+ | Image | 32 | | Lists | 17 |
201
+ | Video | 18 | | Text | 12 |
202
+ | Config | 9 | | Number | 7 |
203
+ | Tools | 7 | | JSON | 5 |
204
+ | Dict | 4 | | Audio | 3 |
205
+ | Execution | 3 | | Rules | 2 |
206
+ | Adv. Media Library | 2 | | Agents | 1 |
207
+ | Convert | 1 | | Utils | 1 |
208
+ | 3D | 1 | | | |
209
+
210
+ ---
211
+
212
+ ## Development
213
+
214
+ ### Setup
215
+
216
+ ```bash
217
+ git clone https://github.com/KianSalem/griptape-mcp.git
218
+ cd griptape-mcp
219
+ pip install -e ".[dev]"
220
+ ```
221
+
222
+ ### Rebuild the docs database
223
+
224
+ ```bash
225
+ cd scripts
226
+ python build_db.py
227
+ ```
228
+
229
+ This scrapes both documentation sources and writes to `src/griptape_mcp/data/griptape.db`. If the website rate-limits you, the build script automatically falls back to scraping GitHub markdown.
230
+
231
+ ### Run against a local database
232
+
233
+ ```bash
234
+ GRIPTAPE_MCP_DB_PATH=./griptape.db griptape-mcp
235
+ ```
236
+
237
+ ### Validate
238
+
239
+ ```bash
240
+ python scripts/validate_db.py src/griptape_mcp/data/griptape.db
241
+ ```
242
+
243
+ ```
244
+ [PASS] Framework pages > 10 - got 84
245
+ [PASS] Nodes pages > 10 - got 164
246
+ [PASS] Nodes extracted > 20 - got 125
247
+ [PASS] Sections > 50 - got 2263
248
+ [PASS] Code examples > 10 - got 714
249
+ [PASS] FTS search works - 'agent' matched 79 pages
250
+ [PASS] Multiple node categories - got 17
251
+ ALL CHECKS PASSED
252
+ ```
253
+
254
+ ### Project structure
255
+
256
+ ```
257
+ griptape-mcp/
258
+ ├── src/griptape_mcp/
259
+ │ ├── server.py ← MCP tools (FastMCP)
260
+ │ ├── db.py ← Schema, queries, FTS
261
+ │ ├── __main__.py ← Entry point
262
+ │ └── data/griptape.db ← Pre-built database (14 MB)
263
+ ├── scripts/
264
+ │ ├── build_db.py ← Orchestrates full rebuild
265
+ │ ├── scrape_framework.py ← Crawls docs.griptape.ai
266
+ │ ├── scrape_nodes.py ← Crawls docs.griptapenodes.com
267
+ │ ├── scrape_nodes_github.py ← GitHub fallback scraper
268
+ │ └── validate_db.py ← Post-build validation
269
+ ├── .github/workflows/
270
+ │ ├── rebuild-db.yml ← Nightly CI rebuild
271
+ │ └── publish.yml ← PyPI publish on release
272
+ ├── Dockerfile
273
+ └── pyproject.toml
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Contributing
279
+
280
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
281
+
282
+ ---
283
+
284
+ ## License
285
+
286
+ MIT — do whatever you want with it.
287
+
288
+ ---
289
+
290
+ <p align="center">
291
+ <sub>Built because reading docs is great, but having your AI read them <i>for</i> you is better.</sub>
292
+ </p>
@@ -0,0 +1,51 @@
1
+ [project]
2
+ name = "griptape-mcp"
3
+ version = "0.1.0"
4
+ description = "MCP server providing Griptape Framework & Nodes documentation to LLMs"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ license = {text = "MIT"}
8
+ authors = [{name = "Kian"}]
9
+ keywords = ["mcp", "model-context-protocol", "griptape", "llm", "documentation", "ai", "claude"]
10
+ dependencies = [
11
+ "mcp>=1.8.0,<3",
12
+ ]
13
+
14
+ classifiers = [
15
+ "Development Status :: 3 - Alpha",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.10",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
23
+ "Topic :: Software Development :: Documentation",
24
+ ]
25
+
26
+ [project.urls]
27
+ Homepage = "https://github.com/KianSalem/griptape-mcp"
28
+ Repository = "https://github.com/KianSalem/griptape-mcp"
29
+ "Bug Tracker" = "https://github.com/KianSalem/griptape-mcp/issues"
30
+
31
+ [project.scripts]
32
+ griptape-mcp = "griptape_mcp.__main__:main"
33
+
34
+ [project.optional-dependencies]
35
+ dev = [
36
+ "httpx[http2]>=0.28.0,<1",
37
+ "beautifulsoup4>=4.12.0,<5",
38
+ "lxml>=5.0.0,<6",
39
+ "defusedxml>=0.7.1,<1",
40
+ "pytest>=7.0,<9",
41
+ ]
42
+
43
+ [build-system]
44
+ requires = ["setuptools>=61.0"]
45
+ build-backend = "setuptools.build_meta"
46
+
47
+ [tool.setuptools.packages.find]
48
+ where = ["src"]
49
+
50
+ [tool.setuptools.package-data]
51
+ griptape_mcp = ["data/*.db"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """MCP server providing Griptape Framework & Nodes documentation to LLMs."""
2
+
3
+ __version__ = "0.1.0"