Skip to main content
Glama
rp4

IIA-MCP Server

by rp4

IIA-MCP Server

A Model Context Protocol (MCP) server that provides AI assistants with access to Institute of Internal Auditors (IIA) professional standards and resources.

Overview

This project creates an MCP server that scrapes IIA resources and formats them as markdown files for easy consumption by AI agents. The server provides comprehensive access to:

  • IIA Professional Standards (1000 and 2000 series)

  • Implementation Guidance and IPPF framework

  • Specialized Topics (cybersecurity, ESG, risk assessment, etc.)

  • Glossary and Templates

  • Recent Updates and changes

Related MCP server: Integrator MCP Server

Architecture

Components

  1. Scraper (scraper.ts) - Web scraping tool that downloads IIA resources

  2. MCP Server (iia_mcp_server.ts) - Serves scraped content via Model Context Protocol

  3. Structured Output - Well-organized markdown files following IIA documentation patterns

Directory Structure

Following the structure defined in Structure.txt:

iia-resources/
├── standards/
│   ├── 1000-series/           # Independence and Objectivity
│   ├── 2000-series/           # Performance Standards
│   └── index.md               # Standards overview
├── guidance/
│   ├── ippf-framework.md
│   ├── coso-integration.md
│   ├── ethics-code.md
│   └── implementation/        # Detailed guidance
├── topics/                    # Specialized audit topics
├── glossary/                  # Definitions and acronyms
├── templates/                 # Audit templates and tools
└── updates/                   # Recent changes and updates

Getting Started

Prerequisites

  • Node.js (v18+)

  • TypeScript

  • npm

Installation

# Install dependencies
npm install

# Build the project
npm run build

Usage

1. Scrape IIA Resources

# Run the scraper to download and format IIA content
npm run scrape

This will:

  • Create the iia-resources/ directory structure

  • Download IIA content from their website

  • Convert HTML to markdown with proper frontmatter

  • Organize files according to the standardized structure

2. Run the MCP Server

# Start the MCP server
npm start

# Or for development
npm run dev

Configuration

Environment variables:

  • IIA_REPO_PATH - Path to IIA resources directory (default: ./iia-resources)

  • IIA_GITHUB_REPO - Repository reference (default: organization/iia-resources)

MCP Server Features

Resources

  • Dynamic document serving from markdown files

  • Categorized access to all IIA content types

  • Metadata-rich responses with source URLs

Tools

  1. search_documents - Search by keywords, standard numbers, or topics

  2. get_standard_details - Retrieve specific standard information

  3. get_related_documents - Find related content for topics

  4. validate_compliance - Check scenarios against IIA standards

  5. get_document_updates - Track recent changes and updates

Advanced Features

  • Content Caching for performance

  • Relevance Scoring for search results

  • Standard Number Detection for compliance validation

  • YAML Frontmatter Parsing for rich metadata

Development

File Formats

All scraped content includes YAML frontmatter:

---
title: "Standard Title"
url: "https://www.theiia.org/original-url"
category: "standards"
standard_number: "1100"
last_updated: "2024-01-15T10:30:00Z"
scraped_at: "2024-07-15T12:00:00Z"
---

# Content starts here...

Code Standards

  • TypeScript with strict type checking

  • Async/await patterns throughout

  • Error handling and retry logic

  • Respectful scraping with rate limiting

Usage with AI Assistants

This MCP server enables AI assistants to:

  • Reference IIA Standards accurately in audit guidance

  • Validate Compliance scenarios against official standards

  • Search Documentation by topic, keyword, or standard number

  • Stay Current with the latest IIA updates and changes

  • Access Templates for audit programs and reports

Research and Education

This project is designed for research and educational purposes, providing structured access to public IIA resources for academic study and professional development in internal auditing.

License

MIT License - See LICENSE file for details.

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

Support

For issues and questions:

  • Check existing GitHub issues

  • Create new issues with detailed descriptions

  • Include error logs and environment details

Available Tools

5 tools
get_document_updatesC

Check for recent updates to IIA documents

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category
sinceNoISO date string to check for updates since

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 only states what the tool does ('Check for recent updates') without explaining any behavioral traits like what 'recent' means, if there are rate limits, authentication needs, or how updates are determined. This leaves significant gaps in understanding the tool's 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, efficient sentence that directly states the tool's purpose without any unnecessary words. It is appropriately sized and front-loaded, 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 tool's complexity (checking updates with parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain what 'updates' entail, the return format, or any behavioral context, leaving the agent with insufficient information to fully utilize the tool.

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 both parameters ('category' with enum values and 'since' as an ISO date). The description adds no additional meaning beyond this, as it doesn't elaborate on parameter usage or constraints. This meets the baseline score when schema coverage is high.

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 tool's purpose with a specific verb ('Check') and resource ('recent updates to IIA documents'), making it understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_related_documents' or 'search_documents', which might also involve document retrieval, so it doesn't achieve full distinction.

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 any context, exclusions, or comparisons to sibling tools such as 'search_documents' or 'get_standard_details', leaving the agent with no usage instructions beyond the basic purpose.

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

get_standard_detailsB

Get detailed information about a specific IIA standard

ParametersJSON Schema
NameRequiredDescriptionDefault
standardNumberYesIIA standard number (e.g., "2010", "1100")

TDQS

B3.1/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 but offers minimal information. It implies a read-only operation ('Get') but doesn't address permissions, rate limits, error conditions, or response format. For a tool with zero annotation coverage, this is insufficient behavioral context.

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 that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage guidelines, behavioral traits, and output, which would be needed for higher completeness in a real-world scenario.

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, fully documenting the single parameter 'standardNumber' with examples. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 where 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 clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed information about a specific IIA standard'), making it immediately understandable. However, it doesn't differentiate this tool from its siblings (like 'get_document_updates' or 'get_related_documents'), which would require explicit comparison to achieve 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. It doesn't mention prerequisites, appropriate contexts, or exclusions, leaving the agent to infer usage from the tool name alone. This lack of explicit guidance is a significant gap.

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

search_documentsC

Search IIA documents by keywords, standard numbers, or topics

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category (standards, guidance, topics, glossary)
limitNoMaximum number of results to return
queryYesSearch query (keywords, standard number, or topic)

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 but offers minimal information. It mentions what can be searched (keywords, standard numbers, topics) but doesn't describe how results are returned, whether there's pagination, authentication requirements, rate limits, or what happens with no matches. For a search tool with zero annotation coverage, this is inadequate.

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 that directly states the tool's function without any unnecessary words. It's appropriately sized and front-loaded with the core purpose.

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's complexity (search functionality with 3 parameters) and lack of both annotations and output schema, the description is incomplete. It doesn't explain return values, result format, error conditions, or behavioral constraints, leaving significant gaps for an AI agent to understand how to properly use this tool.

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 fully documents all three parameters (query, category, limit). The description adds marginal value by listing searchable content types (keywords, standard numbers, topics) which aligns with the query parameter, but doesn't provide additional syntax or format details beyond what the schema provides.

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 tool's purpose as searching IIA documents with specific search criteria (keywords, standard numbers, or topics). It uses a specific verb ('search') and identifies the resource ('IIA documents'), but doesn't distinguish it from sibling tools like 'get_related_documents' or 'get_standard_details' which might also retrieve document information.

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 search_documents over sibling tools like get_related_documents or get_standard_details, nor does it specify any prerequisites or exclusions for its use.

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

validate_complianceC

Check compliance against IIA standards and provide recommendations

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioYesAudit scenario or situation to validate
standardsToCheckNoSpecific standards to check against (optional)

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 mentions 'check' and 'provide recommendations,' implying a read-only analysis, but doesn't specify if this involves data mutation, requires authentication, has rate limits, or details the output format. For a tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is concise and front-loaded in a single sentence, with no wasted words. It efficiently communicates the core purpose, but could be slightly improved by adding minimal context to enhance clarity without losing brevity.

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 compliance checking, lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'recommendations' entail, how results are returned, or any behavioral traits like error handling. This leaves gaps for an AI agent to understand the tool's full 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?

Schema description coverage is 100%, so the schema already documents both parameters (scenario and standardsToCheck) adequately. The description adds no additional meaning beyond what the schema provides, such as examples or context for parameter usage. Baseline 3 is appropriate when 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 clearly states the tool's purpose with a specific verb ('Check compliance') and resource ('against IIA standards'), and it includes an outcome ('provide recommendations'). However, it doesn't differentiate this tool from its siblings (e.g., get_standard_details, search_documents), which might also relate to compliance or standards, so it doesn't reach a score of 5.

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 its siblings (e.g., get_standard_details for details on standards, search_documents for document searches). It lacks explicit when-to-use or when-not-to-use instructions, and there are no prerequisites or alternatives mentioned, leaving usage context unclear.

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.

  1. 5 tool updatesv1.0.0
    • First observedget_document_updates
    • First observedget_related_documents
    • First observedget_standard_details
    • First observedsearch_documents
    • First observedvalidate_compliance

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_document_updates focuses on recent changes, get_related_documents finds topic-based associations, get_standard_details provides standard-specific information, search_documents performs keyword-based retrieval, and validate_compliance assesses adherence to standards. There is no overlap or ambiguity in their functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, starting with verbs like 'get', 'search', or 'validate' followed by descriptive nouns. This uniformity makes the tool set predictable and easy to understand.

Tool Count5/5

With 5 tools, the server is well-scoped for its IIA document and standards management purpose. Each tool serves a specific, necessary function without redundancy, making the count appropriate for the domain.

Completeness4/5

The tool set covers key operations like retrieval (search, get details/updates/related documents) and compliance validation, supporting core workflows. A minor gap is the lack of tools for modifying or creating documents, but this may be intentional if the server is read-only.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive Model Context Protocol server implementation that enables AI assistants to interact with file systems, databases, GitHub repositories, web resources, and system tools while maintaining security and control.
    74 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI models with structured access to external data and services, acting as a bridge between AI assistants and applications, databases, and APIs in a standardized, secure way.
    2
    -