m-dev-tools-mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@m-dev-tools-mcpfind a JSON parser in M"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
m-dev-tools-mcp
MCP server for the m-dev-tools org catalog. Exposes three first-class agent tools:
route_intent(query)— plain-English intent → typed IDs (e.g."parse JSON in M"→module:m-stdlib#STDJSON)describe(typed_id)— typed ID → pointer-blob (manifest URL,AGENTS.mdURL, verification commands, …)verify(repo)— list a repo's declared verification commands (does not execute them)
The server reads the catalog at https://github.com/m-dev-tools/.github over the network at call time; it is a thin wrapper, not a cache. See AGENTS.md for the contract and the AI users guide for the full walk-through.
mcp-name: io.github.m-dev-tools/m-dev-tools-mcp
Install
pip install m-dev-tools-mcp
# or:
uvx m-dev-tools-mcp
# or from a GitHub Release wheel:
pip install https://github.com/m-dev-tools/m-dev-tools-mcp/releases/download/v0.2.4/m_dev_tools_mcp-0.2.4-py3-none-any.whlPoint any MCP client at the m-dev-tools-mcp binary the install provides:
{
"mcpServers": {
"m-dev-tools": { "command": "m-dev-tools-mcp" }
}
}Or for clients that consult the public MCP registry:
io.github.m-dev-tools/m-dev-tools-mcpRelated MCP server: MCP Enterprise Tools Server
Develop
make install # creates .venv and installs editable + dev deps
make test # pytest
make check # lint + mypy + test + check-manifest + check-agents
make build # → wheel-out/m_dev_tools_mcp-<ver>-py3-none-any.whlMore
Architecture: m-dev-tools/.github's
docs/ai-discoverability/AI-discoverability-architecture.mdPlan + phases:
docs/ai-discoverability/phases/Release process: tag
vX.Y.Zonmain→.github/workflows/release.ymlbuilds the wheel, attaches it to a GitHub Release, publishes to PyPI via Trusted Publisher OIDC, and updates the MCP registry record via GitHub OIDC.
License
AGPL-3.0. Same license as every other m-dev-tools repo.
Available Tools
3 toolsdescribeA
Return a pointer-blob for a typed ID.
Supported kinds: tool: / module: / cmd: / recipe:.
Does not inline payloads — returns URLs the caller should
fetch next, keeping the catalog's "pointers, not facts"
invariant.
| Name | Required | Description | Default |
|---|---|---|---|
| typed_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that it does not inline payloads, returns URLs for fetching, and maintains a 'pointers, not facts' invariant. This is clear and helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action, no extraneous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a simple retrieval tool with one parameter and an output schema. It covers what the tool does and its return format. Minor gap: no mention of potential errors or preconditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning by explaining the typed_id format and supported kinds. It compensates for the lack of schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a pointer-blob for a typed ID, lists supported kinds, and explains the pointer philosophy. It is specific and distinguishes from siblings which are different tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like route_intent or verify. The description does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_intentA
Return typed IDs matching the plain-English intent.
Example: route_intent("parse JSON in M") returns
["module:m-stdlib#STDJSON"]. Results are [primary, *see_also] from the matched task_index row.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return format (typed IDs, primary, see_also) and gives an example. It does not mention error handling or edge cases, but for a simple lookup tool, this is acceptable given no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is remarkably concise: two sentences and one example. Every sentence adds value, and the example is placed immediately after the purpose statement, aiding quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter and the presence of an output description (though not a formal schema), the description covers the essential behavior. Lacks details on no-match scenarios but is otherwise complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only a parameter name; the description fully compensates by explaining 'query' as a plain-English intent and illustrating with an example. This adds critical meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns typed IDs matching plain-English intent. The example reinforces the purpose, and the sibling tools (describe, verify) have distinct purposes, making this tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when-to-use or when-not-to-use is given, the description's clarity and the distinct sibling names make the tool's usage intuitive. The example provides concrete usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verifyA
List the verification_commands declared in a repo's
repo.meta.json.
Accepts either a bare repo slug (m-cli) or a typed ID
(tool:m-cli). Does NOT execute the commands.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the tool lists data and does not execute commands, implying read-only behavior. However, it lacks details on permissions, side effects, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the purpose and adding essential input format and behavior notes without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description provides sufficient context for usage. It could mention the location of repo.meta.json, but overall it is complete for its function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining the 'repo' parameter accepts bare slugs or typed IDs, adding meaning beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'verification_commands' from a 'repo.meta.json' file, using the verb 'list' and specifying the resource. It distinguishes itself from sibling tools (describe, route_intent) by focusing on a specific listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains accepted input formats (bare slug or typed ID) and notes that commands are not executed. However, it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear, distinct purpose: describe returns pointers for typed IDs, route_intent maps natural language to IDs, and verify lists repo verification commands. No overlap is evident.
All tool names are single imperative verbs or verb_noun pairs (route_intent). The naming pattern is consistent and predictable, with no mixed conventions.
With only 3 tools, the set is on the lower end of the typical 3-15 range, but each tool serves a focused role within the catalog domain. Slightly thin but not insufficient.
The tools cover key query operations (describing, routing, verifying) for the catalog. Missing a tool to list all known kinds or types, but route_intent partially addresses this gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA generic MCP server that exposes local repository checkouts, allowing users to search and read code and documentation through natural language. It supports multiple instances, enabling seamless interaction with various codebases via configurable tool prefixes and URI schemes.2,013MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP-based enterprise tools server that exposes company knowledge search and employee database lookup as callable tools.
- AlicenseBqualityBmaintenanceMCP server wrapping Backstage — query service catalog, fetch TechDocs, and scaffold services via AI agents.7Apache 2.0
- FlicenseNot gradedqualityBmaintenanceMCP server for AI DevTool workflow, exposing tools and resources for code review, repository chat, and repository operations.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/m-dev-tools/m-dev-tools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server