quicktube-mcp 1.0.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 AW3 Technology, Inc.
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,165 @@
1
+ Metadata-Version: 2.4
2
+ Name: quicktube-mcp
3
+ Version: 1.0.0
4
+ Summary: MCP server for QuickTube (quicktube.ai): YouTube transcripts, AI summaries, quizzes and fact-checks for AI agents
5
+ Author-email: "AW3 Technology, Inc." <will.schulz@aw3.tech>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://quicktube.ai
8
+ Project-URL: Documentation, https://quicktube.ai/api-docs
9
+ Project-URL: MCP setup, https://quicktube.ai/api-docs#mcp-server
10
+ Project-URL: API keys, https://quicktube.ai/settings?tab=api-keys
11
+ Keywords: youtube,transcript,mcp,model-context-protocol,ai,video,summary,claude
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Multimedia :: Video
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Requires-Python: >=3.10
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: mcp<2,>=1.22
29
+ Requires-Dist: httpx<1,>=0.27
30
+ Provides-Extra: test
31
+ Requires-Dist: pytest>=7; extra == "test"
32
+ Dynamic: license-file
33
+
34
+ # QuickTube MCP Server
35
+
36
+ <!-- mcp-name: ai.quicktube/quicktube-mcp -->
37
+
38
+ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server for [QuickTube](https://quicktube.ai). It lets AI agents such as Claude Code, Claude Desktop and Cursor fetch YouTube transcripts, summarize videos, find the key moments, generate quizzes, fact-check claims and more.
39
+
40
+ - Website: https://quicktube.ai
41
+ - API and MCP docs: https://quicktube.ai/api-docs
42
+ - Get an API key: https://quicktube.ai/settings?tab=api-keys
43
+
44
+ ## Tools
45
+
46
+ | Tool | Description | Credits |
47
+ |------|-------------|---------|
48
+ | `get_transcript` | Fetch a YouTube video transcript (paged for long videos) | 1 per call |
49
+ | `summarize_video` | Generate an AI summary | 5 |
50
+ | `get_best_sections` | Identify key moments and highlights | 5 |
51
+ | `detect_characters` | Detect speakers and people | 3 |
52
+ | `chat_with_video` | Ask questions about the video's content | 1/msg |
53
+ | `generate_quiz` | Create a comprehension quiz | 5 |
54
+ | `fact_check_video` | Fact-check claims (web-grounded) | 5 |
55
+ | `get_bias_score` | Analyze political/ideological bias | 5 |
56
+ | `neutralize_bias` | Rewrite biased language neutrally | 5 |
57
+ | `get_video_metadata` | Get video title, stats, duration | 0 |
58
+ | `search_videos` | Search YouTube | 0 |
59
+ | `get_video_comments` | Get video comments | 0 |
60
+ | `get_related_videos` | Find related videos | 0 |
61
+ | `list_sessions` | List saved analysis sessions | 0 |
62
+ | `get_session` | Get a saved session | 0 |
63
+ | `save_session` | Save an analysis for later | 0 |
64
+ | `delete_session` | Delete a saved session | 0 |
65
+ | `get_credit_balance` | Check your credit balance | 0 |
66
+ | `batch_process_videos` | Analyze up to 20 videos at once | per video: transcript 1, summary 5, sections 5 |
67
+
68
+ ## Setup
69
+
70
+ ### 1. Get an API key
71
+
72
+ Create an API key at [quicktube.ai/settings?tab=api-keys](https://quicktube.ai/settings?tab=api-keys). Each tool needs a scope on the key:
73
+
74
+ | Scope | Tools | In a new key by default |
75
+ |-------|-------|-------------------------|
76
+ | `transcript` | `get_transcript` | yes |
77
+ | `ai` | `summarize_video`, `get_best_sections`, `detect_characters`, `chat_with_video`, `fact_check_video`, `get_bias_score`, `neutralize_bias` | yes |
78
+ | `batch` | `batch_process_videos` | yes |
79
+ | `sessions:read` | `list_sessions`, `get_session` | no |
80
+ | `sessions:write` | `save_session`, `delete_session` | no |
81
+ | `billing:read` | `get_credit_balance` | no |
82
+
83
+ `generate_quiz` and the YouTube data tools (`get_video_metadata`, `search_videos`, `get_video_comments`, `get_related_videos`) need no particular scope. Keys created on the settings page get the default scopes only, so the session and balance tools return 403 with them.
84
+
85
+ ### 2. Add the server to your MCP client
86
+
87
+ The quickest route is [`uvx`](https://docs.astral.sh/uv/), which downloads and runs the server without a separate install step.
88
+
89
+ **Claude Code**
90
+
91
+ ```bash
92
+ claude mcp add quicktube --env QUICKTUBE_API_KEY=qt_your_api_key_here -- uvx quicktube-mcp
93
+ ```
94
+
95
+ **Claude Desktop, Cursor and other clients** (`claude_desktop_config.json`, `.cursor/mcp.json`, `.mcp.json`, ...):
96
+
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "quicktube": {
101
+ "command": "uvx",
102
+ "args": ["quicktube-mcp"],
103
+ "env": {
104
+ "QUICKTUBE_API_KEY": "qt_your_api_key_here"
105
+ }
106
+ }
107
+ }
108
+ }
109
+ ```
110
+
111
+ **With pip instead of uvx**
112
+
113
+ ```bash
114
+ pip install quicktube-mcp
115
+ ```
116
+
117
+ Then use `"command": "quicktube-mcp"` (no `args`) in the config above.
118
+
119
+ ### Environment variables
120
+
121
+ | Variable | Required | Default |
122
+ |----------|----------|---------|
123
+ | `QUICKTUBE_API_KEY` | yes | none |
124
+ | `QUICKTUBE_BASE_URL` | no | `https://quicktube.ai` |
125
+ | `QUICKTUBE_TIMEOUT` | no | `120` (seconds; batch calls always get at least 600) |
126
+
127
+ The server starts without `QUICKTUBE_API_KEY` so clients can list its tools, but every tool call fails until the key is set. `QUICKTUBE_BASE_URL` may be given with or without a trailing `/api`.
128
+
129
+ ### Long transcripts
130
+
131
+ `get_transcript` returns at most `max_chars` characters (80,000 by default, roughly 20k tokens) so a three-hour podcast doesn't flood the agent's context. When the result has `"truncated": true`, call it again with `offset` set to the returned `next_offset`. Each call costs a credit, so for a whole long video `summarize_video`, `get_best_sections` or `chat_with_video` are usually the better tools. `get_session`, `list_sessions` and `batch_process_videos` likewise leave out the timestamped transcript entries and cap the transcript text.
132
+
133
+ ### Errors
134
+
135
+ API errors come back to the agent as tool errors with the status and the server's reason, for example `QuickTube API error 402 (Payment Required): Insufficient credits (needs 5 credits, balance 2). Buy credits at https://quicktube.ai/pricing`, or a 429 with the `Retry-After` delay.
136
+
137
+ ## Running it directly
138
+
139
+ ```bash
140
+ quicktube-mcp # MCP over stdio (what MCP clients expect)
141
+ quicktube-mcp --help
142
+ quicktube-mcp --version
143
+ quicktube-mcp --transport streamable-http # local HTTP transport
144
+ ```
145
+
146
+ ## Example prompts
147
+
148
+ - "Get me the transcript of this YouTube video and summarize it."
149
+ - "What are the key moments in this podcast episode?"
150
+ - "Fact-check the claims made in this news video."
151
+ - "Generate a quiz from this educational video."
152
+ - "Is this video politically biased? Analyze it."
153
+ - "Process these 5 videos and give me summaries of each."
154
+
155
+ ## Development
156
+
157
+ ```bash
158
+ pip install -e '.[test]'
159
+ pytest
160
+ quicktube-mcp --help
161
+ ```
162
+
163
+ ## License
164
+
165
+ MIT
@@ -0,0 +1,132 @@
1
+ # QuickTube MCP Server
2
+
3
+ <!-- mcp-name: ai.quicktube/quicktube-mcp -->
4
+
5
+ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server for [QuickTube](https://quicktube.ai). It lets AI agents such as Claude Code, Claude Desktop and Cursor fetch YouTube transcripts, summarize videos, find the key moments, generate quizzes, fact-check claims and more.
6
+
7
+ - Website: https://quicktube.ai
8
+ - API and MCP docs: https://quicktube.ai/api-docs
9
+ - Get an API key: https://quicktube.ai/settings?tab=api-keys
10
+
11
+ ## Tools
12
+
13
+ | Tool | Description | Credits |
14
+ |------|-------------|---------|
15
+ | `get_transcript` | Fetch a YouTube video transcript (paged for long videos) | 1 per call |
16
+ | `summarize_video` | Generate an AI summary | 5 |
17
+ | `get_best_sections` | Identify key moments and highlights | 5 |
18
+ | `detect_characters` | Detect speakers and people | 3 |
19
+ | `chat_with_video` | Ask questions about the video's content | 1/msg |
20
+ | `generate_quiz` | Create a comprehension quiz | 5 |
21
+ | `fact_check_video` | Fact-check claims (web-grounded) | 5 |
22
+ | `get_bias_score` | Analyze political/ideological bias | 5 |
23
+ | `neutralize_bias` | Rewrite biased language neutrally | 5 |
24
+ | `get_video_metadata` | Get video title, stats, duration | 0 |
25
+ | `search_videos` | Search YouTube | 0 |
26
+ | `get_video_comments` | Get video comments | 0 |
27
+ | `get_related_videos` | Find related videos | 0 |
28
+ | `list_sessions` | List saved analysis sessions | 0 |
29
+ | `get_session` | Get a saved session | 0 |
30
+ | `save_session` | Save an analysis for later | 0 |
31
+ | `delete_session` | Delete a saved session | 0 |
32
+ | `get_credit_balance` | Check your credit balance | 0 |
33
+ | `batch_process_videos` | Analyze up to 20 videos at once | per video: transcript 1, summary 5, sections 5 |
34
+
35
+ ## Setup
36
+
37
+ ### 1. Get an API key
38
+
39
+ Create an API key at [quicktube.ai/settings?tab=api-keys](https://quicktube.ai/settings?tab=api-keys). Each tool needs a scope on the key:
40
+
41
+ | Scope | Tools | In a new key by default |
42
+ |-------|-------|-------------------------|
43
+ | `transcript` | `get_transcript` | yes |
44
+ | `ai` | `summarize_video`, `get_best_sections`, `detect_characters`, `chat_with_video`, `fact_check_video`, `get_bias_score`, `neutralize_bias` | yes |
45
+ | `batch` | `batch_process_videos` | yes |
46
+ | `sessions:read` | `list_sessions`, `get_session` | no |
47
+ | `sessions:write` | `save_session`, `delete_session` | no |
48
+ | `billing:read` | `get_credit_balance` | no |
49
+
50
+ `generate_quiz` and the YouTube data tools (`get_video_metadata`, `search_videos`, `get_video_comments`, `get_related_videos`) need no particular scope. Keys created on the settings page get the default scopes only, so the session and balance tools return 403 with them.
51
+
52
+ ### 2. Add the server to your MCP client
53
+
54
+ The quickest route is [`uvx`](https://docs.astral.sh/uv/), which downloads and runs the server without a separate install step.
55
+
56
+ **Claude Code**
57
+
58
+ ```bash
59
+ claude mcp add quicktube --env QUICKTUBE_API_KEY=qt_your_api_key_here -- uvx quicktube-mcp
60
+ ```
61
+
62
+ **Claude Desktop, Cursor and other clients** (`claude_desktop_config.json`, `.cursor/mcp.json`, `.mcp.json`, ...):
63
+
64
+ ```json
65
+ {
66
+ "mcpServers": {
67
+ "quicktube": {
68
+ "command": "uvx",
69
+ "args": ["quicktube-mcp"],
70
+ "env": {
71
+ "QUICKTUBE_API_KEY": "qt_your_api_key_here"
72
+ }
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ **With pip instead of uvx**
79
+
80
+ ```bash
81
+ pip install quicktube-mcp
82
+ ```
83
+
84
+ Then use `"command": "quicktube-mcp"` (no `args`) in the config above.
85
+
86
+ ### Environment variables
87
+
88
+ | Variable | Required | Default |
89
+ |----------|----------|---------|
90
+ | `QUICKTUBE_API_KEY` | yes | none |
91
+ | `QUICKTUBE_BASE_URL` | no | `https://quicktube.ai` |
92
+ | `QUICKTUBE_TIMEOUT` | no | `120` (seconds; batch calls always get at least 600) |
93
+
94
+ The server starts without `QUICKTUBE_API_KEY` so clients can list its tools, but every tool call fails until the key is set. `QUICKTUBE_BASE_URL` may be given with or without a trailing `/api`.
95
+
96
+ ### Long transcripts
97
+
98
+ `get_transcript` returns at most `max_chars` characters (80,000 by default, roughly 20k tokens) so a three-hour podcast doesn't flood the agent's context. When the result has `"truncated": true`, call it again with `offset` set to the returned `next_offset`. Each call costs a credit, so for a whole long video `summarize_video`, `get_best_sections` or `chat_with_video` are usually the better tools. `get_session`, `list_sessions` and `batch_process_videos` likewise leave out the timestamped transcript entries and cap the transcript text.
99
+
100
+ ### Errors
101
+
102
+ API errors come back to the agent as tool errors with the status and the server's reason, for example `QuickTube API error 402 (Payment Required): Insufficient credits (needs 5 credits, balance 2). Buy credits at https://quicktube.ai/pricing`, or a 429 with the `Retry-After` delay.
103
+
104
+ ## Running it directly
105
+
106
+ ```bash
107
+ quicktube-mcp # MCP over stdio (what MCP clients expect)
108
+ quicktube-mcp --help
109
+ quicktube-mcp --version
110
+ quicktube-mcp --transport streamable-http # local HTTP transport
111
+ ```
112
+
113
+ ## Example prompts
114
+
115
+ - "Get me the transcript of this YouTube video and summarize it."
116
+ - "What are the key moments in this podcast episode?"
117
+ - "Fact-check the claims made in this news video."
118
+ - "Generate a quiz from this educational video."
119
+ - "Is this video politically biased? Analyze it."
120
+ - "Process these 5 videos and give me summaries of each."
121
+
122
+ ## Development
123
+
124
+ ```bash
125
+ pip install -e '.[test]'
126
+ pytest
127
+ quicktube-mcp --help
128
+ ```
129
+
130
+ ## License
131
+
132
+ MIT
@@ -0,0 +1,64 @@
1
+ [build-system]
2
+ # setuptools 77+ understands the SPDX `license` string and `license-files`.
3
+ requires = ["setuptools>=77.0"]
4
+ build-backend = "setuptools.build_meta"
5
+
6
+ [project]
7
+ name = "quicktube-mcp"
8
+ dynamic = ["version"]
9
+ description = "MCP server for QuickTube (quicktube.ai): YouTube transcripts, AI summaries, quizzes and fact-checks for AI agents"
10
+ readme = {file = "README.md", content-type = "text/markdown"}
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ authors = [
14
+ {name = "AW3 Technology, Inc.", email = "will.schulz@aw3.tech"}
15
+ ]
16
+ keywords = ["youtube", "transcript", "mcp", "model-context-protocol", "ai", "video", "summary", "claude"]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "Environment :: Console",
20
+ "Intended Audience :: Developers",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3 :: Only",
24
+ "Programming Language :: Python :: 3.10",
25
+ "Programming Language :: Python :: 3.11",
26
+ "Programming Language :: Python :: 3.12",
27
+ "Programming Language :: Python :: 3.13",
28
+ "Programming Language :: Python :: 3.14",
29
+ "Topic :: Multimedia :: Video",
30
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
31
+ ]
32
+ requires-python = ">=3.10"
33
+ dependencies = [
34
+ # mcp 1.8-1.21 import a private pydantic helper that pydantic 2.12
35
+ # removed, and they don't cap pydantic, so with a current pydantic they
36
+ # crash on import (checked against 2.14). 1.22 is the first that works.
37
+ # mcp 2.x removed `mcp.server.fastmcp` (renamed to MCPServer); without the
38
+ # upper bound, `uvx quicktube-mcp` resolves mcp 2.x and crashes on import.
39
+ "mcp>=1.22,<2",
40
+ "httpx>=0.27,<1",
41
+ ]
42
+
43
+ [project.scripts]
44
+ quicktube-mcp = "quicktube_mcp.server:main"
45
+
46
+ [project.urls]
47
+ Homepage = "https://quicktube.ai"
48
+ Documentation = "https://quicktube.ai/api-docs"
49
+ "MCP setup" = "https://quicktube.ai/api-docs#mcp-server"
50
+ "API keys" = "https://quicktube.ai/settings?tab=api-keys"
51
+
52
+ [tool.setuptools.packages.find]
53
+ where = ["."]
54
+ include = ["quicktube_mcp*"]
55
+
56
+ [tool.setuptools.dynamic]
57
+ # Single source of truth: quicktube_mcp/__init__.py
58
+ version = {attr = "quicktube_mcp.__version__"}
59
+
60
+ [project.optional-dependencies]
61
+ test = ["pytest>=7"]
62
+
63
+ [tool.pytest.ini_options]
64
+ testpaths = ["tests"]
@@ -0,0 +1,3 @@
1
+ """QuickTube MCP Server - Expose QuickTube API as MCP tools for AI agents."""
2
+
3
+ __version__ = "1.0.0"