reddit-mcp-noapi 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,11 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+ .env
10
+ credentials.json
11
+ session.json
@@ -0,0 +1,24 @@
1
+ This is free and unencumbered software released into the public domain.
2
+
3
+ Anyone is free to copy, modify, publish, use, compile, sell, or
4
+ distribute this software, either in source code form or as a compiled
5
+ binary, for any purpose, commercial or non-commercial, and by any
6
+ means.
7
+
8
+ In jurisdictions that recognize copyright laws, the author or authors
9
+ of this software dedicate any and all copyright interest in the
10
+ software to the public domain. We make this dedication for the benefit
11
+ of the public at large and to the detriment of our heirs and
12
+ successors. We intend this dedication to be an overt act of
13
+ relinquishment in perpetuity of all present and future rights to this
14
+ software under copyright law.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ For more information, please refer to <https://unlicense.org>
@@ -0,0 +1,219 @@
1
+ Metadata-Version: 2.4
2
+ Name: reddit-mcp-noapi
3
+ Version: 0.1.0
4
+ Summary: MCP server for Reddit - read and write without API keys
5
+ Project-URL: Homepage, https://github.com/iris-alights/reddit-mcp
6
+ Project-URL: Repository, https://github.com/iris-alights/reddit-mcp
7
+ Author: Iris Thomas
8
+ License-Expression: Unlicense
9
+ License-File: LICENSE
10
+ Keywords: ai,claude,mcp,reddit
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: License :: OSI Approved :: The Unlicense (Unlicense)
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Requires-Python: >=3.10
18
+ Requires-Dist: browser-cookie3>=0.19.0
19
+ Requires-Dist: mcp>=1.0.0
20
+ Requires-Dist: requests>=2.28.0
21
+ Description-Content-Type: text/markdown
22
+
23
+ # reddit-mcp
24
+
25
+ MCP server for Reddit. Read-only mode works out of the box with no setup. Write mode requires a session cookie and comes with risks.
26
+
27
+ ## Read-Only Mode (No Setup Required)
28
+
29
+ Reading from Reddit requires no credentials. Just install and use:
30
+
31
+ ```bash
32
+ pip install reddit-mcp-noapi
33
+ ```
34
+
35
+ The read tools (`reddit_read`, `reddit_listing`, `reddit_search`) fetch public JSON from `old.reddit.com`. This is identical to viewing Reddit in a browser — no login required.
36
+
37
+ **Note:** Feeding Reddit content to AI probably violates Reddit's ToS. However, read-only access is indistinguishable from normal browsing, so there's no practical risk — Reddit can't tell the difference between you reading a post and Claude reading it.
38
+
39
+ ### MCP Config (Read-Only)
40
+
41
+ ```json
42
+ {
43
+ "mcpServers": {
44
+ "reddit": {
45
+ "command": "reddit-mcp"
46
+ }
47
+ }
48
+ }
49
+ ```
50
+
51
+ ### CLI Examples (Read-Only)
52
+
53
+ ```bash
54
+ # Read a post with comments
55
+ reddit read https://reddit.com/r/LocalLLaMA/comments/abc123/post_title
56
+
57
+ # List subreddit posts
58
+ reddit listing LocalLLaMA --limit 10
59
+
60
+ # Search
61
+ reddit search LocalLLaMA "llama 3"
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Write Mode (Session Cookie Required)
67
+
68
+ **⚠️ Read this before proceeding.**
69
+
70
+ Write mode lets you post comments, submit posts, vote, and check your inbox. It works by using session cookies from your browser.
71
+
72
+ ### The Risk
73
+
74
+ **This violates Reddit's Terms of Service.** Reddit [severely restricted API access](https://www.reddit.com/r/reddit/comments/145bram/addressing_the_community_about_changes_to_our_api/) in 2023 and stopped issuing new free API keys entirely in December 2025. Using automation to bypass their API restrictions is explicitly against their rules.
75
+
76
+ If Reddit detects automated access on your account, **your account may be permanently banned**. There's no way to predict if or when this will happen.
77
+
78
+ ### If You Accept the Risk
79
+
80
+ #### Option 1: Auto-Import from Browser (Recommended)
81
+
82
+ If you're logged into Reddit in your browser, the CLI can import your session automatically:
83
+
84
+ ```bash
85
+ # Auto-detect browser
86
+ reddit auth
87
+
88
+ # Or specify a browser
89
+ reddit auth --browser firefox
90
+ reddit auth --browser chrome
91
+ ```
92
+
93
+ This extracts the `reddit_session` cookie and saves it to `~/.config/reddit-mcp/session.json`.
94
+
95
+ **Supported browsers:**
96
+
97
+ | Browser | Linux | macOS | Windows |
98
+ |---------|-------|-------|---------|
99
+ | Firefox | ✓ | ✓ | ✓ |
100
+ | Chrome | ✓ | ✓ | ✓ |
101
+ | Chromium | ✓ | ✓ | ✓ |
102
+ | Safari | — | ? | — |
103
+ | Edge | ✓ | ✓ | ✓ |
104
+ | Opera | ✓ | ✓ | ✓ |
105
+ | Brave | ✓ | ✓ | ✓ |
106
+
107
+ ✓ = supported, ? = untested, — = not applicable
108
+
109
+ **Notes:**
110
+ - Snap and Flatpak installations of Chrome/Chromium are supported on Linux
111
+ - Chrome-based browsers may prompt for keychain/keyring access to decrypt cookies
112
+ - Safari support is untested — please report if it works (or doesn't)
113
+
114
+ **Using different accounts:** If you use different browsers for different Reddit accounts, specify the browser:
115
+
116
+ ```bash
117
+ # Main account in Firefox
118
+ reddit auth --browser firefox
119
+
120
+ # Alt account in Chromium (use different session directory)
121
+ REDDIT_SESSION_DIR=~/.config/reddit-mcp-alt reddit auth --browser chromium
122
+ ```
123
+
124
+ #### Option 2: Manual Cookie Export
125
+
126
+ If auto-import doesn't work:
127
+
128
+ 1. Log into Reddit in your browser
129
+ 2. Open DevTools (F12) → Application → Cookies → `https://www.reddit.com`
130
+ 3. Find the cookie named `reddit_session`
131
+ 4. Copy its value (it's a long JWT string starting with `eyJ...`)
132
+ 5. Create `~/.config/reddit-mcp/session.json`:
133
+
134
+ ```json
135
+ {
136
+ "cookies": {
137
+ "reddit_session": "eyJhbGciOiJS... (your full cookie value here)"
138
+ },
139
+ "username": "your_reddit_username"
140
+ }
141
+ ```
142
+
143
+ **Note:** Manual setup doesn't support auto-refresh. When your cookie expires, you'll need to repeat these steps. Use `reddit auth` if you want automatic refresh.
144
+
145
+ #### (Optional) Override the Session Location
146
+
147
+ By default, the session is stored in `~/.config/reddit-mcp/`. You can override this in your MCP config if you want Claude to use a different Reddit account than your CLI default, or if you're running multiple instances with different accounts:
148
+
149
+ ```json
150
+ {
151
+ "mcpServers": {
152
+ "reddit": {
153
+ "command": "reddit-mcp",
154
+ "env": {
155
+ "REDDIT_SESSION_DIR": "/path/to/session/directory"
156
+ }
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ ### How Write Mode Works
163
+
164
+ 1. Write operations load the session cookie from `~/.config/reddit-mcp/session.json`
165
+ 2. The cookie is used to authenticate with `old.reddit.com`
166
+ 3. When the cookie expires, reddit-mcp automatically re-imports from the same browser
167
+
168
+ Reddit session cookies last a long time (months), so refreshes are rare. If auto-refresh fails (e.g., you logged out of the browser), just run `reddit auth` again.
169
+
170
+ ### Write Tools
171
+
172
+ | Tool | Description |
173
+ |------|-------------|
174
+ | `reddit_inbox` | Check replies, mentions, messages |
175
+ | `reddit_comment` | Reply to a post or comment |
176
+ | `reddit_submit` | Submit a new post |
177
+ | `reddit_vote` | Upvote/downvote |
178
+ | `reddit_delete` | Delete your own content |
179
+
180
+ ### CLI Examples (Write Mode)
181
+
182
+ ```bash
183
+ # Check inbox
184
+ reddit inbox
185
+ reddit inbox --unread
186
+
187
+ # Post a comment (thing_id is t3_xxx for posts, t1_xxx for comments)
188
+ reddit comment t3_abc123 "This is my reply"
189
+
190
+ # Submit a text post
191
+ reddit submit LocalLLaMA "Post Title" --text "Post body here"
192
+
193
+ # Submit a link post
194
+ reddit submit LocalLLaMA "Post Title" --url "https://example.com"
195
+
196
+ # Vote (1 = upvote, -1 = downvote, 0 = remove vote)
197
+ reddit vote t3_abc123 1
198
+
199
+ # Delete your own post or comment
200
+ reddit delete t1_xyz789
201
+ ```
202
+
203
+ ---
204
+
205
+ ## Why This Exists
206
+
207
+ Reddit severely restricted third-party API access in 2023 and stopped issuing new free API keys entirely in December 2025. If you want to build something that interacts with Reddit programmatically, your options are:
208
+
209
+ 1. Be a large company that can negotiate API access
210
+ 2. Scrape public pages (read-only)
211
+ 3. Use session cookies (what this does for writes)
212
+
213
+ This tool exists because the AI/LLM community benefits from being able to interact with Reddit, and Reddit has made that impossible through official channels.
214
+
215
+ ## License
216
+
217
+ [Unlicense](https://unlicense.org/) — Public domain. Do whatever you want with it.
218
+
219
+ The author takes no responsibility for any consequences of using this tool.
@@ -0,0 +1,197 @@
1
+ # reddit-mcp
2
+
3
+ MCP server for Reddit. Read-only mode works out of the box with no setup. Write mode requires a session cookie and comes with risks.
4
+
5
+ ## Read-Only Mode (No Setup Required)
6
+
7
+ Reading from Reddit requires no credentials. Just install and use:
8
+
9
+ ```bash
10
+ pip install reddit-mcp-noapi
11
+ ```
12
+
13
+ The read tools (`reddit_read`, `reddit_listing`, `reddit_search`) fetch public JSON from `old.reddit.com`. This is identical to viewing Reddit in a browser — no login required.
14
+
15
+ **Note:** Feeding Reddit content to AI probably violates Reddit's ToS. However, read-only access is indistinguishable from normal browsing, so there's no practical risk — Reddit can't tell the difference between you reading a post and Claude reading it.
16
+
17
+ ### MCP Config (Read-Only)
18
+
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "reddit": {
23
+ "command": "reddit-mcp"
24
+ }
25
+ }
26
+ }
27
+ ```
28
+
29
+ ### CLI Examples (Read-Only)
30
+
31
+ ```bash
32
+ # Read a post with comments
33
+ reddit read https://reddit.com/r/LocalLLaMA/comments/abc123/post_title
34
+
35
+ # List subreddit posts
36
+ reddit listing LocalLLaMA --limit 10
37
+
38
+ # Search
39
+ reddit search LocalLLaMA "llama 3"
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Write Mode (Session Cookie Required)
45
+
46
+ **⚠️ Read this before proceeding.**
47
+
48
+ Write mode lets you post comments, submit posts, vote, and check your inbox. It works by using session cookies from your browser.
49
+
50
+ ### The Risk
51
+
52
+ **This violates Reddit's Terms of Service.** Reddit [severely restricted API access](https://www.reddit.com/r/reddit/comments/145bram/addressing_the_community_about_changes_to_our_api/) in 2023 and stopped issuing new free API keys entirely in December 2025. Using automation to bypass their API restrictions is explicitly against their rules.
53
+
54
+ If Reddit detects automated access on your account, **your account may be permanently banned**. There's no way to predict if or when this will happen.
55
+
56
+ ### If You Accept the Risk
57
+
58
+ #### Option 1: Auto-Import from Browser (Recommended)
59
+
60
+ If you're logged into Reddit in your browser, the CLI can import your session automatically:
61
+
62
+ ```bash
63
+ # Auto-detect browser
64
+ reddit auth
65
+
66
+ # Or specify a browser
67
+ reddit auth --browser firefox
68
+ reddit auth --browser chrome
69
+ ```
70
+
71
+ This extracts the `reddit_session` cookie and saves it to `~/.config/reddit-mcp/session.json`.
72
+
73
+ **Supported browsers:**
74
+
75
+ | Browser | Linux | macOS | Windows |
76
+ |---------|-------|-------|---------|
77
+ | Firefox | ✓ | ✓ | ✓ |
78
+ | Chrome | ✓ | ✓ | ✓ |
79
+ | Chromium | ✓ | ✓ | ✓ |
80
+ | Safari | — | ? | — |
81
+ | Edge | ✓ | ✓ | ✓ |
82
+ | Opera | ✓ | ✓ | ✓ |
83
+ | Brave | ✓ | ✓ | ✓ |
84
+
85
+ ✓ = supported, ? = untested, — = not applicable
86
+
87
+ **Notes:**
88
+ - Snap and Flatpak installations of Chrome/Chromium are supported on Linux
89
+ - Chrome-based browsers may prompt for keychain/keyring access to decrypt cookies
90
+ - Safari support is untested — please report if it works (or doesn't)
91
+
92
+ **Using different accounts:** If you use different browsers for different Reddit accounts, specify the browser:
93
+
94
+ ```bash
95
+ # Main account in Firefox
96
+ reddit auth --browser firefox
97
+
98
+ # Alt account in Chromium (use different session directory)
99
+ REDDIT_SESSION_DIR=~/.config/reddit-mcp-alt reddit auth --browser chromium
100
+ ```
101
+
102
+ #### Option 2: Manual Cookie Export
103
+
104
+ If auto-import doesn't work:
105
+
106
+ 1. Log into Reddit in your browser
107
+ 2. Open DevTools (F12) → Application → Cookies → `https://www.reddit.com`
108
+ 3. Find the cookie named `reddit_session`
109
+ 4. Copy its value (it's a long JWT string starting with `eyJ...`)
110
+ 5. Create `~/.config/reddit-mcp/session.json`:
111
+
112
+ ```json
113
+ {
114
+ "cookies": {
115
+ "reddit_session": "eyJhbGciOiJS... (your full cookie value here)"
116
+ },
117
+ "username": "your_reddit_username"
118
+ }
119
+ ```
120
+
121
+ **Note:** Manual setup doesn't support auto-refresh. When your cookie expires, you'll need to repeat these steps. Use `reddit auth` if you want automatic refresh.
122
+
123
+ #### (Optional) Override the Session Location
124
+
125
+ By default, the session is stored in `~/.config/reddit-mcp/`. You can override this in your MCP config if you want Claude to use a different Reddit account than your CLI default, or if you're running multiple instances with different accounts:
126
+
127
+ ```json
128
+ {
129
+ "mcpServers": {
130
+ "reddit": {
131
+ "command": "reddit-mcp",
132
+ "env": {
133
+ "REDDIT_SESSION_DIR": "/path/to/session/directory"
134
+ }
135
+ }
136
+ }
137
+ }
138
+ ```
139
+
140
+ ### How Write Mode Works
141
+
142
+ 1. Write operations load the session cookie from `~/.config/reddit-mcp/session.json`
143
+ 2. The cookie is used to authenticate with `old.reddit.com`
144
+ 3. When the cookie expires, reddit-mcp automatically re-imports from the same browser
145
+
146
+ Reddit session cookies last a long time (months), so refreshes are rare. If auto-refresh fails (e.g., you logged out of the browser), just run `reddit auth` again.
147
+
148
+ ### Write Tools
149
+
150
+ | Tool | Description |
151
+ |------|-------------|
152
+ | `reddit_inbox` | Check replies, mentions, messages |
153
+ | `reddit_comment` | Reply to a post or comment |
154
+ | `reddit_submit` | Submit a new post |
155
+ | `reddit_vote` | Upvote/downvote |
156
+ | `reddit_delete` | Delete your own content |
157
+
158
+ ### CLI Examples (Write Mode)
159
+
160
+ ```bash
161
+ # Check inbox
162
+ reddit inbox
163
+ reddit inbox --unread
164
+
165
+ # Post a comment (thing_id is t3_xxx for posts, t1_xxx for comments)
166
+ reddit comment t3_abc123 "This is my reply"
167
+
168
+ # Submit a text post
169
+ reddit submit LocalLLaMA "Post Title" --text "Post body here"
170
+
171
+ # Submit a link post
172
+ reddit submit LocalLLaMA "Post Title" --url "https://example.com"
173
+
174
+ # Vote (1 = upvote, -1 = downvote, 0 = remove vote)
175
+ reddit vote t3_abc123 1
176
+
177
+ # Delete your own post or comment
178
+ reddit delete t1_xyz789
179
+ ```
180
+
181
+ ---
182
+
183
+ ## Why This Exists
184
+
185
+ Reddit severely restricted third-party API access in 2023 and stopped issuing new free API keys entirely in December 2025. If you want to build something that interacts with Reddit programmatically, your options are:
186
+
187
+ 1. Be a large company that can negotiate API access
188
+ 2. Scrape public pages (read-only)
189
+ 3. Use session cookies (what this does for writes)
190
+
191
+ This tool exists because the AI/LLM community benefits from being able to interact with Reddit, and Reddit has made that impossible through official channels.
192
+
193
+ ## License
194
+
195
+ [Unlicense](https://unlicense.org/) — Public domain. Do whatever you want with it.
196
+
197
+ The author takes no responsibility for any consequences of using this tool.
@@ -0,0 +1,42 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "reddit-mcp-noapi"
7
+ version = "0.1.0"
8
+ description = "MCP server for Reddit - read and write without API keys"
9
+ readme = "README.md"
10
+ license = "Unlicense"
11
+ authors = [
12
+ { name = "Iris Thomas" }
13
+ ]
14
+ keywords = ["mcp", "reddit", "claude", "ai"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "License :: OSI Approved :: The Unlicense (Unlicense)",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.10",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ ]
23
+ requires-python = ">=3.10"
24
+ dependencies = [
25
+ "mcp>=1.0.0",
26
+ "requests>=2.28.0",
27
+ "browser_cookie3>=0.19.0",
28
+ ]
29
+
30
+ [project.scripts]
31
+ reddit-mcp = "reddit_mcp.server:main"
32
+ reddit = "reddit_mcp.reddit:main"
33
+
34
+ [project.urls]
35
+ Homepage = "https://github.com/iris-alights/reddit-mcp"
36
+ Repository = "https://github.com/iris-alights/reddit-mcp"
37
+
38
+ [tool.hatch.build.targets.wheel]
39
+ packages = ["reddit_mcp"]
40
+
41
+ [tool.hatch.build.targets.sdist]
42
+ include = ["reddit_mcp"]
@@ -0,0 +1,6 @@
1
+ """Reddit MCP - Read and write to Reddit without API keys."""
2
+
3
+ from .reddit import RedditClient
4
+
5
+ __version__ = "0.1.0"
6
+ __all__ = ["RedditClient"]