Click 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., "@MCP Markdown Templateload templates from my local directory at /home/user/project/templates and create API endpoints"
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.
π Core Idea
Transform markdown templates (like GitHub Issue templates) into MCP tools automatically. Write a template once, get both a FastAPI endpoint and an MCP tool.
ποΈ Architecture
mcp_tools/
βββ models.py # Data models (Template, TemplateVariable)
βββ loader.py # Load templates from files, directories, URLs
βββ parser.py # Extract variables & render with Jinja2
βββ generator.py # Create FastAPI endpoints dynamically
βββ server.py # FastMCP server with CORSHow it works:
Load - Fetch templates from local files, directories, or URLs
Parse - Extract
<variables>and metadata from YAML frontmatterGenerate - Create typed FastAPI endpoints with Pydantic models
Serve - Expose as both REST API (
/api/docs) and MCP tools (/mcp)
π Features
Auto-generate MCP tools from markdown templates
Multiple sources - Load from local files, directories, or URLs
Swagger UI - Test endpoints at
/api/docsDocker ready - Production-ready container setup
CI/CD - GitHub Actions for automated workflows
π οΈ Getting Started
Local Development
Install dependencies:
uv syncRun the MCP server:
uv run uvicorn mcp_tools.main:starlette_app --host 127.0.0.1 --port 8000Docker
Build the Docker image:
docker build -t docker.io/username/mcp-markdown-template:latest .Run the container with various template sources:
# Mount local templates directory
docker run -i --rm -p 8000:8000 \
-v /path/to/your/templates:/app/templates \
-e MCP_TEMPLATES_SOURCE=/app/templates \
docker.io/hsiangjenli/mcp-markdown-template:latest# Load from URL (GitHub raw URL)
docker run -i --rm -p 8000:8000 \
-e MCP_TEMPLATES_SOURCE=https://raw.githubusercontent.com/hsiangjenli/mcp-markdown-template/refs/heads/main/.github/ISSUE_TEMPLATE/demo.md \
docker.io/hsiangjenli/mcp-markdown-template:latest# Multiple sources (comma-separated)
docker run -i --rm -p 8000:8000 \
-e MCP_TEMPLATES_SOURCE="/app/templates,https://raw.githubusercontent.com/owner/repo/main/template.md" \
-v /path/to/local/templates:/app/templates \
docker.io/hsiangjenli/mcp-markdown-template:latestMCP Server configuration (for Claude Desktop, etc.):
{
"servers": {
"markdown-template": {
"url": "http://localhost:8000/mcp",
"type": "http"
}
},
"inputs": []
}Template Sources
Format | Example |
Local directory |
|
Local file |
|
URL |
|
Multiple |
|
Environment Variables
Variable | Default |
|
|
|
|
|
|
π Documentation
Build docs locally:
scripts/build_docs.sh && uv run mkdocs build