Skip to main content
Glama

ARL-DMS MCP Server

Exposes the AKIJ Resources Document Management System (DMS) to MCP clients (opencode, Claude, etc.) over stdio JSON-RPC 2.0.

Sources served

#

Source

Type

Contents

1

ERP (DWH)

MSSQL

Read-only by design (queried via AkijMCP, not here)

2

Risk database

PostgreSQL (Azure)

8,288 risks / 16 categories / 198 SBUs / 8,288 controls

3

One Goal One Team (Drive root)

Google Drive

1,124 files / 187 folders

4

Risk Team - All Policies and SOP

Google Drive

244 documents (user-provided links)

5

Legal Data

Google Drive

686 files / 235 folders

6

Land

Google Drive

210 files / 50 folders

7

ESG MLOD SSOT sheets

Google Sheets

11,636 links from SSOT 1 (+ SSOT 2/3 partial)

8

SBU submission sheets

Google Sheets

127 links (5 of 32 sheets public; rest private/401)

9

Bangladesh Laws (BDLaws portal)

Links

20 core business/corporate acts

Index: 14,535 entries (12,786 files / 1,749 folders) in ~/.agents/skills/ARL-DMS/library/tree.json.

Related MCP server: Zileo Docs

Tools

  • dms_search(query, source?, limit) — search documents across all repositories

  • dms_list(source?, limit) — list files in a repository

  • dms_details(id | name) — details card + 3-tier compliance mapping

  • dms_fetch(id, name?) — fetch document text from public Drive

  • dms_risk_lookup(query?, category?, sbu?, limit) — live PostgreSQL risk register

  • dms_bdlaws_act(name?) — official bdlaws link + metadata for the 20 acts

  • dms_stats() — inventory statistics

Run

node server-arl-dms.js

Environment variables (override via MCP server environment block):

  • RISK_PG_HOST / RISK_PG_PORT / RISK_PG_DATABASE / RISK_PG_USER / RISK_PG_PASSWORD — PostgreSQL risk register

  • ARL_DMS_SKILL_DIR — path to ARL-DMS skill library (defaults to ~/.agents/skills/ARL-DMS)

  • ARL_DMS_TREE_PATH / ARL_DMS_CONFIG_PATH — explicit index/config paths

Registration (opencode)

"ARL-DMS": {
  "type": "local",
  "command": ["node", "/Users/humaninside/Desktop/ESG_SUS_Agents_Skills_MCPs/MCPs/arl-dms/server-arl-dms.js"],
  "enabled": true,
  "environment": {
    "RISK_PG_HOST": "...", "RISK_PG_PORT": "5432",
    "RISK_PG_DATABASE": "risk_register",
    "RISK_PG_USER": "...", "RISK_PG_PASSWORD": "...",
    "ARL_DMS_SKILL_DIR": "/Users/humaninside/.agents/skills/ARL-DMS"
  }
}

Notes

  • Read-only by design. Never writes to ERP (DWH) or PostgreSQL.

  • 28 private SBU sheets (401) are not indexed yet — share them "anyone with link can view" and re-run the sheet extraction.

  • Credentials are provided via the MCP environment block, not the skill config.

Available Tools

13 tools
dms_bdlaws_actA

Return the official Bangladesh law link and metadata for the 20 registered core business/corporate acts (Companies Act, Labour Act, VAT Act, etc.) from bdlaws.minlaw.gov.bd.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional act name filter (e.g. Labour, Companies, VAT)

TDQS

A4.4/5.0
Behavior4/5

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

The description states what the tool returns (link and metadata) and that it covers exactly 20 acts, which is good behavioral disclosure. Since there are no annotations, the description serves as the primary source of behavioral information. It could be improved by noting if there are any side effects or network dependencies, but the core behavior is clear.

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, well-structured sentence that starts with the key action ('Return') and specifies the exact scope and source. Every part of the sentence is necessary and informative, with no wasted words.

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

Completeness4/5

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

Given the tool has one optional parameter, no output schema, and no annotations, the description does a good job explaining the tool's purpose and return value. It covers what it returns (link, metadata) and the scope (20 acts from bdlaws.minlaw.gov.bd). It could be slightly more complete by mentioning if the tool enforces exact name matching or supports partial names.

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

Parameters4/5

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

The input schema has 100% description coverage, with a single optional parameter 'name' that is already described as 'Optional act name filter'. The description adds context by listing example values (Labour, Companies, VAT) that help the agent understand acceptable inputs. With high schema coverage, the description contributes additional meaningful examples.

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

Purpose5/5

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

The description clearly specifies the verb 'Return' and the resource 'official Bangladesh law link and metadata', and uniquely identifies it as covering the specific set of 20 core business/corporate acts. This distinct focus on Bangladesh law acts differentiates it from sibling tools like dms_search or dms_fetch.

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

Usage Guidelines4/5

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

The description implies this tool is specifically for Bangladesh corporate/business acts, providing clear context for when to use it (e.g., retrieving the Companies Act, Labour Act). While it doesn't explicitly state when not to use it or mention alternatives, the narrow scope and optional filter give strong implicit guidance.

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

dms_detailsA

Get a details card for one document by drive id or name: name, id, URL, path, doc type, source, and the 3-tier compliance mapping scaffold.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoDrive file/folder id
nameNoDocument name (exact or partial)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations exist, so the description bears full responsibility for disclosing behaviors. It transparently lists the output fields (name, id, URL, path, doc type, source, compliance mapping scaffold), but does not specify read-only nature, error handling (e.g., what if id/name is missing), or performance impacts. The lack of any behavioral caveats is mitigated by the clear, non-destructive implied purpose, yielding a solid 4.

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, well-structured sentence that front-loads the core action ('Get a details card for one document') and efficiently lists the output fields. No waste, every word adds value. Perfect score.

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

Completeness5/5

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

Given no output schema, the description compensates by enumerating all expected return fields. The tool complexity is low (2 optional params, no enums, no nested objects) and the description fully covers what an agent needs to know to select and invoke this tool correctly. Complete for this context.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value by explaining that parameters (id or name) are alternative identification methods ('by drive id or name') and describes the output this input unlocks. It clarifies the purpose of the parameters beyond the schema's generic 'Drive file/folder id' and 'Document name (exact or partial)', earning a 4.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get a details card for one document.' It specifies the identification methods (drive id or name) and lists the exact fields returned (name, id, URL, path, doc type, source, compliance mapping scaffold). This level of specificity distinguishes it from siblings like dms_search (searching) and dms_list (listing), achieving a high purpose clarity score.

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

Usage Guidelines4/5

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

The description explicitly states the tool retrieves details for a single document, implying use when you need comprehensive metadata for one document. It does not explicitly state when not to use it or compare to alternatives, but the context signals (no required params, two optional identifiers) suggest flexibility. A slight deduction for lacking direct 'when to use vs. alternatives' guidance.

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

dms_fetchA

Fetch the text content of a publicly shared Google Drive document (docx/gdoc/xlsx/gslides/pdf attempts) by drive id. Returns up to 20k chars.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDrive file id
nameNoOptional file name to detect format

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a 20k character limit and that it attempts several formats, but does not mention authentication requirements, error handling for non-public documents, or rate limits. The 'attempts' phrasing is vague about success guarantees.

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?

Two sentences, front-loaded with the core action and scope. Every word is earned; no filler or repetition. Efficiently conveys purpose and return limit.

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

Completeness3/5

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

For a simple fetch tool with two params and no output schema, the description covers what it does, the input, return limit, and format support. However, it omits error scenarios (e.g., file not found, not public) and does not clarify authentication needs or whether the tool works for non-public documents.

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 coverage is 100% with descriptions for both params. The description adds context about public sharing and format attempts but does not explicitly connect the optional 'name' parameter to format detection. It adds some value beyond the schema but could be more explicit.

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

Purpose5/5

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

The description clearly states 'Fetch the text content of a publicly shared Google Drive document by drive id', giving a specific verb and resource. It distinguishes from siblings like dms_search (search) and dms_details (metadata) by focusing on content retrieval.

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

Usage Guidelines3/5

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

The description implies usage when you need text content from a publicly shared document with a drive ID, but it lacks explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like dms_details for metadata or dms_search for finding documents.

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

dms_listA

List documents in a DMS source repository (drive, risk-team, legal-data, land, sheet, bdlaws) with id, path, doc type and url.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 100)
sourceNoSource repository to list. Omit for all.

TDQS

A3.8/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 that documents are listed with id, path, doc type, and url, but does not disclose any permissions, rate limits, pagination behavior, or whether the operation is read-only. While 'list' implies a read operation, the description lacks explicit safety or side-effect context, similar to the update_drive example which scored 2 for no annotations and missing reversibility/permissions.

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, front-loaded sentence that states the action, scope, and output fields without any redundancy. Every word contributes to understanding the tool's purpose and acceptable inputs.

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

Completeness4/5

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

The tool is simple with two optional parameters and no output schema. The description covers the essential aspects: the repositories, the filtered behavior (via source param), and the returned fields. It lacks explicit mention of sorting or default limit beyond the schema's 'default 100', but for a list operation, this is reasonably complete given the low complexity.

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

Parameters4/5

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

Schema coverage is 100% (both parameters have descriptions), but the main description adds value by enumerating the valid source repository values (drive, risk-team, legal-data, land, sheet, bdlaws) and listing the output fields. This goes beyond the schema's simple 'string' type and provides meaningful context that the agent can use.

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

Purpose5/5

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

The description uses the specific verb 'List' with the resource 'documents in a DMS source repository', enumerates the valid repositories (drive, risk-team, legal-data, land, sheet, bdlaws), and states the output fields (id, path, doc type, url). This clearly distinguishes it from siblings like dms_search or dms_details.

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

Usage Guidelines3/5

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

The description implies usage for listing documents with optional source filtering, and the 'source' parameter clarifies 'Omit for all'. However, it does not explicitly mention when to use this tool instead of alternatives like dms_search for searching or dms_details for specific document details, so no direct or implied exclusions are stated.

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

dms_risk_lookupA

Query the Bangladesh legal/compliance risk register (PostgreSQL, 8,288 risks) by keyword, category, or SBU. Returns risk code, title, scores, ratings, status.

ParametersJSON Schema
NameRequiredDescriptionDefault
sbuNoSBU code or name (e.g. ACCL, AIL, ARL)
limitNoMax results (default 10)
queryNoKeyword in risk title/code/description
categoryNoRisk category name (e.g. Legal & Regulatory, Compliance, Operational)

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It states it is a query (read operation) to a PostgreSQL database with 8,288 risks, which implies safety but does not confirm idempotency, mention authentication needs, rate limits, or potential performance (e.g., slow on large result sets). The return format is hinted (risk code, title, scores, ratings, status) but not fully specified. Basic behavioral context is present but insufficient for a tool without annotation support.

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?

A single sentence front-loads the resource (Bangladesh legal/compliance risk register), notes the data size (8,288 risks), lists all filter dimensions, and summarizes return fields. Every phrase earns its place with no redundancy. Highly efficient.

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

Completeness4/5

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

Given no output schema, the description covers return fields (risk code, title, scores, ratings, status) sufficiently. The lack of usage guidance against sibling tools and no explanation of risk score/rating interpretation are minor gaps, but for a straightforward query tool the description is mostly complete. It would benefit from a brief note on primary key (risk code) or result order.

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?

All four parameters have descriptions in the input schema (100% coverage). The tool description adds no semantic value beyond what the schema already provides – it merely groups filters by mention. The baseline of 3 applies, and no extra meaning (e.g., format hints, required conditions, default behaviors) is added.

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

Purpose5/5

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

The description clearly states the tool queries a specific resource – the Bangladesh legal/compliance risk register – with explicit filter dimensions (keyword, category, SBU) and return fields. This distinguishes it from sibling tools like dms_search (general search) and dms_legal_risk (possibly legal-specific risks). The verb 'Query' and focused resource name provide precise purpose.

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

Usage Guidelines3/5

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

The description implies usage context: use when needing risk register data filtered by keyword/category/SBU. However, it does not contrast with alternatives (e.g., dms_search, dms_legal_register) or give when-not-to-use guidance. No explicit exclusions or conditions are provided, leaving an agent to infer context from sibling names.

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

dms_statsA

Return DMS inventory statistics: total files/folders, counts by source and document type, registered sources, BD laws count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the tool returns statistics (read operation), which is appropriate, but does not mention performance implications, data freshness, or whether counts are real-time or cached. The description is adequate for a read-only inventory summary tool, but could add more behavioral details.

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?

A single, concise sentence that front-loads the core action ('Return DMS inventory statistics') and then lists the specific data points returned. Every element is relevant, with no filler or redundancy.

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

Completeness4/5

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

Given zero parameters and no output schema, the description completely explains the tool's return value. The list of statistics (files/folders, sources, document types, BD laws) is comprehensive for an inventory overview tool. No additional context seems necessary for an agent to correctly invoke this tool.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so the schema already conveys no inputs are needed. The description adds value by explaining what the returned statistics include, which is the complete set of aggregate data the tool produces, effectively compensating for the lack of parameter documentation.

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

Purpose5/5

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

The description clearly states the tool returns DMS inventory statistics and enumerates specific categories (total files/folders, counts by source and document type, registered sources, BD laws count). This provides a precise, distinctive purpose compared to sibling tools like dms_search or dms_details, which focus on searching or fetching individual records.

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

Usage Guidelines3/5

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

The description implies the tool provides aggregate statistics for an overview, distinguishing it from detail-oriented siblings, but offers no explicit guidance on when to use this vs. alternatives like dms_legal_kpi. No exclusions or prerequisites are mentioned, though the 'total' qualifier suggests it covers all sources, which is helpful context.

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. 13 tool updatesv1.1.0
    • First observeddms_bdlaws_act
    • First observeddms_details
    • First observeddms_fetch
    • First observeddms_legal_controls
    • First observeddms_legal_documents
    • First observeddms_legal_kpi
    • First observeddms_legal_register
    • First observeddms_legal_requirement
    • First observeddms_legal_risk
    • First observeddms_list
    • First observeddms_risk_lookup
    • First observeddms_search
    • First observeddms_stats

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct entity or action: document search vs. listing vs. details vs. fetch, plus separate registers for risks, controls, requirements, etc. The descriptions clearly differentiate them.

Naming Consistency4/5

All tools use lowercase with underscores and the 'dms_' prefix. Some are verb-based (search, list, fetch) while others are noun-based (details, stats), showing minor inconsistency but overall predictable.

Tool Count5/5

13 tools cover both document management and legal compliance without being overwhelming. Each tool serves a clear purpose, well-scoped for the server's domain.

Completeness5/5

The tool set covers searching, listing, retrieving documents, and querying multiple legal/compliance registers (risks, controls, requirements, documents). No obvious gaps for a read-only compliance DMS.

Maintenance

ActivityMaintained
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
    A
    quality
    C
    maintenance
    MCP server that indexes Markdown, Word, HTML, and PDF documents into a SQLite knowledge graph with CJK+Latin full-text search and cross-document reference tracking. Runs drift audits to surface stale policies, conflicting research claims, superseded ADRs, and undocumented code exports.
    10
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for indexing, semantic search, and generation of multi-format documents. Exposes 13 tools over JSON-RPC 2.0 so an LLM can search your local PDF, Excel, and Word files, and create or edit Excel and Word documents.
    AGPL 3.0
  • A
    license
    A
    quality
    B
    maintenance
    A local MCP server that enables LLMs to securely search and read files within designated Google Drive folders. Supports Google Docs, Google Sheets, PDFs, and plain text with strict folder-scoping via service account authentication.
    4
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A local AI document assistant MCP server that enables listing, reading, and editing documents via tools, resources, and prompts, allowing LLMs to manage document workflows through natural language.
    3
    -

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/sakibntanmoy006/arl-dms-mcp'

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