semarcy-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., "@semarcy-mcpExplain xDM data modeling concepts"
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.
semarcy-mcp
MCP server that provides AI assistants with RAG-powered access to Semarchy documentation (xDM, xDI, xDG). Connect it to Claude Desktop or any MCP-compatible client to search and retrieve relevant Semarchy docs.
Prerequisites
Related MCP server: Dedalus MCP Documentation Server
Quick Start (Docker)
1. Clone the repo
git clone <repo-url> && cd semarcy-mcp2. Build the Docker image
The image includes pre-ingested documentation, so it's ready to use immediately.
docker build -t semarcy-mcp .3. Set up your API key
cp .env.example .envEdit .env and replace the placeholder with your actual Voyage AI key. This file is used by Docker (--env-file) and by local development (loaded automatically via python-dotenv).
4. Configure Claude Desktop
Add the server to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"semarcy-docs": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--env-file", "/absolute/path/to/semarcy-mcp/.env",
"semarcy-mcp"
]
}
}
}Replace /absolute/path/to/semarcy-mcp/.env with the actual path to your .env file.
5. Restart Claude Desktop
You can now ask Claude questions about Semarchy xDM, xDI, and xDG.
Updating the Documentation Index
The Docker image includes pre-ingested documentation, so most users never need to re-ingest. If Semarchy updates their docs and you want the latest content:
docker run --rm --env-file .env -v semarcy-data:/data/chroma semarcy-mcp \
ingest --db-path /data/chroma --clearThen update your Claude Desktop config to mount the same volume:
{
"mcpServers": {
"semarcy-docs": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--env-file", "/absolute/path/to/semarcy-mcp/.env",
"-v", "semarcy-data:/data/chroma",
"semarcy-mcp"
]
}
}
}Local Development (without Docker)
# Install dependencies
uv sync
# Set up your API key (python-dotenv loads this automatically)
cp .env.example .env
# Edit .env with your actual key
# Ingest docs (takes a while on first run)
uv run semarcy-mcp ingest
# Run the MCP server
uv run semarcy-mcp serve
# Test with MCP Inspector
mcp dev src/semarcy_mcp/server.pyAvailable MCP Tools
Tool | Description |
| Search Semarchy documentation with a natural language query. Returns relevant chunks with source URLs. |
| List available topic areas across Semarchy products. Useful for discovering what documentation is indexed. |
Environment Variables
Variable | Required | Description |
| Yes | Voyage AI API key for embedding search queries |
| No | Override ChromaDB storage path (default: |
Available Tools
2 toolslist_semarchy_topicsA
List available Semarchy documentation topics and products.
Returns an overview of what documentation has been indexed, including products and page counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden, and it does disclose the return shape ('products and page counts'), which is useful context. It stops short of stating that the call is read-only, side-effect free, or how large the listing can get, though an output schema exists to cover return structure.
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 core purpose and followed immediately by the return contents. No filler, no restatement of the tool name.
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 zero-parameter listing tool with an output schema, the description plus structured fields give an agent everything needed to invoke it. The only real gap is the absence of guidance routing between this tool and search_semarchy_docs.
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 tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema already shows. Baseline of 4 applies for a parameterless listing tool.
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 ('List available Semarchy documentation topics and products') and clarifies the scope as an indexed-content overview. It is clear on its own, but never names or contrasts with its only sibling search_semarchy_docs, so an agent must infer the division of labor.
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?
Usage is only implied: 'Returns an overview of what documentation has been indexed' suggests a discovery/browse role that logically precedes search_semarchy_docs, but no when-to-use condition, prerequisite, or alternative is stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_semarchy_docsB
Search Semarchy documentation (xDM, xDI, xDG) using semantic search.
Args:
query: Natural language search query about Semarchy products.
product: Filter by product: "xdm", "xdi", or "xdg". Omit to search all.
max_results: Maximum number of results to return (default 5).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| product | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that matching is semantic and gives the default result count, which is useful, but it says nothing about rate limits, permissions, behavior on empty results, or how many documents are indexed. For an unannotated tool this is a thin disclosure.
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 purpose leads, followed by a compact Args list with no filler. Every line earns its place; the only mild redundancy is restating the product values that also appear in the sibling scope line.
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?
An output schema exists, so return values need not be described. Parameters are well covered and the purpose is clear; the remaining gap is usage routing against list_semarchy_topics, which keeps it just short of complete.
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 0%, so the description must compensate, and it largely does: it explains query as natural language, enumerates the exact product filter values ("xdm", "xdi", "xdg") with the omit-to-search-all behavior, and states max_results' default. This meaningfully exceeds what the bare schema provides.
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 specific verb (Search), resource (Semarchy documentation), and even the matching mechanism (semantic search), covering the xDM/xDI/xDG scope. It is clear and unambiguous, but it never differentiates itself from the sibling list_semarchy_topics, so it falls short of a 5.
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?
There is no statement of when to use this tool versus list_semarchy_topics, nor any prerequisites or exclusions. The only conditional instruction ('Omit to search all') concerns a single parameter's behavior rather than task-level routing, leaving the agent to infer when semantic search is appropriate.
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.
2 tool updates
v0.1.0- First observed
list_semarchy_topics - First observed
search_semarchy_docs
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one performs semantic searching, the other lists available topics/products for browsing. An agent can easily choose between them.
Both names follow a consistent verb_noun pattern (search_semarchy_docs, list_semarchy_topics) and use snake_case uniformly.
Two tools is quite thin for a documentation server; while search and topic listing cover the core, a third tool (e.g., get page by ID) would make the surface more useful.
Search and topic listing cover discovery, but there is no way to retrieve a full documentation page by identifier, which is a common need after finding a result. This notable gap limits depth of use.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for AI access to Swagger by SmartBear.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceMCP server that exposes NetApp AI Data Engine's RAG search for semantic document retrieval.BSD 3-Clause- AlicenseAqualityDmaintenanceAn MCP server that serves documentation and enables AI-powered search, Q\&A, and document analysis for developer tools and guides.54MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that provides tools for retrieving and processing documentation through vector search, enabling AI assistants to augment their responses with relevant documentation context.19 npmMIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that gives AI coding assistants access to up-to-date API documentation via RAG by crawling documentation sites, indexing them into a vector store, and enabling semantic queries.MIT