<?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: Aster Works</title>
    <description>The latest articles on DEV Community by Aster Works (@asterworks).</description>
    <link>https://dev.to/asterworks</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3992017%2F0ef03ca2-9fbe-481b-9b71-7b965b3399f9.png</url>
      <title>DEV Community: Aster Works</title>
      <link>https://dev.to/asterworks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/asterworks"/>
    <language>en</language>
    <item>
      <title>I published my first GitHub Marketplace Action: Aster Guard MCP</title>
      <dc:creator>Aster Works</dc:creator>
      <pubDate>Fri, 19 Jun 2026 07:14:19 +0000</pubDate>
      <link>https://dev.to/asterworks/i-published-my-first-github-marketplace-action-aster-guard-mcp-1d74</link>
      <guid>https://dev.to/asterworks/i-published-my-first-github-marketplace-action-aster-guard-mcp-1d74</guid>
      <description>&lt;p&gt;I just published my first GitHub Marketplace Action: &lt;strong&gt;Aster Guard MCP&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Marketplace:&lt;br&gt;
&lt;a href="https://github.com/marketplace/actions/aster-guard-mcp" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/aster-guard-mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://github.com/Aster-Works/aster-guard" rel="noopener noreferrer"&gt;https://github.com/Aster-Works/aster-guard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is a lightweight, local-first security scanner for MCP and Claude Code configuration files.&lt;/p&gt;

&lt;p&gt;The goal is intentionally small:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before connecting an MCP server to your AI coding environment, check whether the configuration looks safe enough to trust.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;MCP is becoming a very practical way to connect AI coding tools to real developer systems.&lt;/p&gt;

&lt;p&gt;Depending on the MCP server, an AI agent may gain access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local files&lt;/li&gt;
&lt;li&gt;shell commands&lt;/li&gt;
&lt;li&gt;browsers&lt;/li&gt;
&lt;li&gt;databases&lt;/li&gt;
&lt;li&gt;SaaS APIs&lt;/li&gt;
&lt;li&gt;internal developer tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is powerful. It is also a meaningful security boundary.&lt;/p&gt;

&lt;p&gt;For example, a single &lt;code&gt;.mcp.json&lt;/code&gt; entry can define a command to run, expose environment variables, grant filesystem access, or connect to a remote endpoint. Tool descriptions can also contain hidden instructions that shape how an agent behaves.&lt;/p&gt;

&lt;p&gt;So I wanted a small check that runs before that connection happens.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Aster Guard MCP does
&lt;/h2&gt;

&lt;p&gt;Aster Guard statically scans MCP and Claude Code configuration files.&lt;/p&gt;

&lt;p&gt;The important part is what it does &lt;strong&gt;not&lt;/strong&gt; do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it does not start the MCP servers it scans&lt;/li&gt;
&lt;li&gt;it does not execute scanned commands&lt;/li&gt;
&lt;li&gt;it does not send telemetry&lt;/li&gt;
&lt;li&gt;it does not call external APIs during normal scans&lt;/li&gt;
&lt;li&gt;it redacts secrets in output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It looks for risk patterns such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hidden agent instructions in tool descriptions&lt;/li&gt;
&lt;li&gt;hardcoded secrets&lt;/li&gt;
&lt;li&gt;sensitive file paths such as &lt;code&gt;.ssh&lt;/code&gt;, cloud credentials, and &lt;code&gt;.env&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;shell execution and dangerous install commands&lt;/li&gt;
&lt;li&gt;destructive commands&lt;/li&gt;
&lt;li&gt;overbroad filesystem access&lt;/li&gt;
&lt;li&gt;unknown remote MCP endpoints&lt;/li&gt;
&lt;li&gt;tool-name shadowing&lt;/li&gt;
&lt;li&gt;obfuscated command patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The output includes a risk score, a grade, findings, and recommended next steps in English and Japanese.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it locally
&lt;/h2&gt;

&lt;p&gt;You can run it without installing anything globally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; @asterworks/aster-guard scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or scan a specific config file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; @asterworks/aster-guard scan .mcp.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use it in GitHub Actions
&lt;/h2&gt;

&lt;p&gt;Now that it is on GitHub Marketplace, you can add it to a workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Aster-Works/aster-guard@v0.3.2&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
    &lt;span class="na"&gt;fail-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;high&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also produce SARIF and upload the result to GitHub code scanning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Aster-Works/aster-guard@v0.3.2&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
    &lt;span class="na"&gt;fail-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;high&lt;/span&gt;
    &lt;span class="na"&gt;sarif&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;results.sarif&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github/codeql-action/upload-sarif@v3&lt;/span&gt;
  &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always()&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;sarif_file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;results.sarif&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where it fits
&lt;/h2&gt;

&lt;p&gt;Aster Guard is not trying to be a full security platform.&lt;/p&gt;

&lt;p&gt;It is not a runtime firewall, antivirus tool, SIEM, or complete supply-chain scanner. It is a narrow pre-connection check for MCP configuration risk.&lt;/p&gt;

&lt;p&gt;That narrow scope is deliberate. I wanted something that individual developers and small teams can run quickly before trusting an unfamiliar MCP server.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would love feedback on
&lt;/h2&gt;

&lt;p&gt;This is still early, so the most useful feedback is practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are the findings easy to understand?&lt;/li&gt;
&lt;li&gt;Does the report help you decide what to do next?&lt;/li&gt;
&lt;li&gt;Are there common MCP configuration risks it should detect?&lt;/li&gt;
&lt;li&gt;Would this be useful in CI, or mainly as a local pre-check?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are experimenting with MCP or Claude Code, I would love for you to try it on a real configuration and open an issue with anything confusing, noisy, or missing.&lt;/p&gt;

&lt;p&gt;Links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Marketplace: &lt;a href="https://github.com/marketplace/actions/aster-guard-mcp" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/aster-guard-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub repository: &lt;a href="https://github.com/Aster-Works/aster-guard" rel="noopener noreferrer"&gt;https://github.com/Aster-Works/aster-guard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/@asterworks/aster-guard" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@asterworks/aster-guard&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>security</category>
      <category>githubactions</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
