Back to Browse

Astgl Knowledge MCP Server

by Jmeg8r
Developer ToolsUse Caution4.2MCP RegistryLocal
Free

Server data from the Official MCP Registry

Search and cite ASTGL articles about MCP servers, local AI, and AI automation.

About

Search and cite ASTGL articles about MCP servers, local AI, and AI automation.

Security Report

4.2
Use Caution4.2High Risk

This is a well-structured MCP server for searching and citing ASTGL knowledge base content. Authentication and rate-limiting are properly implemented via API keys and rate-limit tracking. Code quality is generally good with appropriate input validation. However, there are moderate concerns around error handling in network operations, potential information disclosure through detailed error messages, and the need for better secret handling in environment variable usage. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 3 high severity). Package verification found 1 issue.

4 files analyzed · 12 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

database

Check that this permission is expected for this type of plugin.

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-jmeg8r-astgl-knowledge": {
      "args": [
        "-y",
        "mcp-astgl-knowledge"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

mcp-astgl-knowledge

An MCP server that lets AI assistants search and cite content from As The Geek Learns — covering MCP servers, local AI, AI automation, and ASTGL project documentation.

When an AI assistant connects to this server, it can search the indexed ASTGL entries (articles, tutorials, comparisons, guides, and project docs). Search results include source URLs back to astgl.ai.

Requirement: the semantic tools (search_articles, get_answer, get_tutorial, compare_topics) embed your query at runtime with a local Ollama running nomic-embed-text (default http://localhost:11434). The metadata tools (find_articles, list_tags, list_topics, get_latest) work without Ollama.

Quick Start

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "astgl-knowledge": {
      "command": "npx",
      "args": ["-y", "mcp-astgl-knowledge"]
    }
  }
}

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "astgl-knowledge": {
      "command": "npx",
      "args": ["-y", "mcp-astgl-knowledge"]
    }
  }
}

Cursor / Generic MCP Client

{
  "mcpServers": {
    "astgl-knowledge": {
      "command": "npx",
      "args": ["-y", "mcp-astgl-knowledge"]
    }
  }
}

With Registration (500 queries/day)

Register via the register tool to get an API key, then add it to your config:

{
  "mcpServers": {
    "astgl-knowledge": {
      "command": "npx",
      "args": ["-y", "mcp-astgl-knowledge"],
      "env": {
        "ASTGL_API_KEY": "astgl_your_api_key_here"
      }
    }
  }
}

Tools

search_articles

Search the knowledge base by query. Returns ranked results with relevance scores and source URLs.

ParameterTypeRequiredDescription
querystringYesSearch query (e.g., "how to build an MCP server")
limitnumberNoMax results, 1-20 (default: 5)
content_typestringNoFilter by type: article, tutorial, faq, comparison, guide, newsletter, project

get_answer

Get a direct answer to a specific question. Prefers FAQ entries for concise responses.

ParameterTypeRequiredDescription
questionstringYesA specific question (e.g., "What is an MCP server?")
content_typestringNoFilter by content type

get_tutorial

Get step-by-step instructions from tutorial and guide content.

ParameterTypeRequiredDescription
querystringYesWhat you want to learn (e.g., "setup Ollama on Mac")

compare_topics

Side-by-side comparison of two topics.

ParameterTypeRequiredDescription
topic_astringYesFirst topic
topic_bstringYesSecond topic

get_latest

Get the most recently added content.

ParameterTypeRequiredDescription
limitnumberNoMax results, 1-20 (default: 5)

list_topics

Browse all topics in the knowledge base with content types and section headings.

register

Register your email to unlock 500 queries/day (up from 50).

ParameterTypeRequiredDescription
emailstringYesYour email address

More tools

The server registers 17 tools in total. The others:

ToolWhat it doesMain parameters
find_articlesStructured lookup by tag, type, title text and date range (no embeddings)tag, content_type, title, date_from, date_to
list_tagsEvery tag with its article count—
suggest_ideasTopic suggestions from query analytics (gaps, low-confidence queries)days (default 7), limit
add_idea / list_ideas / export_ideasIdea journal stored alongside the indextitle, description, status, priority, source
export_articleOne article as a markdown posturl
export_topic_roundupRoundup post from related articlestopic, limit
export_qa_compilationFAQ-style markdown from article Q&A pairstopic, limit
generate_dashboard_dataJSON analytics snapshot (optionally written to data/dashboard.json)days (default 30), output_file

Content Types

TypeDescription
articleInformational content about MCP, local AI, automation
projectASTGL project documentation
tutorialStep-by-step how-to guides
comparisonSide-by-side topic analysis
guideComprehensive reference material
newsletterPersonal updates and announcements
faqPrimarily Q&A content
conceptWiki concept pages (only allowlisted pages are public)
entityWiki entity pages (only allowlisted pages are public)

Counts change as content is added; call list_topics or list_tags for the current index. draft and synthesis entries exist only in the maintainer database and are removed from the published one. The content_type descriptions in the tool schemas list only the first seven types.

Rate Limits

TierLimitHow to Get
Public50 queries/dayDefault (anonymous)
Registered500 queries/dayUse the register tool with your email

Limits reset at midnight UTC. Rate limit info is included in every response.

Limits and registrations are enforced by the server process itself: usage and registrations are kept in a local SQLite file (data/query-log.db next to the package, or ASTGL_QUERY_LOG_DB), and anonymous clients get a persistent ID in ~/.astgl-client-id. An ASTGL_API_KEY only counts as registered if it exists in that local registrations table.

How It Works

The knowledge base is pre-built from ASTGL articles using semantic embeddings (nomic-embed-text, 768 dimensions). Content is chunked by section and FAQ entry, embedded, and stored in a SQLite database with sqlite-vec for vector similarity search.

Article embeddings are pre-computed and shipped in the npm package, so you never re-index content. Your query is still embedded at runtime through Ollama for the semantic tools (see the requirement above).

The server opens data/knowledge.db when it exists (a maintainer checkout) and otherwise build/knowledge-public.db. The npm package ships only build/knowledge-public.db, which npm run build-public-db produces by physically removing every non-public row (see docs/adr/).

Performance

  • Typical response time: 100-500ms (embedding lookup + vector search)
  • Embedding results are cached in memory (LRU, 200 entries) — repeated queries are near-instant
  • Ollama calls include 10s timeout + automatic retry
  • Query logging is async/batched to avoid blocking responses
  • Rate limit checks are cached for 5 seconds

For Maintainers

Setup

git clone https://github.com/Jmeg8r/mcp-astgl-knowledge.git
cd mcp-astgl-knowledge
npm install

Scripts

ScriptDescription
npm run buildCompile TypeScript
npm testRun the test suite (node:test via tsx)
npm run devRun MCP server in dev mode (tsx)
npm startRun compiled MCP server
npm run ingestRebuild knowledge.db from local markdown (requires Ollama)
npm run ingest-projectsIndex project docs from astgl-site projects.json
npm run discoverPoll RSS/sitemap for new content
npm run structureProcess discovered content (classify, embed, index)
npm run pipelineDiscover + structure in one step
npm run daily-reportGenerate AEO analytics report
npm run alertsRun content gap alert checks
npm run freshnessCheck for stale content and ecosystem version changes
npm run publish-driftCompare local publishable content against what npm actually serves
npm run citation-testManual AI citation testing
npm run relatedGenerate internal article links via vector similarity
npm run build-public-dbWrite build/knowledge-public.db with non-public rows removed (runs in prepack)

Other maintainer scripts (draft ingest and reconcile, rewrite queue, wiki sync, backup pruning, dashboard data, MCPB bundle) are listed in package.json.

Environment Variables

VariableDefaultDescription
OLLAMA_URLhttp://localhost:11434Ollama endpoint (dev/rebuild only)
EMBED_MODELnomic-embed-textEmbedding model
DISCORD_WEBHOOK_URL—Discord webhook for reports/alerts
ASTGL_API_KEY—Registered tier API key
ASTGL_ARTICLES_DIR~/Projects/astgl-site/src/content/answersLocal markdown source
ASTGL_PROJECTS_JSON~/Projects/astgl-site/src/data/projects.jsonProjects data source
ASTGL_QUERY_LOG_DBdata/query-log.dbQuery log, rate limits and registrations
ASTGL_CITATION_TEST_DBdata/citation-test.dbCitation test results

Automated Jobs

JobSchedulePurpose
Content pipelineEvery 6hDiscover + structure new content
Daily report8 AMQuery analytics + health metrics (JSON report)
Content alerts9 AMGap detection, zero-citation, competitor scan (JSON report)
Freshness check10 AMStale content + ecosystem version tracking (JSON report)
Draft pipelineMidnightIndex pre-publication drafts
Wiki sync00:30Incremental sync of tagged wiki pages into the index
Draft reconciler2 AMRetire draft entries whose source is gone
Citation testing reminderMondays 9 AMReminder to run citation tests

Schedules are defined in cron/*.json; the scheduled report jobs print JSON that an external scheduler picks up and delivers. Run the report scripts with --discord to post to DISCORD_WEBHOOK_URL instead. macOS launchd plists for the pipeline, draft and wiki jobs are in launchd/.

Architecture

flowchart TD
    Client["MCP client<br/>(Claude, Cursor, ...)"] -->|"stdio"| Server["MCP server<br/>src/index.ts (17 tools)"]
    Server --> RL["Rate limit + query log<br/>data/query-log.db"]
    Server --> Search["src/search.ts"]
    Search -->|"embed query"| Ollama["Ollama<br/>nomic-embed-text"]
    Search -->|"sqlite-vec KNN"| KDB[("knowledge.db<br/>or knowledge-public.db")]
    Sources["astgl.ai RSS / sitemap<br/>+ local markdown"] -->|"discover, structure, ingest"| KDB
    KDB -->|"build-public-db"| Pub[("build/knowledge-public.db<br/>(shipped in npm)")]
    Jobs["Report jobs<br/>daily report, alerts, freshness"] -.->|"--discord (manual)"| Discord["Discord webhook"]

A rendered diagram is in docs/diagrams/mcp-astgl-knowledge.architecture.svg (source: docs/diagrams/mcp-astgl-knowledge.architecture.json).

License

MIT

Reviews

No reviews yet

Be the first to review this server!