npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

markdown-mcp-resource

v1.0.2

Published

MCP server that makes remote markdown files available as mcp resources

Readme

markdown-mcp-resource

MCP server that makes remote markdown files available as MCP resources.

Overview

This MCP (Model Context Protocol) server enables AI assistants to access and read markdown documentation from remote URLs. It fetches markdown files listed in a remote JSON index file and makes them available as resources that can be queried and retrieved by MCP-compatible clients.

How It Works

The server:

  1. Takes a base URL to a JSON index file as a command-line argument (e.g., https://my-documentation.com/mcp/index.json)
  2. Expects the index file to contain a list of available markdown files and their routes
  3. Exposes these files as MCP resources with the URI pattern markdown://{hostname}/{filename}
  4. Caches fetched content in memory to improve performance
  5. Provides both resource listing, path completion, and direct content retrieval capabilities

Remote Asset Structure

Your documentation site must be structured as follows:

Required: index.json File

Schema Reference: The expected format for index.json is formally described in the schema.json file in this repository.

The base URL must point to an index.json file that lists all available markdown files and their full HTTP(S) routes, for example:

{
  "$schema": "https://raw.githubusercontent.com/pawcoding/markdown-mcp-resource/refs/heads/master/schema.json",
  "title": "My Documentation",
  "description": "Example documentation index",
  "files": [
    {
      "name": "getting-started",
      "route": "https://your-site.com/docs/getting-started.md"
    },
    {
      "name": "api-reference",
      "route": "https://your-site.com/docs/api-reference.md"
    },
    {
      "name": "tutorials/basic-setup",
      "route": "https://your-site.com/docs/tutorials/basic-setup.md"
    },
    {
      "name": "tutorials/advanced-config",
      "route": "https://your-site.com/docs/tutorials/advanced-config.md"
    },
    {
      "name": "troubleshooting",
      "route": "https://your-site.com/docs/troubleshooting.md"
    }
  ]
}

Markdown Files

Each file listed in the index must be available at the full HTTP(S) URL specified in the route field:

https://your-site.com/docs/
├── index.json            # Lists all available files and their full HTTP(S) routes
├── getting-started.md    # Individual markdown files
├── api-reference.md
├── tutorials/
│   ├── basic-setup.md
│   └── advanced-config.md
└── troubleshooting.md

Important Notes:

  • File names in the name field of the index should NOT include the .md extension; the route field must be a full HTTP(S) URL to the markdown file and include the .md extension
  • Subdirectories are supported (e.g., tutorials/basic-setup)

MCP Client Configuration

OpenCode Configuration

Add this to your OpenCode configuration file (replace with the full URL to your index.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-documentation": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "markdown-mcp-resource@latest",
        "https://my-documentation.com/mcp/index.json"
      ],
      "enabled": true
    }
  }
}

Claude Desktop Configuration

Add this to your Claude Desktop configuration (replace with the full URL to your index.json):

{
  "mcpServers": {
    "markdown-docs": {
      "command": "npx",
      "args": [
        "-y",
        "markdown-mcp-resource@latest",
        "https://your-documentation-site.com/docs/index.json"
      ]
    }
  }
}

Generic MCP Client

For other MCP clients, use the command (replace with the full URL to your index.json):

npx markdown-mcp-resource@latest https://your-documentation-site.com/docs/index.json

Usage Examples

1. Setting Up Documentation

Create an index.json file on your web server:

{
  "$schema": "https://raw.githubusercontent.com/pawcoding/markdown-mcp-resource/refs/heads/master/schema.json",
  "files": [
    {
      "name": "introduction",
      "route": "https://yoursite.com/docs/introduction.md"
    },
    {
      "name": "installation",
      "route": "https://yoursite.com/docs/installation.md"
    },
    {
      "name": "configuration",
      "route": "https://yoursite.com/docs/configuration.md"
    },
    {
      "name": "api/authentication",
      "route": "https://yoursite.com/docs/api/authentication.md"
    },
    {
      "name": "api/endpoints",
      "route": "https://yoursite.com/docs/api/endpoints.md"
    },
    { "name": "examples", "route": "https://yoursite.com/docs/examples.md" },
    {
      "name": "troubleshooting",
      "route": "https://yoursite.com/docs/troubleshooting.md"
    }
  ]
}

Ensure corresponding markdown files exist:

  • https://yoursite.com/docs/introduction.md
  • https://yoursite.com/docs/installation.md
  • https://yoursite.com/docs/api/authentication.md
  • etc.

2. Querying Available Resources

Once configured, your MCP client can:

  • List all available markdown resources
  • Retrieve specific markdown content
  • Search through available documentation files

3. Example Interaction

User: "What documentation is available?"
Assistant: [Lists all files from index.json]

User: "Show me the installation guide"
Assistant: [Retrieves and displays installation.md content]

Features

  • Resource Discovery: Automatically lists available documentation from index.json
  • Content Caching: Improves performance by caching fetched markdown files
  • Path Completion: Supports auto-completion of file paths
  • Error Handling: Graceful handling of missing files or network issues
  • Subdirectory Support: Organize documentation in nested folders

Troubleshooting

Common Issues

Error: "Invalid base path"

  • Ensure the base URL starts with http:// or https:// and points to your index.json
  • Example: https://docs.example.com/index.json not docs.example.com

No resources found

  • Verify index.json exists at the base URL
  • Check that index.json contains a files array with file names and routes
  • Ensure file names in the name field don't include .md extension

Failed to fetch file

  • Verify the markdown files exist at the expected URLs
  • Check for CORS issues if accessing from browser environments
  • Ensure proper HTTP headers are set on your web server

Performance Issues

  • Consider enabling HTTP caching headers on your web server
  • The MCP server caches content in memory during the session

Testing Your Setup

  1. Verify your index.json is accessible:

    curl https://your-site.com/docs/index.json
  2. Test individual markdown files:

    curl https://your-site.com/docs/getting-started.md
  3. Run the MCP server directly:

    npx markdown-mcp-resource@latest https://your-site.com/docs/index.json
  4. Use the MCP Inspector for interactive testing:

    Visit https://modelcontextprotocol.io/legacy/tools/inspector to test your MCP server interactively in a web interface.

Development

Local Development

git clone https://github.com/pawcoding/markdown-mcp-resource.git
cd markdown-mcp-resource
npm install
npm run build
npm start https://your-test-site.com/docs/

Visit https://modelcontextprotocol.io/legacy/tools/inspector to test your MCP server interactively in a web interface.

Building

npm run build

Formatting

npm run format

License

MIT - see LICENSE file for details.