molsen.ca MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@molsen.ca MCPSearch essays on professional accountability"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
molsen.ca-mcp
MCP server for accessing molsen.ca essay content. Exposes Mike Olsen's essays on AI governance, professional accountability, and the future of technical work to LLMs via the Model Context Protocol.
Installation
Standalone Binary (no Node required)
Download the latest binary for your platform from GitHub Releases:
Windows:
molsen-mcp-vX.X.X-win.exemacOS:
molsen-mcp-vX.X.X-macosLinux:
molsen-mcp-vX.X.X-linux
Via npm
npm install -g @molsen.ca/mcpOr run directly with npx:
npx @molsen.ca/mcpRelated MCP server: MCP Server (fac_mcp_hub)
Usage with Claude Desktop
With standalone binary (Windows example)
Add to your Claude Desktop configuration (%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"molsen-essays": {
"command": "C:\\path\\to\\molsen-mcp.exe"
}
}
}With npx
Add to your Claude Desktop configuration:
{
"mcpServers": {
"molsen-essays": {
"command": "npx",
"args": ["-y", "@molsen.ca/mcp"]
}
}
}Usage with Claude Code
Add to your Claude Code MCP settings or use the included skill.
Available Tools
list_essays
List essays from molsen.ca with optional filtering.
Parameters:
type(optional): Filter by type -hub,foundational,core,theoretical,applied,empirical,practice, oralltags(optional): Filter by tags arrayframeworkOnly(optional): Return only framework essays in reading orderincludeContent(optional): Include full essay content
get_essay
Retrieve a specific essay by slug.
Parameters:
slug(required): Essay slug (e.g., "executable-knowledge-architecture")format(optional):full,summary, ormarkdown
search_essays
Search essays by keyword.
Parameters:
query(required): Search querytags(optional): Filter by tagstype(optional): Filter by typelimit(optional): Max results (default 10)
get_framework_overview
Get an overview of the "Making AI Make Sense" framework.
Parameters:
depth(optional):overview,detailed, orfull
get_knowledge_graph
Get relationships between essays.
Parameters:
essay(optional): Get connections for a specific essay (use short ID like "eka")connectionType(optional):core,soft, orall
Development
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build
npm run build
# Run built version
npm startLicense
MIT
Available Tools
5 toolsget_essayA
Retrieve a specific essay by its slug. Returns full content, summary, or markdown format.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Essay slug (e.g., "executable-knowledge-architecture") | |
| format | No | Response format: full (plain text), summary (metadata only), markdown (raw) | full |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. 'Retrieve' signals a read-only operation and the sentence states the main output formats. It does not cover error handling, missing slugs, or auth requirements, but for a simple fetch tool the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys purpose and output options with no filler. Every word earns its place and key information appears immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter retrieval tool, the description plus schema covers the essential call pattern and return formats. It lacks explicit exclusions and error behavior, but that is a minor gap for this simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents slug and format. The description adds no new semantic detail beyond restating that it returns full, summary, or markdown content, matching the schema enum. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear verb ('Retrieve'), a specific resource ('a specific essay'), and the key identifier ('slug'). This clearly differentiates it from siblings like list_essays and search_essays, which operate at collection level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its slug' implies this is the tool to use when the caller already knows which essay is wanted, as opposed to list_essays or search_essays. However, it never explicitly states when not to use it or names an alternative, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_framework_overviewB
Get an overview of the "Making AI Make Sense" framework with its essays and structure.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Level of detail: overview (titles/descriptions), detailed (includes structure), full (includes all content) | overview |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral burden. It states the operation is to 'get' an overview, implying a read-only action, but it does not explicitly confirm non-mutating behavior, nor does it describe the response format or any side effects. For a read tool this is acceptable but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the tool's purpose without any fluff. It is front-loaded with the key action and resource, and there is zero wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and no output schema, the description is adequate but not exhaustive. It mentions the framework and its essays/structure, but does not elaborate on the exact nature of the response or how the depth parameter affects output. Given the schema covers the parameter, this is sufficient but leaves room for more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'depth' is fully documented in the schema with enum values and a description explaining each level. The description does not add any additional meaning or examples beyond the schema, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns an overview of the 'Making AI Make Sense' framework, including essays and structure. It uses a specific verb ('Get') and resource, and while it doesn't explicitly name sibling tools, the focus on framework-level overview distinguishes it from essay-level tools like list_essays and get_essay.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention alternatives or provide conditions for choosing it over list_essays, get_essay, or search_essays. The intended usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_graphB
Get the knowledge graph showing relationships between essays. Optionally filter by essay or connection type.
| Name | Required | Description | Default |
|---|---|---|---|
| essay | No | Optional: Get connections for a specific essay | |
| connectionType | No | Filter by connection type | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states that the tool 'gets' a graph and can be filtered. It does not describe the output shape (e.g., nodes/edges), what the default behavior is aside from the connectionType default in the schema, or how connection types 'core' and 'soft' behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the main purpose and then states the optional filters. Every word contributes value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two optional parameters, the description covers the core usage adequately. However, there is no output schema and no annotations, so the lack of any description of the returned graph structure or the semantics of 'core' vs 'soft' connections leaves meaningful gaps for an agent trying to interpret results or choose filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and the enum values. The description adds little beyond restating that filtering is optional, and it does not clarify the meaning of 'core' or 'soft' connection types, but the baseline is acceptable because the schema captures the parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('knowledge graph') and clarifies that it shows relationships between essays, which distinguishes it from sibling tools like list_essays or get_essay. It does not explicitly name alternatives, but the resource and relationship framing make the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a knowledge graph of essay relationships is needed, with optional filtering by essay or connection type. However, it provides no explicit guidance about when not to use it or how it compares to siblings such as search_essays or get_framework_overview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_essaysB
List essays from molsen.ca. Can filter by type, tags, or get framework essays in reading order.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags (e.g., ["AI Governance", "Professional Practice"]) | |
| type | No | Filter by essay type | all |
| frameworkOnly | No | Return only framework essays in reading order | |
| includeContent | No | Include full essay content in response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'reading order' for framework essays but does not state whether the operation is read-only, how results are ordered by default, whether pagination applies, or what the response shape is. Basic safety/behavioral context is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loading the core action ('List essays from molsen.ca') before the optional behaviors. There is no filler or repetition, and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and key filter options, which is adequate for a simple listing tool. However, with no output schema or annotations, it omits important context like default return behavior, ordering, pagination, and whether full content is included by default, leaving several gaps for an agent to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description loosely aligns with tags, type, and frameworkOnly but adds no meaning beyond the schema; includeContent is not mentioned. This matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('essays from molsen.ca'), and it enumerates the main filtering modes (type, tags, framework reading order). However, it does not explicitly distinguish itself from the sibling search_essays or get_essay tools, leaving that differentiation implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool ('list essays', 'filter by type, tags, or get framework essays'), which gives a reasonable sense of purpose. But it offers no explicit when-not-to-use guidance or named alternatives, so an agent must infer the boundary against search_essays and get_essay.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_essaysA
Search essays by keyword. Searches title, description, and content.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter results by tags | |
| type | No | Filter results by essay type | |
| limit | No | Maximum number of results | |
| query | Yes | Search query to match against title, description, and content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry behavioral disclosure; it does state the scope of the search (title, description, content), which is useful. However, it omits matching semantics, how the optional filters combine with the keyword, and any result-shape details, though 'search' does imply a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and the scope of search. No filler or redundant parameter listing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core behavior is captured for a simple search tool and the schema covers all parameters. But with no output schema, no annotations, and sibling tools present, the description could have explained what is returned and when to prefer list_essays or get_essay.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 four parameters. The description adds no parameter detail beyond repeating the query field's scope, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Search essays by keyword' and exactly which fields are searched. This differentiates it from list_essays (no keyword) and get_essay (single retrieval) without needing to inspect the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for keyword-driven lookup across title, description, and content, giving a clear context. It does not explicitly name alternatives or exclusions, but the contrast with list_essays/get_essay is evident from the wording.
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.
5 tool updates
v1.0.0- First observed
get_essay - First observed
get_framework_overview - First observed
get_knowledge_graph - First observed
list_essays - First observed
search_essays
TDQS
Scored across 5 tools
Each tool targets a distinct use case: listing, retrieving single items, searching, framework overview, and knowledge graph exploration. There is no overlap in purpose or ambiguous boundaries.
All tool names follow a clean verb_noun pattern using snake_case (list_, get_, search_). The naming is uniform and predictable.
Five tools is well-scoped for a content server. Each tool serves a clear function without redundancy or bloat.
The domain is read-only retrieval of essays and their relationships. Coverage is complete for this purpose, including listing, fetching, searching, and structural overviews.
Maintenance
Related MCP Connectors
Your portable context layer — load it into any AI.
Shared, versioned context that humans and AI agents can publish, review, annotate, and continue.
Access 30+ AI agent essays, CLAUDE.md generator, and readiness assessments.
Personal context for every AI: search, read, and write back to your private Markdown library.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to search, retrieve, and summarize content from workplace tools including Google Drive, Notion, Slack, and Confluence through secure Model Context Protocol.-
- FlicenseNot gradedqualityDmaintenanceEnables AI models to seamlessly integrate with external tools and data sources via the Model Context Protocol, extending functionality without modifying the core model.-
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to index, search, and retrieve engineering documentation, architecture, standards, and knowledge from the OpenHaus Engineering System via the Model Context Protocol.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to answer questions about a person's portfolio by exposing projects, experience, skills, and searchable content through the Model Context Protocol.16 npmMIT