← Back to Articles & Artefacts
artefactswest

RISE Specification: MCP Tool Exposure

IAIP Research
iaip-dsl-lsp

RISE Specification: MCP Tool Exposure

Desired Outcome

The DSL server exposes its semantic knowledge as MCP (Model Context Protocol) tools, enabling any AI agent in the IAIP ecosystem to query concepts, traverse relationships, validate terminology, and access Indigenous knowledge context — the same knowledge surface as LSP but through the agent-native protocol.

Current Reality

  • The original scaffolding targets LSP only (IDE integration)
  • AI agents (mia-code, miadi-code, Heyva, Anikwag-Ayaaw) interact via MCP tools
  • RSIS-GitNexus already exposes graph operations as MCP tools
  • No mechanism exists for agents to query the IAIP concept framework programmatically
  • Agents must re-derive concept meanings from system prompts or conversation history

Structural Tension

Between semantic knowledge locked in an IDE-only protocol and the growing fleet of AI agents that need framework-aligned understanding to participate in ceremonial technology development.


MCP Tools

1. iaip_concept_lookup

Purpose: Look up a concept by ID or name, returning full definition with relational and Indigenous knowledge context.

```json { "name": "iaip_concept_lookup", "description": "Look up an IAIP framework concept. Returns definition, relationships, Indigenous knowledge context (Two-Eyed Seeing, polycentric, relational, ceremonial), directional alignment, and OCAP flags.", "inputSchema": { "type": "object", "properties": { "concept": { "type": "string", "description": "Concept ID (e.g., 'creative-orientation') or natural language name (e.g., 'Creative Orientation')" }, "depth": { "type": "string", "enum": ["brief", "full", "relational"], "default": "full", "description": "brief: definition only. full: definition + Indigenous context. relational: full + all related concepts" } }, "required": ["concept"] } } ```

2. iaip_concept_relationship

Purpose: Query the relationship between two concepts.

```json { "name": "iaip_concept_relationship", "description": "Show how two IAIP concepts relate to each other. Returns relationship type, path, and Indigenous knowledge context for the relationship.", "inputSchema": { "type": "object", "properties": { "concept1": { "type": "string" }, "concept2": { "type": "string" }, "max_path_length": { "type": "integer", "default": 3 } }, "required": ["concept1", "concept2"] } } ```

3. iaip_concept_search

Purpose: Search concepts by keyword, category, direction, or usage context.

```json { "name": "iaip_concept_search", "description": "Search IAIP framework concepts by keyword, category, direction, or usage context.", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "description": "Search query (keyword or phrase)" }, "category": { "type": "string", "enum": ["Framework", "Feeling/Capacity", "Knowledge System", "Integration", "Ceremony", "Orchestration"] }, "direction": { "type": "string", "enum": ["east", "south", "west", "north", "center"] }, "usage_context": { "type": "string", "description": "Filter by usage context (e.g., 'AI development', 'ceremony')" } } } } ```

4. iaip_validate_terminology

Purpose: Check if a text uses IAIP framework terminology correctly and coherently.

```json { "name": "iaip_validate_terminology", "description": "Validate that text uses IAIP framework terminology correctly. Returns coherence score, identified concepts, and suggestions for framework-aligned language.", "inputSchema": { "type": "object", "properties": { "text": { "type": "string", "description": "Text to validate" }, "strictness": { "type": "string", "enum": ["gentle", "standard", "strict"], "default": "standard", "description": "gentle: suggestions only. standard: flag inconsistencies. strict: flag all non-framework language" } }, "required": ["text"] } } ```

5. iaip_concept_context

Purpose: Get the full relational context around a concept — what it enables, what enables it, ceremonial implications, directional alignment.

```json { "name": "iaip_concept_context", "description": "Get the full relational context around a concept: what it enables, what grounds it, ceremonial implications, and directional flow.", "inputSchema": { "type": "object", "properties": { "concept": { "type": "string" }, "hops": { "type": "integer", "default": 2, "description": "How many relationship hops to traverse" } }, "required": ["concept"] } } ```

6. iaip_direction_concepts

Purpose: List all concepts aligned with a specific direction (East/South/West/North).

```json { "name": "iaip_direction_concepts", "description": "List all IAIP concepts aligned with a specific direction of the Four Directions framework.", "inputSchema": { "type": "object", "properties": { "direction": { "type": "string", "enum": ["east", "south", "west", "north"], "description": "Direction to query" } }, "required": ["direction"] } } ```

7. iaip_concept_suggest

Purpose: Given a context or task description, suggest relevant IAIP framework concepts.

```json { "name": "iaip_concept_suggest", "description": "Given a task or context description, suggest relevant IAIP framework concepts that should inform the work.", "inputSchema": { "type": "object", "properties": { "context": { "type": "string", "description": "Description of the task or context" }, "max_suggestions": { "type": "integer", "default": 5 } }, "required": ["context"] } } ```

8. iaip_wisdom_ledger_log

Purpose: Record a concept usage event in the Wisdom Ledger.

```json { "name": "iaip_wisdom_ledger_log", "description": "Record that a concept was used in a specific context, contributing to the Wisdom Ledger's understanding of concept evolution and usage patterns.", "inputSchema": { "type": "object", "properties": { "concept": { "type": "string" }, "agent_id": { "type": "string", "description": "ID of the agent using the concept" }, "context": { "type": "string", "description": "Brief description of how/where the concept was used" }, "session_id": { "type": "string", "description": "Session identifier for continuity tracking" } }, "required": ["concept", "agent_id", "context"] } } ```

MCP Resources

In addition to tools, expose read-only resources:

```json [ { "uri": "iaip://concepts/registry", "name": "IAIP Concept Registry", "description": "Full concept registry as structured data", "mimeType": "application/json" }, { "uri": "iaip://concepts/graph", "name": "IAIP Relational Graph", "description": "Concept relationship graph as adjacency list", "mimeType": "application/json" }, { "uri": "iaip://concepts/directions/{direction}", "name": "Concepts by Direction", "description": "Concepts filtered by Four Directions alignment", "mimeType": "application/json" }, { "uri": "iaip://wisdom/ledger", "name": "Wisdom Ledger Summary", "description": "Aggregate concept usage patterns and evolution", "mimeType": "application/json" } ] ```

MCP Prompts

Pre-built prompt templates for common agent workflows:

```json [ { "name": "iaip_framework_grounding", "description": "Ground an agent's work in the IAIP framework by providing relevant concept context", "arguments": [ { "name": "task_description", "description": "What the agent is about to work on", "required": true } ] }, { "name": "iaip_ceremony_check", "description": "Check if a proposed action requires ceremonial consideration based on IAIP concepts", "arguments": [ { "name": "proposed_action", "description": "What the agent proposes to do", "required": true } ] } ] ```

Implementation Notes

Dual-Protocol Server

```python

server.py — runs both LSP and MCP on different transports

import asyncio from pygls.server import LanguageServer from mcp.server import Server as MCPServer

class IAIPDSLServer: def init(self): self.registry = ConceptRegistry() self.graph = RelationalGraphEngine() self.mapper = IndigenousKnowledgeMapper() self.wisdom = WisdomLedger()

    # LSP for IDE clients
    self.lsp = LanguageServer("iaip-dsl", "v1.0.0")
    self._register_lsp_handlers()
    
    # MCP for agent clients
    self.mcp = MCPServer("iaip-dsl")
    self._register_mcp_tools()

async def start(self, lsp_transport, mcp_transport):
    await asyncio.gather(
        self.lsp.start(lsp_transport),
        self.mcp.run(mcp_transport)
    )

```

Transport Options

  • LSP: stdio (Claude Code plugin) or TCP (VS Code)
  • MCP: stdio (local agent) or SSE (remote agents)

Success Metrics

  • All 8 MCP tools respond in <100ms
  • MCP tool responses include the same Indigenous knowledge context as LSP hover
  • At least 3 AI agents (mia-code, miadi-code, one other) can query concepts via MCP
  • Wisdom Ledger records at least 100 usage events per session day
  • Resource URIs resolve correctly and return current registry state
  • Prompt templates produce framework-grounded agent behavior