mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-09-12 04:01:35 +00:00
Adds a fully self-contained `mcp/` package that exposes Semantica as a
Model Context Protocol server over stdio (JSON-RPC 2.0).
17 tools across 5 domains:
- Extraction: extract_entities, extract_relations, extract_all
- Decision intelligence: record_decision, query_decisions, find_precedents,
get_causal_chain, analyze_decision_impact
- Knowledge graph: add_entity, add_relationship, search_graph,
get_graph_summary, get_graph_analytics
- Reasoning: run_reasoning, abductive_reasoning
- Export & provenance: export_graph (JSON/CSV/GraphML/Parquet/RDF), get_provenance
4 resources: semantica://graph/summary, semantica://decisions/list,
semantica://schema/info, semantica://ontology/schema
Package layout:
mcp/__init__.py + __main__.py — entry points (python -m mcp)
mcp/server.py — SemanticaMCPServer + stdio event loop
mcp/session.py — lazy ContextGraph singleton
mcp/schemas.py — JSON Schema for all 17 tool inputs
mcp/tools/{extraction,decisions,graph,reasoning,export}.py
mcp/resources/registry.py — URI → handler map
mcp/README.md — per-tool setup (Claude Code, Cursor, Windsurf,
Cline, Continue, VS Code, Amazon Q)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
243 lines
5.4 KiB
Markdown
243 lines
5.4 KiB
Markdown
# Semantica MCP Server
|
|
|
|
A fully modular [Model Context Protocol](https://modelcontextprotocol.io/) server for the Semantica knowledge graph.
|
|
Connects Claude Code, Cursor, Windsurf, Cline, Continue, VS Code (GitHub Copilot), and any other MCP-compatible AI tool directly to your Semantica graph.
|
|
|
|
---
|
|
|
|
## Quick start
|
|
|
|
```bash
|
|
# From the repo root
|
|
pip install -e ".[mcp]"
|
|
|
|
# Test the server (type a JSON-RPC request, press Enter)
|
|
python -m mcp
|
|
```
|
|
|
|
Or point your AI tool at it (see per-tool configs below).
|
|
|
|
---
|
|
|
|
## Transport
|
|
|
|
**stdio** — the server reads newline-delimited JSON-RPC 2.0 from `stdin` and writes responses to `stdout`.
|
|
Log/debug output goes to `stderr` only.
|
|
|
|
```
|
|
python -m mcp [--debug]
|
|
```
|
|
|
|
---
|
|
|
|
## Tools (17 total)
|
|
|
|
### Extraction
|
|
|
|
| Tool | Description |
|
|
|---|---|
|
|
| `extract_entities` | Named entity recognition (NER) — people, places, orgs, concepts |
|
|
| `extract_relations` | Relation extraction + (subject, predicate, object) triplets |
|
|
| `extract_all` | Full pipeline: NER + coreference + relations + events + triplets |
|
|
|
|
### Decision Intelligence
|
|
|
|
| Tool | Description |
|
|
|---|---|
|
|
| `record_decision` | Record a decision with context, confidence, causal links |
|
|
| `query_decisions` | Query decisions by natural language or structured filters |
|
|
| `find_precedents` | Find past decisions similar to a scenario (hybrid similarity) |
|
|
| `get_causal_chain` | Trace upstream/downstream causal chain from a decision |
|
|
| `analyze_decision_impact` | Analyse downstream influence of a decision |
|
|
|
|
### Knowledge Graph
|
|
|
|
| Tool | Description |
|
|
|---|---|
|
|
| `add_entity` | Add a node/entity to the graph |
|
|
| `add_relationship` | Add a directed edge between two entities |
|
|
| `search_graph` | Search nodes by label or ID substring |
|
|
| `get_graph_summary` | Node/edge counts, decision count, type breakdown |
|
|
| `get_graph_analytics` | PageRank, betweenness, degree centrality, community detection |
|
|
|
|
### Reasoning
|
|
|
|
| Tool | Description |
|
|
|---|---|
|
|
| `run_reasoning` | Forward-chaining IF/THEN rules over facts |
|
|
| `abductive_reasoning` | Generate plausible hypotheses for observations |
|
|
|
|
### Export & Provenance
|
|
|
|
| Tool | Description |
|
|
|---|---|
|
|
| `export_graph` | Export graph to JSON, CSV, GraphML, Parquet, Turtle, N-Triples, RDF/XML, JSON-LD |
|
|
| `get_provenance` | Audit history and source lineage for a node |
|
|
|
|
---
|
|
|
|
## Resources (4 total)
|
|
|
|
| URI | Description |
|
|
|---|---|
|
|
| `semantica://graph/summary` | Live node/edge counts and type breakdown |
|
|
| `semantica://decisions/list` | Most recent 50 decisions |
|
|
| `semantica://schema/info` | Schema version, node/edge types, tool names |
|
|
| `semantica://ontology/schema` | Full ontology schema |
|
|
|
|
---
|
|
|
|
## Per-tool configuration
|
|
|
|
### Claude Code (`~/.claude/settings.json`)
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"semantica": {
|
|
"command": "python",
|
|
"args": ["-m", "mcp"],
|
|
"cwd": "/path/to/semantica"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Or use the plugin bundle:
|
|
```bash
|
|
claude mcp add semantica python -m mcp --cwd /path/to/semantica
|
|
```
|
|
|
|
---
|
|
|
|
### Cursor (`~/.cursor/mcp.json`)
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"semantica": {
|
|
"command": "python",
|
|
"args": ["-m", "mcp"],
|
|
"cwd": "/path/to/semantica"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Windsurf (`~/.codeium/windsurf/mcp_config.json`)
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"semantica": {
|
|
"command": "python",
|
|
"args": ["-m", "mcp"],
|
|
"cwd": "/path/to/semantica"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Cline (VS Code extension settings)
|
|
|
|
In your VS Code `settings.json`:
|
|
|
|
```json
|
|
{
|
|
"cline.mcpServers": {
|
|
"semantica": {
|
|
"command": "python",
|
|
"args": ["-m", "mcp"],
|
|
"cwd": "/path/to/semantica"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Continue (`~/.continue/config.json`)
|
|
|
|
```json
|
|
{
|
|
"mcpServers": [
|
|
{
|
|
"name": "semantica",
|
|
"command": "python",
|
|
"args": ["-m", "mcp"],
|
|
"cwd": "/path/to/semantica"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### VS Code (GitHub Copilot) — `.vscode/mcp.json`
|
|
|
|
```json
|
|
{
|
|
"servers": {
|
|
"semantica": {
|
|
"type": "stdio",
|
|
"command": "python",
|
|
"args": ["-m", "mcp"],
|
|
"cwd": "${workspaceFolder}"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Amazon Q Developer
|
|
|
|
Add to your Q Developer MCP config:
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"semantica": {
|
|
"command": "python",
|
|
"args": ["-m", "mcp"],
|
|
"cwd": "/path/to/semantica"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Environment variables
|
|
|
|
| Variable | Default | Description |
|
|
|---|---|---|
|
|
| `SEMANTICA_KG_PATH` | *(in-memory)* | Path to persist/load the graph (JSON file) |
|
|
|
|
---
|
|
|
|
## Package structure
|
|
|
|
```
|
|
mcp/
|
|
├── __init__.py # Package entry, re-exports SemanticaMCPServer + main
|
|
├── __main__.py # python -m mcp entry point
|
|
├── server.py # SemanticaMCPServer class + stdio event loop
|
|
├── session.py # Lazy ContextGraph singleton (get_graph / reset_graph)
|
|
├── schemas.py # JSON Schema definitions for all tool inputs
|
|
├── tools/
|
|
│ ├── __init__.py # Assembles TOOL_DEFINITIONS list
|
|
│ ├── extraction.py # NER, relation extraction, full pipeline
|
|
│ ├── decisions.py # Record, query, precedents, causal chain, impact
|
|
│ ├── graph.py # Add entity/relationship, search, summary, analytics
|
|
│ ├── reasoning.py # Forward-chaining rules, abductive hypotheses
|
|
│ └── export.py # Graph export (multi-format) + provenance
|
|
└── resources/
|
|
├── __init__.py # Re-exports RESOURCE_DEFINITIONS + handle_resource_read
|
|
└── registry.py # URI → handler map for the 4 semantica:// resources
|
|
```
|