Model Context Protocol (MCP) server providing AI assistants with access to Noundry documentation, code examples, and project scaffolding capabilities. Works with Claude Code, Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.
NoundryMCP is a hosted MCP server that integrates with Claude Desktop, Claude Code, and other MCP-compatible AI clients. It gives AI assistants the ability to search Noundry documentation, retrieve code examples, and help you scaffold new Noundry projects directly from your conversations. No API keys or authentication required for public documentation access.
Loads and parses markdown files with YAML frontmatter, converts to HTML using Markdig with advanced extensions.
Intelligent search with relevance ranking across all Noundry documentation. Returns snippets and relevance scores.
Automatically detects and reloads documentation when files change (2-second debounce). No server restarts needed.
Supports titles, descriptions, tags, and more via YAML frontmatter for precise filtering and discovery.
$ claude mcp add --transport http noundry-docs https://mcp.noundry.ai/mcp
Add to your MCP configuration file:
{
"mcpServers": {
"noundry": {
"url": "https://mcp.noundry.ai/mcp"
}
}
}
For self-hosted instances that require API key authentication:
{
"mcpServers": {
"noundry-docs": {
"type": "http",
"url": "https://mcp.noundry.ai/mcp",
"headers": {
"Authorization": "Bearer ${NOUNDRY_API_KEY}"
}
}
}
}
%APPDATA%\Claude\claude_desktop_config.json
~/Library/Application Support/Claude/claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
List all available documentation files with optional keyword filtering by title, description, tags, or filename.
// Example call
ListDocs filter="api"
// Response
{
"totalCount": 5,
"filter": "api",
"docs": [
{
"fileName": "api-reference",
"title": "API Reference",
"description": "Complete API documentation",
"tags": ["api", "reference"],
"lastModified": "2025-10-04 10:30:00"
}
]
}
Retrieve the full content of a specific document by filename (without .md extension). Returns both markdown and rendered HTML.
// Example call
GetDoc docName="getting-started"
// Response
{
"metadata": {
"fileName": "getting-started",
"title": "Getting Started",
"tags": ["intro", "setup"]
},
"content": {
"markdown": "# Getting Started\n\n...",
"html": "<h1>Getting Started</h1>..."
}
}
Full-text search with relevance ranking. Returns snippets and relevance scores. Maximum 20 results.
// Example call
SearchDocs query="authentication" maxResults="10"
// Response
{
"query": "authentication",
"resultCount": 3,
"results": [
{
"fileName": "auth-guide",
"title": "Authentication Guide",
"snippet": "...authentication process...",
"relevance": 150.5
}
]
}
Get statistics about the documentation collection including document count, tag distribution, and recently modified files.
// Response
{
"totalDocuments": 42,
"totalTags": 15,
"mostCommonTags": [
{ "tag": "api", "count": 12 },
{ "tag": "guide", "count": 8 }
],
"recentlyModified": [...]
}
Manually reload all documentation files from disk. Useful when auto-reload is disabled or to force immediate refresh without waiting for the 2-second debounce timer.
// Response
{
"success": true,
"message": "Documentation reloaded successfully",
"documentCount": 42
}
Documents should include YAML frontmatter for rich metadata. If no frontmatter is provided, the first H1 heading will be used as the title.
---
title: Document Title
description: Brief description of the document
tags: tag1, tag2, tag3
---
# Document Content
Your markdown content here...
| Endpoint | Method | Auth | Description |
|---|---|---|---|
/ |
GET | No | Server information and usage examples |
/mcp |
POST | Yes | MCP protocol endpoint for tool calls |
/health |
GET | No | Health check endpoint |
Once connected, your AI assistant can use NoundryMCP tools transparently. Just ask natural language questions about Noundry:
You: "How do I add input validation to my ASP.NET Core app?"
Claude: Searches documentation and provides Noundry.Sod validation examples with setup instructions.
You: "Create a new web API project with Noundry"
Claude: Provides commands to install templates and scaffold a new API project with authentication.
You: "Show me how to use Noundry.DotEnvX for environment variables"
Claude: Retrieves code examples showing configuration, encryption, and validation setup.
You: "What Noundry packages are available for database access?"
Claude: Lists Tuxedo ORM, Connector, Slurp, and Bowtie with feature summaries and installation commands.
Extend NoundryMCP with your own MCP tools by adding methods to the tools class:
[McpServerTool]
[Description("Your tool description")]
public string YourTool(
[Description("Parameter description")] string param)
{
var result = _docsService.YourMethod(param);
return JsonSerializer.Serialize(result, JsonOptions);
}
Ensure the path in appsettings.json points to a valid directory containing markdown files.
Check that the Authorization header matches one of the keys in the ApiKeys array. Both Bearer <key> and raw key formats are accepted.
Verify markdown files exist in the configured path, check file permissions, and look for parsing errors in application logs.
Change the port in appsettings.json under Kestrel:Endpoints.
# Build the Docker image
$ docker build -t noundry-mcp .
# Run with mounted docs and API key
$ docker run -d -p 80:80 -p 443:443 \
-v /path/to/docs:/docs \
-e NoundryDocs__Path=/docs \
-e ApiKeys__0=your-api-key \
noundry-mcp