{"repo":"jakub-k-slys/substack-gateway-oss","free":true,"listed":false,"github":"https://github.com/jakub-k-slys/substack-gateway-oss","clone":"git clone https://github.com/jakub-k-slys/substack-gateway-oss.git","description":"Stateless Substack Gateway exposing a REST API and MCP for reading profiles, posts, notes, and comments, plus authenticated personal and note-publishing workflows.","language":"Python","stars":21,"topics":["ai-tools","automation","fastapi","fastmcp","gateway","integration","mcp","model-context-protocol","python","rest"],"license":"MIT","category":"mcp-servers","readme_excerpt":"Substack Gateway OSS A stateless Python gateway for Substack that exposes a REST API and an MCP server on top of the same service layer. Designed to make Substack data and actions accessible from scripts, applications, and AI tooling — without duplicating integration logic across different interfaces. What You Can Do - Read public Substack profiles, posts, notes, and comments - Access authenticated me endpoints with a base64-encoded credential token - Create and delete notes through the REST API - Use the same gateway as an MCP server for AI tools and agent workflows - Extend the app with custom routes, MCP tools, auth providers, and lifespan hooks Interfaces - REST API at /api/v1/ - MCP server at /mcp Both share the same service layer and HTTP clients. The thin substack gateway shell package assembles the application (REST + MCP composition), while gateway oss provides the OSS module surface as a facade. Quickstart Requirements: - Python 3.10+ - uv Install dependencies: Run the application locally: Check the root metadata endpoint: Check the liveness probe: Fetch a public profile: REST Example Public profile lookup: Authenticated request: The REST API is mounted under /api/v1 and includes endpoints for health, profiles, posts, notes, comments, and authenticated me operations. Authentication Gateway access and Substack access are separate concerns. For this OSS repository, Substack credentials are passed as a base64-encoded JSON object. REST requests send that value as the x-","default_branch":null,"files":null,"tree":[],"storefront":"/r/jakub-k-slys","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/jakub-k-slys/substack-gateway-oss/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}