Skip to main content
Glama

mcp-server-3gpp

πŸ” MCP Server for 3GPP Specification Document Search

A Model Context Protocol (MCP) server that enables AI assistants to search, navigate, and retrieve content from 3GPP and IETF RFC specification documents.

Features

  • πŸ“š 207 specifications indexed β€” 114 3GPP/ETSI + 93 IETF RFC (66,109 sections)

  • πŸ” Hybrid search: BM25/FTS5 keyword search + optional sqlite-vec semantic search

  • πŸ—‚οΈ Hierarchical TOC navigation β€” browse spec structure before fetching sections

  • πŸ”— Cross-spec reference graph β€” 45,162 citation relationships extracted from corpus

  • 🧠 LLM-first design β€” 8 generic tools; LLM navigates freely, no hard-coded lookups

  • πŸ”„ MCP SDK compatible: stdio transport, JSON-RPC 2.0

Quick Install

# 1. Clone (Git LFS required for the pre-built database)
git lfs install
git clone https://github.com/Lee-SiHyeon/mcp-server-3gpp.git
cd mcp-server-3gpp

# 2. Install Node dependencies
npm install

# 3. Verify the database is present (~416 MB, tracked by Git LFS)
ls -lh data/corpus/3gpp.db

# 4. Test the server
npm start   # Should print: [3GPP MCP] Registered 8 tools (v2 DB mode)

No Git LFS?
Install it first: apt install git-lfs / brew install git-lfs / git-lfs.com
Then: git lfs pull inside the cloned repo.


MCP Client Configuration

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or
%APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "3gpp": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-3gpp/src/index.js"]
    }
  }
}

VS Code / GitHub Copilot

Add to .vscode/mcp.json in your workspace:

{
  "servers": {
    "3gpp": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-3gpp/src/index.js"]
    }
  }
}

GitHub Copilot CLI (~/.copilot/mcp.json)

{
  "mcpServers": {
    "3gpp": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-3gpp/src/index.js"]
    }
  }
}

Custom DB path (optional)

"env": { "THREEGPP_DB_PATH": "/custom/path/to/3gpp.db" }

Available Tools (8)

Tool

Description

get_spec_catalog

List all 207 specs with metadata (title, version, section count). Use first to discover spec IDs.

get_spec_toc

Get section hierarchy (TOC) for a spec. Returns section numbers, titles, page numbers.

get_section

Fetch full text of a section by sectionId (e.g. ts_24_301:5.5.1.2.4) or spec+number.

search_3gpp_docs

Keyword/semantic hybrid search across all sections. Supports quoted phrases and spec filter.

search_related_sections

Given an anchor section, find parent/child/sibling/similar sections.

get_spec_references

Cross-spec citation graph: which specs does this spec cite? Who cites it?

get_ingest_guide

Returns step-by-step guide for expanding the corpus (ETSI download, RFC ingest, AutoRAG pipeline).

list_specs

Simple spec list with section counts (legacy-compatible alias for get_spec_catalog).

Example Queries (for LLM)

# Find the 5G attach procedure
search_3gpp_docs("registration procedure NR", spec="ts_24_501")

# Browse TS 24.301 structure
get_spec_toc("ts_24_301", maxDepth=3)

# Read a specific section
get_section("ts_24_301:5.5.1.2.4")

# What does TS 24.301 reference?
get_spec_references("ts_24_301", direction="outgoing", inCorpusOnly=true)

# Navigate from a section outward
search_related_sections("ts_24_301:5.5.1", sameSpecOnly=false)

Corpus Statistics

Metric

Value

3GPP/ETSI specs

114

IETF RFC specs

93

Total specs

207

Total sections

66,109

Cross-spec references

45,162

DB size

~416 MB (Git LFS)

Full-text search

FTS5 / BM25

Semantic search

Optional (sqlite-vec, requires generate_embeddings.js)

Included Spec Families

3GPP/ETSI (114 specs)

  • NAS: TS 24.008, 24.301, 24.501, 24.229 (IMS SIP)

  • RRC: TS 25.331, 36.331, 38.331

  • Conformance: TS 34.123-1, 36.523-1, 38.523-1, 51.010-1

  • 5G Core SBA: TS 29.500–29.599 (62 specs)

  • Security: TS 33.102, 33.401, 33.501

  • USIM: TS 31.102, 31.121, 31.124

  • Architecture: TS 23.xxx, 38.xxx series

IETF RFC (93 specs)

  • SIP/VoIP: RFC 3261, 3262–3265, 3311, 3428

  • Diameter: RFC 3588, 4005, 6733

  • TLS/DTLS: RFC 5246, 8446, 9147

  • QUIC: RFC 9000–9002

  • HTTP: RFC 7540, 9110–9114

  • OAuth/JWT: RFC 6749, 6750, 7519, 8693, 9068

  • DNS: RFC 1034, 1035, 4033–4035

  • WebRTC, SCTP, RTP, SDP, STUN, TURN, IPsec, IKEv2, BGP, MPLS…


Architecture

                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚        MCP Client (LLM)          β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚ JSON-RPC 2.0 (stdio)
                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚      src/index.js (MCP Server)   β”‚
                  β”‚   8 tools registered             β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚     data/corpus/3gpp.db          β”‚
                  β”‚  SQLite + FTS5 + spec_references β”‚
                  β”‚  207 specs / 66,109 sections     β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

DB Schema (key tables)

  • specs β€” one row per specification (id, title, version, series)

  • sections β€” full section text (id, spec_id, section_number, content, depth)

  • toc β€” lightweight navigation index (section_number, title, brief, page)

  • sections_fts β€” FTS5 virtual table, BM25 keyword search

  • spec_references β€” cross-spec citation graph (45,162 rows)

  • vec_sections β€” sqlite-vec float[384] embeddings (optional, requires generation)


Rebuilding the Corpus

The pre-built data/corpus/3gpp.db is included via Git LFS. Only rebuild if you want to add new specs.

Prerequisites

# Python packages (for PDF extraction only)
pip install -r requirements.txt   # PyMuPDF + requests

Add new 3GPP/ETSI specs

npm run corpus:download   # Download latest PDFs from ETSI
npm run corpus:extract    # Extract sections β†’ JSONL
npm run corpus:build      # Build/update SQLite DB
# Or all at once:
npm run corpus:full

Add RFC documents

npm run rfc:all           # Download + extract + load all priority RFCs
# Or step by step:
npm run rfc:download
npm run rfc:extract
npm run rfc:load

Rebuild cross-spec reference graph

node scripts/extract_cross_refs.js --verbose

Enable semantic search (optional)

node scripts/generate_embeddings.js   # Generates float[384] embeddings into vec_sections

Testing

npm test          # Full test suite (node:test)
npm run validate  # Validate DB and MCP server

Project Structure

mcp-server-3gpp/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.js                  # MCP server entry point
β”‚   β”œβ”€β”€ tools/                    # 8 tool handlers
β”‚   β”‚   β”œβ”€β”€ getSpecCatalog.js
β”‚   β”‚   β”œβ”€β”€ getSpecToc.js
β”‚   β”‚   β”œβ”€β”€ getSection.js
β”‚   β”‚   β”œβ”€β”€ search3gppDocs.js
β”‚   β”‚   β”œβ”€β”€ searchRelatedSections.js
β”‚   β”‚   β”œβ”€β”€ getSpecReferences.js  # Cross-spec citation graph
β”‚   β”‚   β”œβ”€β”€ getIngestGuide.js
β”‚   β”‚   └── listSpecs.js
β”‚   β”œβ”€β”€ search/
β”‚   β”‚   └── hybridRanker.js       # BM25 + vector fusion (Ξ±=0.4)
β”‚   └── db/
β”‚       β”œβ”€β”€ connection.js         # better-sqlite3 singleton
β”‚       └── schema.js             # Schema init + sqlite-vec probe
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ extract_cross_refs.js     # Cross-reference extraction
β”‚   β”œβ”€β”€ download_etsi_specs.py    # ETSI PDF downloader
β”‚   β”œβ”€β”€ download_rfc.py           # IETF RFC downloader
β”‚   β”œβ”€β”€ extract_pdf_structure.py  # PyMuPDF section extractor
β”‚   β”œβ”€β”€ extract_rfc_structure.py  # RFC text parser
β”‚   β”œβ”€β”€ build_section_spans.py    # Section boundary detector
β”‚   └── build_corpus.js           # SQLite builder
β”œβ”€β”€ data/
β”‚   └── corpus/
β”‚       └── 3gpp.db               # Pre-built corpus (~416 MB, Git LFS)
β”œβ”€β”€ db/
β”‚   └── schema.sql                # SQLite DDL
β”œβ”€β”€ test/                         # node:test suite
β”œβ”€β”€ requirements.txt              # Python deps (PyMuPDF, requests)
└── package.json

License

MIT β€” see LICENSE.

Disclaimer

Not affiliated with 3GPP. Specification documents are copyrighted by ETSI and 3GPP partners. Users are responsible for complying with applicable terms when downloading specification PDFs.

Install Server
A
security – no known vulnerabilities
A
license - permissive license
B
quality - B tier

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Lee-SiHyeon/mcp-server-3gpp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server