SkillAgentSearch skills...

m3

Test your MCP server through real agents: Claude Code, Codex, OpenCode and Pi.

Install / Use

claude mcp add sineframe -- npx -y github:sineframe/m3

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

73/100

Supported Platforms

Claude Code
Claude Desktop
OpenAI Codex

Our assessment of m3

m3 scores 73/100 on our quality scale, 3733rd of 4,624 Development & Engineering skills we index.

Its MCP Server is 7.2 KB long, split into 5 sections with 13 code examples: a thorough specification that gives an agent plenty to work with.

It has 10 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
29/30
Structure
18/20
Description
12/15
Adoption
4/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 8 days ago, so m3 is actively maintained.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

m3 compared with similar skills

All 4 of these similar skills score higher than m3; compare them before choosing.

SkillScoreStarsUpdatedFormat
m3 (this skill)by sineframe73108d agoMCP Server
taste-skillby Leonxlnx100111.3k2d agoCLAUDE.md
Agent-Reachby Panniantong100109.7ktodayCLAUDE.md
headroomby headroomlabs-ai10079.0ktodayCLAUDE.md
ai-job-searchby ai-job-search-dev10070.1k1d agoCLAUDE.md

Frequently asked questions

How do I install m3?
Run claude mcp add sineframe -- npx -y github:sineframe/m3. The install tabs above show the steps for each supported agent.
Which AI agents does m3 work with?
It is written for Claude Code, Claude Desktop and OpenAI Codex, as a MCP Server file. Other agents that read the same format can often use it too.
Is m3 safe to use?
It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is m3 still maintained?
The repository was last updated 8 days ago, so m3 is actively maintained.
<picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/banners/m3-protocol-dark.svg"> <img src="docs/assets/banners/m3-protocol-light.svg" alt="M3 — Tests for MCP servers and the agents that use them." width="1200" height="360"> </picture>

CI

M3 tests MCP servers and the agents that use them. It runs Python and pytest tests, captures MCP evidence, and can save runs for inspection and comparison.

<img width="2150" height="1568" alt="demo" src="https://github.com/user-attachments/assets/786c68d9-d2d0-4fa6-92c8-4f4ba5d62f5c" /> <p><strong>Test your MCP with</strong></p> <table> <tr> <td align="center" width="110"> <a href="https://m3.sineframe.com/docs/guides/agents/harnesses"> <img src="docs/assets/harnesses/claude-code.svg" alt="" width="32" height="32"> <br>Claude Code </a> </td> <td align="center" width="110"> <a href="https://m3.sineframe.com/docs/guides/agents/harnesses"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/harnesses/codex-dark.svg"> <img src="docs/assets/harnesses/codex.svg" alt="" width="32" height="32"> </picture> <br>Codex </a> </td> <td align="center" width="110"> <a href="https://m3.sineframe.com/docs/guides/agents/harnesses"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/harnesses/opencode-dark.svg"> <img src="docs/assets/harnesses/opencode.svg" alt="" width="32" height="32"> </picture> <br>OpenCode </a> </td> <td align="center" width="110"> <a href="https://m3.sineframe.com/docs/guides/agents/harnesses"> <img src="docs/assets/harnesses/pi.svg" alt="" width="32" height="32"> <br>Pi </a> </td> <td align="center" width="110"> <a href="https://m3.sineframe.com/docs/guides/agents/acp"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/harnesses/acp-dark.svg"> <img src="docs/assets/harnesses/acp.svg" alt="" width="64" height="32"> </picture> <br>ACP agents </a> </td> </tr> </table>

What a test looks like

A test gives an agent a prompt and your MCP server. M3 records every MCP call the agent makes, so the test can check the calls, not only the answer.

import sys

import pytest
from m3 import StdioServer, expect

pytestmark = pytest.mark.m3(agents=[{"harness": "claude-code", "models": ["claude-sonnet-5-5"]}])

registry = StdioServer(name="registry", command=sys.executable, args=("registry_server.py",))


def test_adds_current_tailwind(agent):
    result = agent.run("Add Tailwind to this project.", server=registry)
    expect(result).to_have_tool_call("get_latest_version", arguments={"package": "tailwindcss"})

If the agent answers from memory and never calls the server, the test fails. The fix is usually the tool description, not the test:

 @mcp.tool(
-    description="Get package info",
+    description="Current published version of a package. Call before adding "
+    "or upgrading a dependency; your training data is out of date.",
 )
 def get_latest_version(package: str) -> str:
<details> <summary>Database: look up the schema before querying</summary>
def test_revenue_by_month(agent):
    result = agent.run("Show me revenue by month.", server=db)
    expect(result).to_have_tool_calls(["describe_table", "query"])
 @mcp.tool(
-    description="Run a SQL query",
+    description="Run a read-only SQL query. Call describe_table first; "
+    "column names are specific to this database.",
 )
 def query(sql: str) -> list[list]:
</details> <details> <summary>Your API: find the endpoint instead of guessing it</summary>
def test_last_weeks_orders(agent):
    result = agent.run("Get last week's orders from our API.", server=api)
    expect(result).to_have_tool_calls(["find_endpoint", "call_endpoint"])
 @mcp.tool(
-    description="Search the API spec",
+    description="Look up the real path before calling any endpoint. "
+    "Paths are specific to this API; don't guess them.",
 )
 def find_endpoint(query: str) -> str:
</details>

Put ANTHROPIC_API_KEY in .env at the project root, then run the tests:

m3 test -- tests

Run the same tests with another agent, or several times to get a pass rate. --trials repeats tests that take the agent fixture, like the ones above; other tests run once.

m3 test --harness codex=gpt-5.6-sol -- tests
m3 test --trials 5 -- tests

Install and start

Install the CLI with uv:

uv tool install sf-m3-cli

On macOS or Linux, the shell installer is an alternative:

curl -LsSf https://m3.sineframe.com/install.sh | sh

Then initialize your project:

m3 init
m3 setup
m3 doctor

Then follow the first MCP test. It uses a local server and needs no model credentials.

Agent skill

m3 init and m3 setup install the testing-with-m3 agent skill for the installed M3 release. To install it yourself:

npx --yes skills@1.7.0 add sineframe/m3#vVERSION --skill testing-with-m3 --agent universal claude-code -y

VERSION is the output of m3 --version. See the agent skill guide.

Submitting a server to the Claude, OpenAI or Muse directory? Install the preparing-directory-submissions skill the same way, with --skill preparing-directory-submissions. It runs m3 lint --directory, does the checks that need judgment and writes one readiness report; see Prepare a directory submission.

Documentation

The SDK and CLI use separate environments. The CLI runs pytest in the project environment and saves history; tests import the SDK.

Development

Read Architecture, then use the package README for the area you are changing. Documentation changes follow the documentation writing guide.

just setup
just test-all
just lint
just format-check

M3 is licensed under Apache-2.0.

Related Skills

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated8d ago
Forks5

Languages

Python

Trust signals

80/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium1 low1 info
m3 — MCP Server: Install & Safety Check | SkillAgent