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.
- griptape_mcp-0.1.0/LICENSE +21 -0
- griptape_mcp-0.1.0/PKG-INFO +323 -0
- griptape_mcp-0.1.0/README.md +292 -0
- griptape_mcp-0.1.0/pyproject.toml +51 -0
- griptape_mcp-0.1.0/setup.cfg +4 -0
- griptape_mcp-0.1.0/src/griptape_mcp/__init__.py +3 -0
- griptape_mcp-0.1.0/src/griptape_mcp/__main__.py +11 -0
- griptape_mcp-0.1.0/src/griptape_mcp/data/griptape.db +0 -0
- griptape_mcp-0.1.0/src/griptape_mcp/db.py +313 -0
- griptape_mcp-0.1.0/src/griptape_mcp/server.py +254 -0
- griptape_mcp-0.1.0/src/griptape_mcp.egg-info/PKG-INFO +323 -0
- griptape_mcp-0.1.0/src/griptape_mcp.egg-info/SOURCES.txt +14 -0
- griptape_mcp-0.1.0/src/griptape_mcp.egg-info/dependency_links.txt +1 -0
- griptape_mcp-0.1.0/src/griptape_mcp.egg-info/entry_points.txt +2 -0
- griptape_mcp-0.1.0/src/griptape_mcp.egg-info/requires.txt +8 -0
- griptape_mcp-0.1.0/src/griptape_mcp.egg-info/top_level.txt +1 -0
|
@@ -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"]
|