Skip to main content
Glama
xuenyuxey

enterprise-knowledge-mcp

by xuenyuxey

Enterprise Knowledge MCP

An enterprise knowledge management service based on Model Context Protocol (MCP).

Provides three core capabilities for large language models:

Tool

Description

search_knowledge

Semantic search of the enterprise knowledge base

get_document

Retrieve the full document by document ID

search_cases

Search enterprise project cases

Project Structure

enterprise-knowledge-mcp/
├── src/
│   └── enterprise_knowledge_mcp/
│       ├── __init__.py          # 包入口
│       ├── server.py            # MCP 工具注册(协议层)
│       └── retriever.py         # 检索逻辑(业务层)
├── tests/
│   ├── test_server.py           # 单元测试
│   └── test_e2e.py              # MCP Client 端到端测试
├── scripts/
│   ├── seed_data.py             # 导入示例数据到 ChromaDB
│   └── download_model.py        # 下载嵌入模型(离线环境用)
├── pyproject.toml
├── server.json                  # MCP 服务描述清单
├── README.md
└── LICENSE

Related MCP server: Innovaas KMS MCP Server

Architecture Design

┌─────────────────────────────────────────┐
│  server.py  (协议层)                     │
│  - 注册 MCP Tool                        │
│  - 参数校验 & 输出格式化                  │
└──────────────┬──────────────────────────┘
               │ 调用
┌──────────────▼──────────────────────────┐
│  retriever.py  (业务层)                  │
│  - KnowledgeRetriever  知识库检索        │
│  - DocumentRetriever   文档检索          │
│  - CaseRetriever       案例检索          │
└──────────────┬──────────────────────────┘
               │ 替换实现
┌──────────────▼──────────────────────────┐
│  数据层(可插拔)                         │
│  - MockRetriever     开发/测试用          │
│  - ChromaRetriever   ChromaDB 向量检索   │
│  - 自定义 Retriever   ES / 数据库 / ...   │
└─────────────────────────────────────────┘

The retriever adopts a pluggable design of base class + implementation. In server.py, you only need to replace the instantiated object to switch backends; the tool registration code requires no changes.

Quick Start

Installation

# 克隆仓库
git clone https://github.com/your-username/enterprise-knowledge-mcp.git
cd enterprise-knowledge-mcp

# 创建虚拟环境
python -m venv .venv
.venv\Scripts\activate        # Windows
# source .venv/bin/activate   # Linux/macOS

# 安装(开发模式)
pip install -e ".[dev]"

Initialize ChromaDB Data

# 导入示例企业知识数据(知识库 5 条、文档 3 篇、案例 4 个)
python scripts/seed_data.py

Run the Service

# Mock 模式(无需 ChromaDB 数据)
python -m enterprise_knowledge_mcp.server

# ChromaDB 模式(需先执行 seed_data.py)
RETRIEVER_BACKEND=chroma python -m enterprise_knowledge_mcp.server

Run Tests

pytest tests/ -v

Connecting to MCP Clients

Claude Desktop

Add the following to claude_desktop_config.json:

{
  "mcpServers": {
    "enterprise-knowledge": {
      "command": "python",
      "args": ["-m", "enterprise_knowledge_mcp.server"],
      "cwd": "C:/path/to/enterprise-knowledge-mcp"
    }
  }
}

Python SDK

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

server_params = StdioServerParameters(
    command="python",
    args=["-m", "enterprise_knowledge_mcp.server"],
)

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        result = await session.call_tool(
            "search_knowledge", {"query": "人工智能"}
        )
        print(result.content[0].text)

Custom Retriever

Inherit the base class and implement the retrieve / get_document / search_cases methods:

from enterprise_knowledge_mcp.retriever import (
    KnowledgeRetriever,
    SearchResult,
)

class MyRetriever(KnowledgeRetriever):
    def retrieve(self, query: str, top_k: int = 5) -> list[SearchResult]:
        # 你的检索逻辑
        return [SearchResult(text="...", source="...", score=0.9)]

Then replace it in server.py:

from .retriever import MyRetriever

knowledge_retriever = MyRetriever()

License

MIT

Related MCP Connectors

Related MCP Servers