You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- primary command is now mcp-gtags-server (matches repo and PyPI package);
gtags-mcp remains as a compatibility alias so existing MCP client configs
and background servers keep working
- all user-facing output, docs, and the installer use the new name
Every AI coding agent — Claude Code, Cursor, Codex, you name it — answers *"where is this function defined?"* the same way: **grep the entire tree**. On a million-line C/C++ codebase that's a full scan per question, and the output is a firehose: every comment, string literal, and unrelated match, dumped straight into the model's context window.
19
19
20
-
**mcp-gtags-server** replaces those scans with indexed lookups powered by [GNU Global (gtags)](https://www.gnu.org/software/global/) — the same tags engine kernel and systems developers have trusted for decades — exposed to agents over the [Model Context Protocol](https://modelcontextprotocol.io/).
20
+
**mcp-gtags-server** replaces those scans with indexed lookups powered by [GNU Global (gtags)](https://www.gnu.org/software/global/) — the same tags engine kernel and systems developers have trusted for decades — exposed to agents over the [Model Context Protocol](https://modelcontextprotocol.io/). Built for the codebases LSP-based tools can't handle: kernel-scale C/C++, trees that don't currently compile, machines you can't sudo on.
21
21
22
22
-**~100× faster per query** — milliseconds instead of seconds, at any codebase size
23
23
-**Radically less noise** — the definition, not 7,873 lines of matches
@@ -81,18 +81,18 @@ Prefer stdio (client-launched processes) over a background server? That works to
81
81
{
82
82
"mcpServers": {
83
83
"gtags": {
84
-
"command": "gtags-mcp"
84
+
"command": "mcp-gtags-server"
85
85
}
86
86
}
87
87
}
88
88
```
89
89
90
-
That's it. No indexing step, no configuration, **no per-repo setup** — 20 repos need zero extra installs. Ask your agent *"who calls `tcp_v4_rcv`?"* — the first query in any repo builds that repo's index automatically, and every query after that is answered in milliseconds. Run `gtags-mcp doctor` any time to see what the server detects, or `gtags-mcp config` to re-print the client configuration.
90
+
That's it. No indexing step, no configuration, **no per-repo setup** — 20 repos need zero extra installs. Ask your agent *"who calls `tcp_v4_rcv`?"* — the first query in any repo builds that repo's index automatically, and every query after that is answered in milliseconds. Run `mcp-gtags-server doctor` any time to see what the server detects, or `mcp-gtags-server config` to re-print the client configuration.
91
91
92
92
<details>
93
93
<summary><b>Background server details</b> (network access, port, lifecycle)</summary>
94
94
95
-
The installer runs `gtags-mcp --transport http --host 127.0.0.1 --port 8383` in the background (pid: `~/.gtags-mcp/server.pid`, log: `~/.gtags-mcp/server.log`). Environment overrides for the installer:
95
+
The installer runs `mcp-gtags-server --transport http --host 127.0.0.1 --port 8383` in the background (pid: `~/.gtags-mcp/server.pid`, log: `~/.gtags-mcp/server.log`). Environment overrides for the installer:
96
96
97
97
| Variable | Default | Meaning |
98
98
|---|---|---|
@@ -109,7 +109,7 @@ The installer runs `gtags-mcp --transport http --host 127.0.0.1 --port 8383` in
109
109
110
110
```bash
111
111
# 1. GNU Global — EITHER user-space (no sudo):
112
-
gtags-mcp setup
112
+
mcp-gtags-server setup
113
113
# OR a system package:
114
114
sudo apt install global # Debian/Ubuntu
115
115
sudo dnf install global # Fedora
@@ -132,7 +132,7 @@ Add to `claude_desktop_config.json` (pin the project since Desktop doesn't launc
@@ -232,7 +232,7 @@ Real projects mix languages — a C core with Python tooling, JS frontends, Go s
232
232
-**Native languages** (C, C++, Java, PHP, Yacc, assembly) use GNU Global's fast built-in parser.
233
233
-**Everything else** (Python, Go, Rust, JavaScript, TypeScript, Ruby, ... ~150 languages) is indexed through Global's **ctags + Pygments plugin parsers** — same index, same tools, same queries.
234
234
235
-
The one-line installer (and `gtags-mcp setup`) enables this automatically — it installs universal-ctags and Pygments into user space, and the server switches to the `native-pygments` parser label on its own. Prefer system packages? Those work too:
235
+
The one-line installer (and `mcp-gtags-server setup`) enables this automatically — it installs universal-ctags and Pygments into user space, and the server switches to the `native-pygments` parser label on its own. Prefer system packages? Those work too:
uv run --extra dev pytest # 51 tests; e2e tests auto-skip if GNU Global is absent
283
-
npx @modelcontextprotocol/inspector gtags-mcp# poke at it interactively
283
+
npx @modelcontextprotocol/inspector mcp-gtags-server# poke at it interactively
284
284
```
285
285
286
286
Tests build a real C project in a temp dir and exercise auto-indexing, auto-refresh, caller mapping, body extraction, pagination, user-space binary discovery, and config layering end-to-end.
Copy file name to clipboardExpand all lines: pyproject.toml
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
[project]
2
2
name = "mcp-gtags-server"
3
-
version = "0.6.2"
3
+
version = "0.7.0"
4
4
description = "Indexed code navigation for AI coding agents — replace grep scans with GNU Global (gtags) lookups over MCP. ~100x faster and radically less noise on million-line C/C++ codebases."
5
5
readme = "README.md"
6
6
requires-python = ">=3.10"
@@ -46,6 +46,8 @@ dev = [
46
46
]
47
47
48
48
[project.scripts]
49
+
mcp-gtags-server = "gtags_mcp.server:main"
50
+
# Legacy alias — kept so existing MCP client configs keep working.
0 commit comments