Skip to content

Commit 379e676

Browse files
committed
feat: add MCP Registry publishing support
2 parents a9c25e3 + d6f3d50 commit 379e676

4 files changed

Lines changed: 84 additions & 61 deletions

File tree

.github/workflows/release.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,30 @@ jobs:
5757
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
5858
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
5959
run: npx semantic-release
60+
61+
mcp-registry:
62+
needs: release
63+
runs-on: ubuntu-latest
64+
if: github.ref == 'refs/heads/main'
65+
permissions:
66+
id-token: write
67+
contents: read
68+
69+
steps:
70+
- uses: actions/checkout@v4
71+
with:
72+
fetch-depth: 0
73+
74+
- name: Download MCP Publisher
75+
run: |
76+
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/latest/mcp-publisher_linux_amd64.tar.gz" | tar xz mcp-publisher
77+
78+
- name: Sync version from git tag
79+
run: |
80+
VERSION=${GITHUB_REF#refs/tags/v}
81+
jq --arg v "$VERSION" '.version = $v | .packages[0].version = $v' server.json > server.json.tmp && mv server.json.tmp server.json
82+
83+
- name: Publish to MCP Registry
84+
run: |
85+
./mcp-publisher login github-oidc
86+
./mcp-publisher publish

README.md

Lines changed: 38 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,47 @@
1-
[![npm version](https://badge.fury.io/js/@andrea9293%2Fmcp-documentation-server.svg)](https://badge.fury.io/js/@andrea9293%2Fmcp-documentation-server) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/andrea9293/mcp-documentation-server) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2-
3-
[![Donate with PayPal](https://i.ibb.co/SX4qQBfm/paypal-donate-button171.png)](https://www.paypal.com/donate/?hosted_button_id=HXATGECV8HUJN)
1+
[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-published-blue)](https://registry.modelcontextprotocol.io/servers/io.github.andrea9293/mcp-documentation-server)
2+
[![npm version](https://badge.fury.io/js/@andrea9293%2Fmcp-documentation-server.svg)](https://badge.fury.io/js/@andrea9293%2Fmcp-documentation-server)
3+
[![GitHub Stars](https://img.shields.io/github/stars/andrea9293/mcp-documentation-server?style=social)](https://github.com/andrea9293/mcp-documentation-server)
4+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5+
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/andrea9293/mcp-documentation-server)
46

7+
[![Donate with PayPal](https://i.ibb.co/SX4qQBfm/paypal-donate-button171.png)](https://www.paypal.com/donate/?hosted_button_id=HXATGECV8HUJN)
58
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://buymeacoffee.com/andrea.bravaccino)
69

7-
810
# MCP Documentation Server
911

10-
A TypeScript-based [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that provides local-first document management and semantic search. Documents are stored in an embedded [Orama](https://orama.com/) vector database with hybrid search (full-text + vector), intelligent chunking, and local AI embeddings — no external database or cloud service required.
11-
12-
## Core capabilities
13-
14-
### 🌐 Web UI
15-
- **Built-in Web Interface**: A full-featured web dashboard starts automatically alongside the MCP server — no additional setup required
16-
- **Complete Tool Coverage**: Every MCP tool is accessible from the browser: add/view/delete documents, semantic search, AI search, file uploads, and context window exploration
17-
- **Drag & Drop Uploads**: Upload `.txt`, `.md`, and `.pdf` files directly from the browser
18-
- **Configurable**: Disable with `START_WEB_UI=false` or change the port with `WEB_PORT`
12+
**Local-first document management and semantic search for AI coding agents.** No external databases, no cloud APIs, no vendor lock-in.
1913

20-
### 🔍 Search & Intelligence
21-
- **Hybrid Search**: Combined full-text and vector similarity powered by Orama, for both single-document and cross-document queries
22-
- **AI-Powered Search** 🤖: Advanced document analysis with Google Gemini AI for contextual understanding and intelligent insights (optional, requires API key)
23-
- **Context Window Retrieval**: Fetch surrounding chunks to provide LLMs with richer context
14+
Unlike other MCP servers that are CLI-only, this one ships with a **full web dashboard** — browse, search, upload, and manage your knowledge base from your browser. Every MCP tool is also exposed as a REST API, giving AI agents a lean, schema-free interface.
2415

25-
### ⚡ Performance & Architecture
26-
- **Orama Vector DB**: Embedded search engine with zero native dependencies — replaces manual JSON storage and cosine similarity
27-
- **LRU Embedding Cache**: Avoids recomputing embeddings for repeated content and queries
28-
- **Parent-Child Chunking**: Documents are split into large context-preserving parent chunks and small precise child chunks for vector search — search results include both the matched fragment and the full surrounding context
29-
- **Streaming File Reader**: Handles large files without high memory usage
30-
- **Automatic Migration**: Legacy JSON documents are migrated to Orama on first startup — no manual intervention needed
31-
32-
### 📁 File Management
33-
- **Upload processing**: Drop `.txt`, `.md`, or `.pdf` files into the uploads folder and process them with a single tool call
34-
- **Copy-based storage**: Original files are backed up alongside the database
35-
- **Local-only storage**: All data resides in `~/.mcp-documentation-server/`
16+
- **🏠 Runs fully offline** — Orama vector DB with local AI embeddings (Transformers.js)
17+
- **🌐 Built-in Web UI** — starts automatically on port 3080 alongside the MCP server
18+
- **🔍 Hybrid search** — full-text + vector similarity with parent-child chunking
19+
- **🤖 Optional AI search** — Google Gemini for advanced document analysis (bring your own key)
20+
- **📁 Drag & drop uploads**`.txt`, `.md`, `.pdf` support
21+
- **📦 Published on the [MCP Registry](https://registry.modelcontextprotocol.io/servers/io.github.andrea9293/mcp-documentation-server)** — installable via npx, no clone needed
3622

3723
## Quick Start
3824

39-
### Basic workflow
25+
```json
26+
{
27+
"mcpServers": {
28+
"documentation": {
29+
"command": "npx",
30+
"args": ["-y", "@andrea9293/mcp-documentation-server"]
31+
}
32+
}
33+
}
34+
```
4035

41-
1. Add documents using `add_document` or place `.txt` / `.md` / `.pdf` files in the uploads folder and call `process_uploads`.
42-
2. Search across everything with `search_all_documents`, or within a single document with `search_documents`.
43-
3. Use `get_context_window` to fetch neighboring chunks and give the LLM broader context.
36+
Open your browser at `http://localhost:3080` — the web UI starts automatically.
4437

4538
### 🤖 Agent Skill (REST API) — recommended for AI agents
4639

47-
Every MCP tool is also accessible via the **REST API** on `http://127.0.0.1:3080/api/`. **This is the recommended way to interact with the server from AI agents** (Claude Code, OpenCode, Gemini CLI, Cursor, etc.) because it avoids loading MCP tool schemas into the conversation context — only the response JSON enters
40+
Every MCP tool is also accessible via the **REST API** on `http://127.0.0.1:3080/api/`. This is the recommended way to interact from AI agents (Claude Code, OpenCode, Gemini CLI, Cursor) because it avoids loading MCP tool schemas into the conversation context — only the response JSON enters.
4841

4942
```bash
50-
# Check if the server is running
5143
curl -s http://127.0.0.1:3080/api/config
52-
53-
# List all documents
5444
curl -s http://127.0.0.1:3080/api/documents
55-
56-
# Search across all documents
5745
curl -s -X POST http://127.0.0.1:3080/api/search-all \
5846
-H "Content-Type: application/json" \
5947
-d '{"query": "your search", "limit": 5}'
@@ -62,21 +50,19 @@ curl -s -X POST http://127.0.0.1:3080/api/search-all \
6250
A ready-to-use skill is included at `skills/documentation-server/SKILL.md` — it teaches your agent every endpoint with examples. Install it:
6351

6452
```bash
65-
# Install from the public repo
6653
npx skills add https://github.com/andrea9293/mcp-documentation-server --skill documentation-server
6754
```
6855

69-
Configure the mcp only if you want a granular control about environment variables
56+
### Basic workflow
7057

71-
### Web UI
58+
1. Add documents using `add_document` or place `.txt` / `.md` / `.pdf` files in the uploads folder and call `process_uploads`.
59+
2. Search across everything with `search_all_documents`, or within a single document with `search_documents`.
60+
3. Use `get_context_window` to fetch neighboring chunks and give the LLM broader context.
7261

73-
The web interface starts automatically on port **3080** when the MCP server launches. Open your browser at:
62+
## Web UI
7463

75-
```
76-
http://localhost:3080
77-
```
64+
The web interface starts automatically on port **3080** when the MCP server launches. From the web UI you can:
7865

79-
From the web UI you can:
8066
- 📊 **Dashboard** — overview of all documents and stats
8167
- 📄 **Documents** — browse, view, and delete documents
8268
-**Add Document** — create documents with title, content, and metadata
@@ -86,45 +72,36 @@ From the web UI you can:
8672
- 📁 **Upload Files** — drag & drop files and process them into the knowledge base
8773
- 🪟 **Context Window** — explore chunks around a specific index
8874

89-
### Configure an MCP client
90-
91-
Example configuration for an MCP client (e.g., Claude Desktop, VS Code):
75+
## Configure an MCP client
9276

93-
#### Quick Start
77+
#### Minimal
9478

9579
```json
9680
{
9781
"mcpServers": {
9882
"documentation": {
9983
"command": "npx",
100-
"args": [
101-
"-y",
102-
"@andrea9293/mcp-documentation-server"
103-
]
84+
"args": ["-y", "@andrea9293/mcp-documentation-server"]
10485
}
10586
}
10687
}
10788
```
10889

109-
Advanced with env vars (all vars are optional)
110-
90+
#### With environment variables (all optional)
11191

11292
```json
11393
{
11494
"mcpServers": {
11595
"documentation": {
11696
"command": "npx",
117-
"args": [
118-
"-y",
119-
"@andrea9293/mcp-documentation-server"
120-
],
97+
"args": ["-y", "@andrea9293/mcp-documentation-server"],
12198
"env": {
12299
"MCP_BASE_DIR": "/path/to/workspace",
123100
"GEMINI_API_KEY": "your-api-key-here",
124101
"MCP_EMBEDDING_MODEL": "Xenova/all-MiniLM-L6-v2",
125102
"START_WEB_UI": "true",
126103
"WEB_HOST": "127.0.0.1",
127-
"WEB_PORT": "3080",
104+
"WEB_PORT": "3080"
128105
}
129106
}
130107
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"name": "@andrea9293/mcp-documentation-server",
3+
"mcpName": "io.github.andrea9293/mcp-documentation-server",
34
"version": "1.14.0",
45
"description": "A TypeScript MCP server for document management and semantic search with embeddings",
56
"main": "dist/server.js",

server.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"$schema": "https://registry.modelcontextprotocol.io/schema/server.json",
3+
"name": "io.github.andrea9293/mcp-documentation-server",
4+
"description": "Local-first document management and semantic search for AI coding agents",
5+
"repository": {
6+
"type": "git",
7+
"url": "https://github.com/andrea9293/mcp-documentation-server"
8+
},
9+
"version": "1.14.0",
10+
"packages": [
11+
{
12+
"name": "@andrea9293/mcp-documentation-server",
13+
"type": "npm",
14+
"version": "1.14.0",
15+
"transport": "stdio"
16+
}
17+
]
18+
}

0 commit comments

Comments
 (0)