An MCP server that provides utility tools for markdown processing, including ADF-to-markdown conversion, table formatting, and table of contents management.
SaferSkills independently audited Tools MCP Server (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP (Model Context Protocol) server that exposes a collection of utility tools for AI agents. This modular server allows agents to perform complex operations through well-defined tool interfaces.
Supports all ADF elements including panels, tables, media, mentions, code blocks, and more.
npm install
npm run buildAdd the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"toolkit": {
"command": "node",
"args": ["/absolute/path/to/tools-mcp-server/build/index.js"]
}
}
}Important: Use absolute paths, not relative paths.
After updating the configuration, fully quit Claude Desktop (Cmd+Q on macOS) and reopen it.
Edit ~/.claude.json and add the server under the mcpServers key. This makes the server available in all projects without per-project approval prompts:
{
"mcpServers": {
"toolkit": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/tools-mcp-server/build/index.js"]
}
}
}Alternatively, add a .mcp.json file to your project root for project-specific access:
{
"mcpServers": {
"toolkit": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/tools-mcp-server/build/index.js"]
}
}
}After adding the config, restart Claude Code (exit then claude).
| Tool | Description | Parameters |
|---|---|---|
markdown_adf_to_markdown | Convert ADF JSON to Extended Markdown | adf (ADF document object) |
markdown_markdown_to_adf | Convert Extended Markdown to ADF JSON | markdown (string) |
markdown_format_tables | Format tables with aligned columns | markdown (string) |
markdown_refresh_toc | Refresh existing TOC to match current headings | markdown (string), minLevel?, maxLevel? |
markdown_generate_toc | Generate TOC from headings (without inserting) | markdown (string), minLevel?, maxLevel? |
markdown_insert_toc | Replace /toc markers with generated TOC | markdown (string), minLevel?, maxLevel? |
markdown_format | Combined formatting (tables + /toc + TOC refresh) | markdown (string), formatTables? (bool), processTOC? (bool) |
Once configured, you can ask Claude:
{
"name": "markdown_adf_to_markdown",
"arguments": {
"adf": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{ "type": "text", "text": "Hello " },
{ "type": "text", "text": "World", "marks": [{ "type": "strong" }] }
]
}
]
}
}
}Returns: Hello **World**
{
"name": "markdown_markdown_to_adf",
"arguments": {
"markdown": "# Heading\n\nThis is a **bold** statement."
}
}Returns a complete ADF document structure.
Input:
| Name | Age | City |
|---|---|---|
| Alice | 30 | New York |
| Bob | 25 | Los Angeles |Output:
| Name | Age | City |
| ----- | --- | ----------- |
| Alice | 30 | New York |
| Bob | 25 | Los Angeles |Input document with headings:
# Main Title
## Section 1
### Subsection 1.1
## Section 2Generated TOC:
- [Main Title](#main-title)
- [Section 1](#section-1)
- [Subsection 1.1](#subsection-11)
- [Section 2](#section-2)Input:
# My Document
/toc
## Introduction
Content here...
## Conclusion
Final thoughts.Output:
# My Document
- [My Document](#my-document)
- [Introduction](#introduction)
- [Conclusion](#conclusion)
## Introduction
Content here...
## Conclusion
Final thoughts.# Install dependencies
npm install
# Build TypeScript
npm run build
# Run the server (for testing)
npm start
# Format code
npm run format
# Lint code
npm run lintsrc/tools/ (e.g., src/tools/json/)tools array and handleTool functionsrc/index.tsnpx @modelcontextprotocol/inspector node build/index.jsMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.