Axiom Meridian MCP server
io.github.abeljumanuel/axiom-meridian·v0.1.0Serves only the team rules and lessons learned relevant to a project. Code drifts. Meridian doesn't.
0 stars
Reviews
Write oneNobody has reviewed Axiom Meridian yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Axiom Meridian tools (28, 4 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
analyze_pr_feedbackLink PR review feedback to the most recent audit_pr record for the same pr_ref/project_id, returning the rules that applied at that time for the calling LLM to classify each feedback point.
approve_proposalApprove a pending proposal. For type='rule'/'lesson' this assigns a new RN-/LL- code, appends the atomic block to the scope's .md file, and inserts the corresponding row; for type='update' it splices the target's existing block in place instead. This is the single choke point that writes proposal content into both the .md file and SQLite together.
audit_prAudit a PR diff against a project's active rules and lessons (detail="full"): persists an audit record (SHA-256 diff hash + a snapshot of the rule versions evaluated) and returns the diff plus rules/lessons for the calling LLM to classify.
check_feature_against_rulesCheck a planned feature description against a project's active rules and lessons (detail="full"); persists a planning_checks record and returns the context for the calling LLM to flag conflicts.
convert_to_atomic_formatConvert a legacy markdown file into atomic-format pending_proposals, one per legacy block, with best-effort scope inference from each block's text. Never writes .md files directly — always stages for human review via `approve_proposal`.
create_pending_proposalwrite actionValidate and persist a pending proposal of type 'rule', 'lesson', or 'update' (private tags stripped from proposed_text). For type='update', target_id must reference an existing RN-*/LL-* id and the proposal inherits that target's scope_id. Does not write to rules/lessons or any .md file — approve_proposal does that after human review.
create_projectwrite actionCreate a new project scope and its knowledge base directories: a 'project-<id>' scope under parent_scope, plus knowledge-base/projects/ and lessons/projects/ directories with a placeholder rules .md file.
deprecate_rulewrite actionCreate a proposal to deprecate a rule or lesson on its own, without changing its scope (unlike promote_rule). Accepts both RN-* and LL-* ids. Only creates a pending_proposals row (type='deprecate') — no immediate effect; approve_proposal performs the actual deprecation after human review.
edit_proposalwrite actionUpdate the proposed_text and/or metadata of a still-pending proposal; its status stays 'pending'.
extract_lessons_from_transcriptReturn everything the calling LLM needs to extract candidate lessons from a transcript: the clean text, the project's scope chain with attributes, existing lessons for duplicate detection, and the canonical lesson template. Does not itself create any proposal — call create_pending_proposal per candidate.
extract_rules_from_transcriptReturn everything the calling LLM needs to extract candidate rules from a transcript: the clean text, the project's scope chain with attributes, existing rules for duplicate detection, and the canonical rule template. Does not itself create any proposal — call create_pending_proposal per candidate.
generate_embeddingsGenerate or update ChromaDB embeddings for active rules/lessons whose embedding_id is still NULL — an incremental backfill, not a full re-embed.
generate_project_skillsGenerate a Claude Code skill for a project from its resolved rules: writes .claude/skills/meridian/<project_id>/SKILL.md and references/rules.md under project_path, and updates its AGENTS.md.
get_lesson_templateReturn the canonical `## LL-XXX-NNN` atomic block template, its field descriptions, and usage instructions.
get_project_scope_resolutionResolve and cache a project's effective scope chain (most-specific first) with each scope's dynamic attributes (ADR-002).
get_rule_audit_logReturn the chronology of rule_history changes for a project or scope, plus any rules currently deprecated in that scope.
get_rule_contextReturn a rule's full text, its complete rule_history, and any lessons linked to it.
get_rule_templateReturn the canonical `## RN-XXX-NNN` atomic block template, its field descriptions, and usage instructions.
get_rule_timelineReturn a rule's chronological history and linked-lesson summary without loading full text — lighter than get_rule_context.
get_server_infoReport this running server process's version/commit, and whether the code on disk has changed since this process started — Python doesn't hot-reload, so an editable install that was `git pull`ed without restarting the server keeps serving the old code with no other visible sign of it (Hallazgo 7).
get_transcription_templateReturn the combined rule+lesson template guide and workflow instructions for turning a transcript into pending proposals.
index_lessons_from_markdownIndex lessons from a markdown file directly into SQLite.
index_rules_from_markdownIndex rules from a markdown file directly into SQLite.
list_pending_proposalsList pending proposals for human review, optionally filtered by project, type, or status.
promote_rulePromote a rule to a more general scope: marks the original as deprecated (in both SQLite and its source .md file) and records a PROMOTED rule_history entry. Does not create the rule in the new scope — that requires a separate proposal.
query_lessonsQuery active lessons visible to a project across its full scope hierarchy (most-specific scope first), via plain SQL filtering or — when query_text is set and embeddings exist — semantic search.
query_rulesQuery active rules visible to a project across its full scope hierarchy (most-specific scope first), via plain SQL filtering or — when query_text is set and embeddings exist — semantic search.
reject_proposalReject a pending proposal. No side effects besides updating the record.
Public scan report
scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it
- Code scan33 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Axiom Meridian compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 95% of 48,255 servers
- Tools
- 28
- the typical server has 7
- Tools that change things
- 14%
- typical: 0%. Fewer write tools means less an agent can break
What its tools let an agent do: 21 read · 4 create · 3 change
Install Axiom Meridian in Claude Code, Cursor or VS Code
claude mcp add axiom-meridian -- uvx axiom-meridian
What the publisher says
From the Axiom Meridian repository's README, as published. We do not edit it. Read it on GitHub
Index
- Project fact sheet
- General product description
- System architecture
- Data model
- API specification
- User stories
- Work tickets
- Pull requests
0. Project fact sheet
0.1. Your full name:
Juan Manuel Rojas González (abeljumanuel.rojas@gmail.com)
0.2. Project name:
Axiom Meridian — "Code drifts. Meridian doesn't."
0.3. Brief project description:
An MCP (Model Context Protocol) server that centralizes a team's institutional technical knowledge — coding rules and lessons learned — and delivers only the slice relevant to the current task, instead of forcing AI agents to read entire knowledge-base files on every session.
0.4. Project URL:
Not applicable (MCP) — Axiom Meridian is an MCP server for local use (stdio) or, optionally, HTTP/SSE bound to 127.0.0.1; there is no publicly reachable deployment URL.
0.5. Repository URL or compressed file
https://github.com/abeljumanuel/axiom-meridian-project
1. General product description
1.1. Objective:
Teams that work with AI coding agents accumulate institutional knowledge as long Markdown files: coding standards per language/framework, architecture decisions, and "lessons learned" from production incidents. This works while the files are small, but as they grow it creates three problems: every agent session re-reads the whole file even when only two or three rules apply to the current task (context and latency cost), relevance is all-or-nothing (there's no notion of "this project uses Quarkus, that one uses Spring Boot"), and there is no governance (anyone can edit the file directly, with no review or traceability).
Axiom Meridian solves this by indexing rules (RN-) and lessons (LL-) in an atomic block format, resolving a scope hierarchy (project → framework → language → global) to decide what applies to a given project, and serving only that filtered subset — optionally ranked by semantic relevance — through typed MCP tools. The Markdown files remain the single source of truth, and every change goes through explicit human approval.
More detail in Project Charter and Product Description.
1.2. Key features and functionality:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Axiom Meridian: common questions
- Is Axiom Meridian MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Axiom Meridian safety report
- How do I install Axiom Meridian?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Axiom Meridian need an API key?
- No secret keys are declared. It reads 2 settings from the environment.
- Is Axiom Meridian maintained?
- The last commit was 20 days ago (2026-10-15). The latest release is v0.1.0.
- How does Axiom Meridian compare with other MCP servers?
- safety score 92/100 (higher than 95% of 48,255 servers); tools 28 (the typical server has 7); tools that change things 14% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.