A Model Context Protocol (MCP) server that enables Claude and other AI assistants to interact with Substack newsletters, posts, and user profiles.
This project converts the Substack API library into an Anthropic MCP server, allowing Claude to:
# Clone the repository
git clone https://github.com/Greg-Swiftomatic/substack-mcp-server.git
cd substack-mcp-server
# Set up virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
Alternatively, you can use uv
:
# Using uv for faster installation
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate
uv pip install -r requirements.txt
python substack_mcp.py
Open your Claude for Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
Add the server configuration:
{
"mcpServers": {
"substack": {
"command": "python",
"args": [
"/ABSOLUTE/PATH/TO/substack-mcp-server/substack_mcp.py"
]
}
}
}
Once configured, you can ask Claude questions like:
See example queries for more examples.
This MCP server provides the following tools:
Tool | Description |
---|---|
get_newsletter_posts | Retrieves recent posts from a Substack newsletter |
get_post_content | Gets the full content of a specific Substack post |
search_newsletter | Searches for posts within a newsletter |
search_across_substacks | Searches for content across multiple Substack newsletters |
discover_popular_substacks | Discovers popular Substack newsletters by category |
get_author_info | Retrieves information about a Substack author |
get_newsletter_recommendations | Gets recommended newsletters for a publication |
get_newsletter_authors | Lists authors of a Substack newsletter |
substack-mcp-server/
├── README.md
├── LICENSE
├── requirements.txt
├── Dockerfile
├── substack_mcp.py
└── examples/
└── example_queries.md
To add new tools to the MCP server, add a new function to substack_mcp.py
with the @mcp.tool()
decorator:
@mcp.tool()
async def my_new_tool(param1: str, param2: int = 5) -> str:
"""
Description of what the tool does.
Args:
param1: Description of param1
param2: Description of param2 (default: 5)
"""
# Tool implementation
return "Result"
The search_across_substacks
tool enables powerful research capabilities by searching multiple Substack newsletters simultaneously for specific topics. This allows for:
You can specify which newsletters to search or let the system use a curated list of popular newsletters. Results are organized by newsletter for easy comparison.
The discover_popular_substacks
tool helps users find new newsletters based on categories of interest. Currently supported categories include:
This feature makes it easier to discover high-quality content creators in specific domains.
If you encounter issues:
Check Claude's logs:
# MacOS
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
# Windows
type %APPDATA%\Claude\Logs\mcp*.log
Ensure your server runs without errors:
python substack_mcp.py
Verify the configuration file paths in Claude for Desktop.
Contributions are welcome! Please feel free to submit a pull request.
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)This project is licensed under the MIT License - see the LICENSE file for details.
{
"mcpServers": {
"substack": {
"env": {},
"args": [
"/ABSOLUTE/PATH/TO/substack-mcp-server/substack_mcp.py"
],
"command": "python"
}
}
}
Seamless access to top MCP servers powering the future of AI integration.