<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abanoub Ashraf</title>
    <description>The latest articles on DEV Community by Abanoub Ashraf (@abanoubashraf).</description>
    <link>https://dev.to/abanoubashraf</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F556300%2Fc6258e14-63ac-4494-9ead-78b18d2604a2.jpeg</url>
      <title>DEV Community: Abanoub Ashraf</title>
      <link>https://dev.to/abanoubashraf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abanoubashraf"/>
    <language>en</language>
    <item>
      <title>I Wanted This Substack MCP to Help Me Learn, Not Just Publish</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Sat, 28 Mar 2026 15:48:00 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/i-wanted-this-substack-mcp-to-help-me-learn-not-just-publish-3cbo</link>
      <guid>https://dev.to/abanoubashraf/i-wanted-this-substack-mcp-to-help-me-learn-not-just-publish-3cbo</guid>
      <description>&lt;p&gt;Part 9 of 9&lt;/p&gt;

&lt;p&gt;The last piece I cared about was making this useful for learning, not just publishing.&lt;/p&gt;

&lt;p&gt;That’s where these came in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;study_topic_on_substack&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extract_coding_lessons&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted Substack to become more than a place to publish.&lt;br&gt;
I wanted it to become a surface for research, study, and pulling lessons out of other writers’ work too.&lt;/p&gt;

&lt;p&gt;That’s the current shape of &lt;code&gt;substack-mcp-plus&lt;/code&gt;:&lt;br&gt;
publishing, scheduling, analytics, research, strategy, and study workflows in one MCP.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>One Good Post Should Turn Into More Than One Post</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Sat, 28 Mar 2026 10:48:01 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/one-good-post-should-turn-into-more-than-one-post-37oh</link>
      <guid>https://dev.to/abanoubashraf/one-good-post-should-turn-into-more-than-one-post-37oh</guid>
      <description>&lt;p&gt;Part 8 of 9&lt;/p&gt;

&lt;p&gt;I really dislike the “write one post, publish it once, move on” pattern.&lt;/p&gt;

&lt;p&gt;If you already did the hard work of writing something useful, the tool should help you squeeze more leverage out of it.&lt;/p&gt;

&lt;p&gt;That batch became:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;repurpose_post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content_gap_analysis&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;series_planner&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal here is simple: more mileage, better follow-up angles, and less starting from zero every time.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Your Content Archive Should Generate Ideas Instead of Collecting Dust</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Sat, 28 Mar 2026 05:48:00 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/your-content-archive-should-generate-ideas-instead-of-collecting-dust-3mga</link>
      <guid>https://dev.to/abanoubashraf/your-content-archive-should-generate-ideas-instead-of-collecting-dust-3mga</guid>
      <description>&lt;p&gt;Part 7 of 9&lt;/p&gt;

&lt;p&gt;One of my favorite directions in this repo was using your own archive as strategy input.&lt;/p&gt;

&lt;p&gt;That led to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;analyze_my_posts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generate_post_ideas&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;title_and_hook_optimizer&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of letting old posts sit there gathering dust, the MCP can turn them into better future content.&lt;/p&gt;

&lt;p&gt;That’s much more interesting to me than a tool that only helps you hit publish faster.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>I Turned Substack Into a Research Surface Inside an MCP Client</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Sat, 28 Mar 2026 00:48:00 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/i-turned-substack-into-a-research-surface-inside-an-mcp-client-4jja</link>
      <guid>https://dev.to/abanoubashraf/i-turned-substack-into-a-research-surface-inside-an-mcp-client-4jja</guid>
      <description>&lt;p&gt;Part 6 of 9&lt;/p&gt;

&lt;p&gt;The project got a lot more interesting when it stopped being just a publishing tool.&lt;/p&gt;

&lt;p&gt;That’s where the research layer came in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;research_substack&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;research_substack_post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;research_substack_publication&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the MCP can help discover writers, inspect posts, or break down a whole publication from an AI client.&lt;/p&gt;

&lt;p&gt;That means it can help you publish, but also help you study a niche and understand what already works before you write a word.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>A Substack MCP Should Give You Visibility, Not Just Draft Creation</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Fri, 27 Mar 2026 19:48:01 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/a-substack-mcp-should-give-you-visibility-not-just-draft-creation-51oi</link>
      <guid>https://dev.to/abanoubashraf/a-substack-mcp-should-give-you-visibility-not-just-draft-creation-51oi</guid>
      <description>&lt;p&gt;Part 5 of 9&lt;/p&gt;

&lt;p&gt;I didn’t want this to be a write-only Substack MCP.&lt;/p&gt;

&lt;p&gt;If I’m using a tool to publish, I also want it to help me understand what’s happening inside the publication.&lt;/p&gt;

&lt;p&gt;So I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;get_post_analytics&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_sections&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_subscriber_count&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That made the MCP feel much more complete.&lt;br&gt;
It’s not just about pushing content out. It’s also about giving you visibility into the account and the publication state from the same workflow.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>The Boring Substack Operations Are the Real Test of a Good Tool</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Fri, 27 Mar 2026 14:48:00 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/the-boring-substack-operations-are-the-real-test-of-a-good-tool-17ij</link>
      <guid>https://dev.to/abanoubashraf/the-boring-substack-operations-are-the-real-test-of-a-good-tool-17ij</guid>
      <description>&lt;p&gt;Part 4 of 9&lt;/p&gt;

&lt;p&gt;The fastest way to tell whether a tool is real or just demo bait is to try the unglamorous parts.&lt;/p&gt;

&lt;p&gt;That’s why this batch focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;upload_image&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;duplicate_post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete_draft&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not flashy features.&lt;br&gt;
They’re the things that decide whether the tool survives first contact with real usage.&lt;/p&gt;

&lt;p&gt;If a tool only handles the shiny path, it’s not really a workflow tool.&lt;br&gt;
It’s a presentation.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>If an MCP Stops at Draft Creation, It Didn't Really Solve the Workflow</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Fri, 27 Mar 2026 09:48:00 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/if-an-mcp-stops-at-draft-creation-it-didnt-really-solve-the-workflow-2nmo</link>
      <guid>https://dev.to/abanoubashraf/if-an-mcp-stops-at-draft-creation-it-didnt-really-solve-the-workflow-2nmo</guid>
      <description>&lt;p&gt;Part 3 of 9&lt;/p&gt;

&lt;p&gt;A lot of MCP demos stop at “draft created successfully” and then quietly hand the real work back to the dashboard.&lt;/p&gt;

&lt;p&gt;That always felt fake to me.&lt;/p&gt;

&lt;p&gt;If the promise is “operate this product from an AI client,” then the workflow has to continue past draft creation.&lt;/p&gt;

&lt;p&gt;So I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;publish_post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;schedule_post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;list_scheduled_posts&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drafting is nice.&lt;br&gt;
Actually shipping is the point.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Using an MCP Client for the Substack Draft Loop Is Better Than I Expected</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Fri, 27 Mar 2026 04:48:00 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/using-an-mcp-client-for-the-substack-draft-loop-is-better-than-i-expected-oo6</link>
      <guid>https://dev.to/abanoubashraf/using-an-mcp-client-for-the-substack-draft-loop-is-better-than-i-expected-oo6</guid>
      <description>&lt;p&gt;Part 2 of 9&lt;/p&gt;

&lt;p&gt;Once setup worked, the next thing that mattered was the actual writing loop.&lt;/p&gt;

&lt;p&gt;I didn’t want an MCP that only looked good in demos. I wanted one where I could create a draft, update it, preview it, and iterate without bouncing around the Substack dashboard every minute.&lt;/p&gt;

&lt;p&gt;That batch became:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;create_formatted_post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update_post&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;preview_draft&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the point where this started feeling genuinely useful instead of just technically amusing.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>How I Built a Substack MCP With a Setup Flow That Doesn't Immediately Break</title>
      <dc:creator>Abanoub Ashraf</dc:creator>
      <pubDate>Thu, 26 Mar 2026 23:48:00 +0000</pubDate>
      <link>https://dev.to/abanoubashraf/how-i-built-a-substack-mcp-with-a-setup-flow-that-doesnt-immediately-break-5317</link>
      <guid>https://dev.to/abanoubashraf/how-i-built-a-substack-mcp-with-a-setup-flow-that-doesnt-immediately-break-5317</guid>
      <description>&lt;p&gt;Part 1 of 9&lt;/p&gt;

&lt;p&gt;I built &lt;code&gt;substack-mcp-plus&lt;/code&gt; because I got tired of brittle Substack tooling and broken setup flows.&lt;/p&gt;

&lt;p&gt;The first thing I cared about was simple:&lt;br&gt;
can I connect this thing, confirm it works, and get useful output immediately?&lt;/p&gt;

&lt;p&gt;So the first batch focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;list_drafts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;list_published&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get_post_content&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gave me the fastest possible “is this MCP actually alive?” loop after install.&lt;/p&gt;

&lt;p&gt;Setup is intentionally simple:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm i -g substack-mcp-plus&lt;/code&gt;&lt;br&gt;
&lt;code&gt;substack-mcp-plus-setup&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
&lt;a href="https://github.com/abanoub-ashraf/substack-mcp-plus" rel="noopener noreferrer"&gt;https://github.com/abanoub-ashraf/substack-mcp-plus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>automation</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
