Skip to main content
Glama

AI Ops Hub

An MCP server that gives AI assistants safe, sandboxed hands on your machine — notes, tasks, web pages, and hybrid search (FTS5 + embeddings) over a personal document corpus. Built with TypeScript, SQLite, and a security-first design.

CI TypeScript Node License: MIT

MCP (Model Context Protocol) is the open standard that lets AI clients like Claude Desktop call external tools. This server implements it twice from one codebase: over stdio for local clients and over HTTP for remote access.

What it looks like in practice

Once connected to Claude Desktop, conversations like this just work:

You: Find my notes about the Postgres migration and add a task to finish it by Friday.

Claude:rag_search("postgres migration") — 3 matching chunks from your corpus → task_create("Finish Postgres migration", due: "2026-07-31") "Found your migration notes — the remaining step was the index rebuild. Task created for Friday."

Every step happens inside the sandbox you configured: Claude can only touch the notes directory you allowed, only fetch from hosts you allowlisted, and only through the tools below.

Related MCP server: KnowledgeMCP

Tools

Tool

What it does

rag_search

Search the corpus — keyword (FTS5), vector (embeddings), or hybrid (both, fused with Reciprocal Rank Fusion)

rag_add_document

Add or update a document: auto-chunked, FTS-indexed, embedded when vector search is configured

rag_stats

Corpus statistics: documents, chunks, embeddings, backend availability

file_read / file_write / file_list

Notes access — sandboxed to NOTES_DIR, allowlisted extensions only

web_fetch

Fetch a page from allowlisted hosts only, stripped to clean text (cheerio)

task_create / task_list / task_complete

Tasks stored as plain, human-editable markdown

Hybrid search is the default when OPENAI_API_KEY is set: FTS5 and cosine-similarity results are merged with Reciprocal Rank Fusion — rank-based fusion that needs no score normalization between bm25 and cosine scales. If the vector backend fails mid-query, hybrid degrades gracefully to keyword results.

Security model

Local tool access for an LLM is a security problem before it is anything else. The interesting engineering here:

  • Path sandboxing that survives the classic bypasses. Every path resolves against NOTES_DIR; absolute paths, ../ traversal, and the sibling-prefix bypass (notes vs notes-evil — a bug most naive startsWith checks have) are rejected. Extension allowlist is enforced on both read and write.

  • Web fetching is deny-by-default. web_fetch refuses any host not in WEB_ALLOWED_HOSTS. Subdomains of allowed hosts pass; lookalikes (example.com.evil.com) do not. HTTP(S) only.

  • The protocol channel stays clean. All logging goes to stderr — on a stdio MCP server, stdout belongs to JSON-RPC and a single stray console.log corrupts the stream.

  • Typed failure paths. The persistence layer returns neverthrow Result types instead of throwing; inputs are validated with zod.

All of this is pinned down by 45 unit tests targeting exactly these properties — traversal attempts, prefix bypasses, lookalike domains, protocol filtering, rank fusion, and registry dispatch — running in CI on Node 20 and 22.

Architecture

Both transports consume one ToolRegistry — a single source of truth for tool definitions and dispatch, so the stdio and HTTP surfaces can never drift apart.

flowchart LR
    CD[Claude Desktop] -- "stdio (JSON-RPC)" --> REG[ToolRegistry<br/>definitions + dispatch]
    RC[Remote client] -- "HTTP :3333" --> REG
    REG --> FS["FileService<br/>sandboxed notes"]
    REG --> WS["WebService<br/>allowlisted fetch"]
    REG --> TS["TaskService<br/>markdown store"]
    REG --> RAG["RAGService<br/>keyword | vector | hybrid"]
    RAG -- "FTS5 (bm25)" --> POOL["ConnectionPool"]
    RAG -- "embeddings + cosine" --> VEC["VectorRAGService"]
    VEC --> POOL
    RAG -- "RRF fusion" --> RAG
    POOL --> DB[("SQLite<br/>docs + chunks<br/>chunks_fts + chunk_vecs")]
src/
  server.ts               MCP entrypoint (SDK 1.x): wires services into the registry
  tools/
    registry.ts           single source of truth: tool schemas + dispatch
  transports/
    http-transport.ts     thin HTTP facade over the registry: /health, /tools, /call, /status
  connectors/
    file-service.ts       sandboxed file access
    web-service.ts        allowlisted web fetching + HTML cleaning
    task-service.ts       markdown-backed task store
  rag/
    rag-service.ts        search facade: keyword / vector / hybrid modes
    fusion.ts             Reciprocal Rank Fusion (pure, unit-tested)
    sqlite-client.ts      SQLite persistence: FTS5, chunking, migrations (neverthrow API)
    vector-rag-service.ts vector search with OpenAI embeddings
    embedding-service.ts  embedding generation (text-embedding-3-small)
  db/
    connection-pool.ts    SQLite connection pooling

Quick start

git clone https://github.com/Galiusbro/ai-ops-hub.git && cd ai-ops-hub
npm install
cp .env.example .env    # adjust paths and allowlist
npm run build

npm start               # stdio only (for Claude Desktop)
npm run start:http      # stdio + HTTP facade on :3333

The HTTP facade is opt-in (--http flag or HTTP_ENABLED=1) so that MCP clients can spawn multiple server instances without port clashes.

Connect to Claude Desktop

{
  "mcpServers": {
    "ai-ops-hub": {
      "command": "node",
      "args": ["/absolute/path/to/dist/server.js"],
      "env": {
        "NOTES_DIR": "/path/to/your/notes",
        "RAG_DB_PATH": "/path/to/your/rag.db"
      }
    }
  }
}

Or talk to it over HTTP

curl http://localhost:3333/health
curl http://localhost:3333/tools
curl -X POST http://localhost:3333/call \
  -H "Content-Type: application/json" \
  -d '{"name":"rag_search","arguments":{"query":"postgres migration"}}'

Configuration

Variable

Default

Purpose

NOTES_DIR

./notes

Directory the file tools are sandboxed to

TASKS_FILE

./tasks.md

Markdown file behind the task tools

RAG_DB_PATH

./data/rag.db

SQLite database for the corpus

WEB_ALLOWED_HOSTS

example.com,developer.mozilla.org

Comma-separated allowlist for web_fetch

HTTP_PORT

3333

HTTP transport port

OPENAI_API_KEY

Enables vector + hybrid search (embeddings)

Development

npm run dev          # run from source (tsx)
npm test             # vitest unit suite
npm run type-check   # tsc --noEmit
npm run lint

Roadmap

  • MCP server over stdio + HTTP

  • Sandboxed file / web / task tools

  • SQLite FTS5 corpus with trigger-synced index

  • Unit tests for the security-critical paths + CI

  • Shared tool registry between the two transports

  • Vector search wired in: hybrid mode with Reciprocal Rank Fusion

  • @modelcontextprotocol/sdk 1.x

  • Streamable HTTP transport from the SDK (replace the custom REST facade)

  • Audit logging

  • Local embedding backend as an alternative to OpenAI

Why this exists

I built this to understand MCP from the inside — the protocol, the transports, and what it actually takes to hand an LLM safe access to a real machine. It grew into a working local-first assistant backend: the FTS5 corpus, the sandboxing, and the test suite are the parts I'd reuse in production.

License

MIT

Available Tools

7 tools
file_readC

Читать содержимое файла

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesПуть к файлу

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action (read) but doesn't describe traits like whether it requires specific permissions, handles errors (e.g., missing files), returns content format (text/binary), or has rate limits. This is a significant gap for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Russian that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a file reading tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., text content, error messages) or behavioral aspects like file size limits or encoding. Given the complexity and lack of structured data, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'path' parameter documented as 'Путь к файлу' (Path to the file). The description doesn't add any meaning beyond this, such as path format examples or constraints. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Читать содержимое файла' (Read file contents) clearly states the verb (read) and resource (file contents), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'rag_search' or 'web_fetch' which might also involve reading operations, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'file_read' over 'rag_search' for document access or 'web_fetch' for external content, nor does it specify prerequisites like file existence or permissions. This leaves the agent with minimal usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

file_writeC

Записать содержимое в файл

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesПуть к файлу
contentYesСодержимое для записи

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('write content to a file') but does not disclose critical traits such as whether it overwrites existing files, requires specific permissions, handles errors, or has rate limits. This leaves significant gaps in understanding the tool's behavior for a mutation operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence in Russian that directly states the tool's purpose without any unnecessary words. It is front-loaded and efficiently communicates the core function, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a file write operation (a mutation with potential side effects), no annotations, and no output schema, the description is incomplete. It lacks details on behavior, error handling, and return values, which are crucial for safe and effective use. The description does not compensate for these gaps, making it inadequate for the tool's context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear descriptions for 'path' and 'content' parameters in Russian. The description does not add any additional meaning beyond what the schema provides, such as format examples or constraints. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema adequately documents the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Записать содержимое в файл' clearly states the action (write) and resource (file) in Russian, which translates to 'Write content to a file.' This is specific and unambiguous about the tool's function. However, it does not differentiate from sibling tools like 'file_read' or 'rag_add_document,' which might involve file operations, so it lacks explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios like overwriting existing files, creating new files, or when to choose 'file_write' over 'rag_add_document' for document storage. Without such context, users must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rag_add_documentC

Добавить документ в RAG корпус

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI документа
contentYesСодержимое документа
titleYesЗаголовок документа

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to add a document, implying a write operation, but doesn't cover critical aspects like permissions needed, whether duplicates are allowed, error handling, or rate limits. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Russian that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a write operation with no annotations and no output schema, the description is incomplete. It lacks details on what happens after adding (e.g., success confirmation, error messages, or how the document integrates into the corpus), which is crucial for an agent to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting the three required parameters (uri, content, title). The description adds no additional meaning beyond this, such as explaining parameter relationships or constraints, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Добавить' - add) and resource ('документ в RAG корпус' - document to RAG corpus), making the purpose understandable. However, it doesn't distinguish this tool from potential sibling tools like 'rag_search' or 'file_write', which could also involve document operations, so it misses full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing a RAG corpus setup, or compare it to siblings like 'rag_search' for retrieval or 'file_write' for storage, leaving the agent without contextual usage cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_createC

Создать новую задачу

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesЗаголовок задачи
projectNoПроект
dueNoСрок выполнения (YYYY-MM-DD)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('create') but doesn't cover permissions needed, whether the task is saved permanently, error conditions, or response format. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., side effects, permissions), response format, and error handling, which are critical for an agent to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters (title, project, due) with descriptions. The description adds no additional parameter semantics beyond what's in the schema, resulting in the baseline score for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Создать новую задачу' (Create a new task) clearly states the verb ('create') and resource ('task'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'task_list' beyond the basic action, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when not to use it, or how it relates to sibling tools like 'task_list' or 'file_write', leaving the agent without contextual usage cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

task_listC

Список задач

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoФильтр по проекту
statusNoСтатус (open/completed)

TDQS

C2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but offers none. 'Список задач' doesn't indicate whether this is a read-only operation, if it requires authentication, what format the output takes, or any limitations (e.g., pagination, rate limits). For a tool with parameters and no annotations, this leaves the agent completely in the dark about behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While the description is extremely concise (two words), this is under-specification rather than effective brevity. It fails to convey essential information that would help an agent use the tool correctly. Every sentence should earn its place, but here the minimal content doesn't provide value beyond the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has parameters and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a list of task objects), how results are structured, or any prerequisites for use. With no annotations to fill gaps, this leaves significant uncertainty about the tool's operation and output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter information beyond what's already in the schema, which has 100% coverage with clear descriptions for both parameters ('project' filter and 'status' with enum). Since the schema does the heavy lifting, the baseline score of 3 is appropriate—the description neither compensates for gaps nor adds meaningful context about parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Список задач' (List of tasks) is a tautology that essentially restates the tool name 'task_list' in Russian. It doesn't specify what action the tool performs (e.g., 'retrieve tasks' or 'filter tasks') or what resource it operates on. While it indicates this is about tasks, it doesn't distinguish this from sibling tools like 'task_create' beyond the obvious naming difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to use 'task_list' instead of other task-related tools like 'task_create', or how it relates to non-task siblings like 'file_read' or 'rag_search'. The user must infer usage from the name alone, which is insufficient for effective tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_fetchC

Получить содержимое веб-страницы

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL страницы

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'получить' (get) implies a read-only operation, it doesn't specify important behavioral traits like authentication requirements, rate limits, timeout handling, error conditions, or what happens with dynamic content (JavaScript, redirects). For a web fetching tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that directly states the tool's purpose without any unnecessary words. It's appropriately sized for a simple tool with one parameter and gets straight to the point with zero wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a web fetching tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format the content is returned in (HTML, text, metadata), how errors are handled, whether it follows redirects, or any limitations (size, content types). Given the complexity of web fetching and the lack of structured documentation elsewhere, the description should provide more contextual information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description doesn't add any parameter-specific information beyond what's already in the schema (which has 100% coverage). The schema fully documents the single 'url' parameter with its type and description. Since schema coverage is high, the baseline score of 3 is appropriate - the description doesn't compensate but doesn't need to given the comprehensive schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Получить содержимое веб-страницы' (Get web page content) clearly states the verb (get/retrieve) and resource (web page content), making the purpose immediately understandable. However, it doesn't differentiate from potential sibling tools like 'file_read' or 'rag_search' that might also retrieve content from different sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'file_read' (for local files) or 'rag_search' (for document search). There's no mention of prerequisites, limitations, or specific contexts where this tool is preferred over other content retrieval methods available in the sibling tool list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updates
    • First observedfile_read
    • First observedfile_write
    • First observedrag_add_document
    • First observedrag_search
    • First observedtask_create
    • First observedtask_list
    • First observedweb_fetch

TDQS

B3/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: file operations, RAG operations, task management, and web fetching are all separate domains. The descriptions clearly differentiate them, making misselection unlikely.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., file_read, task_create, web_fetch), but 'rag_add_document' and 'rag_search' deviate slightly by using 'add' and 'search' as verbs instead of a uniform verb style. The naming is still readable and mostly predictable.

Tool Count5/5

With 7 tools, this server is well-scoped for an AI Ops Hub, covering key areas like file handling, RAG, task management, and web operations. Each tool earns its place without feeling excessive or insufficient.

Completeness4/5

The tool surface covers core operations for file I/O, RAG, tasks, and web fetching, but there are minor gaps such as missing update/delete for tasks or document management in RAG. Agents can likely work around these with the provided tools.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An advanced MCP server providing RAG-enabled memory through a knowledge graph with vector search capabilities, enabling intelligent information storage, semantic retrieval, and document processing.
    13
    47
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI assistants to perform semantic searches over local document collections using multi-context organization and automatic OCR. It supports various file formats including PDF, DOCX, and images, ensuring all data processing remains local and private.
    7
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive MCP server that enables AI models to perform local file operations, command execution, and task management across multiple platforms. It features advanced capabilities like row-level file editing, directory searching, and system monitoring with built-in security filters.
    13
    25
    Mulan Permissive Software , Version 2
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for local RAG over personal notes, PDFs, and documents, enabling plain-English querying and hybrid search with multi-hop context expansion.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Galiusbro/ai-ops-hub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server