Skip to content

Commit dd7ecd1

Browse files
andylbrummerclaude
andcommitted
feat(discovery): add Agentic Resource Discovery (ARD) catalog for the lci MCP
Ship a ready-to-host ARD catalog (https://agenticresourcediscovery.org) so AI agents can discover the lci MCP server by crawling a well-known JSON file: - .well-known/ai-catalog.json — ARD catalog listing the lci MCP server, its 14 tools as capabilities, and representative natural-language queries. - .well-known/lci-mcp.json — the entry's config: stdio MCP (`command: lci`, `args: [mcp]`) plus install one-liners. - docs/ARD-PUBLISHING.md — how to host (domain root / GitHub Pages / DNS TXT), the required HTTPS + JSON content-type + CORS, and which identifiers to change if served from a domain other than standardbeagle.com. Identifiers are anchored to standardbeagle.com (did:web / urn:air); the doc notes how to repoint them. lci's MCP is stdio-only, so the catalog references a static config rather than a hosted endpoint. Co-Authored-By: Claude Opus 4.8 <[email protected]>
1 parent 03eb77f commit dd7ecd1

3 files changed

Lines changed: 100 additions & 0 deletions

File tree

.well-known/ai-catalog.json

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"specVersion": "1.0",
3+
"host": {
4+
"displayName": "Standard Beagle",
5+
"identifier": "did:web:standardbeagle.com"
6+
},
7+
"entries": [
8+
{
9+
"identifier": "urn:air:standardbeagle.com:server:lci",
10+
"displayName": "LCI — Lightning Code Index",
11+
"type": "application/mcp-server+json",
12+
"url": "https://standardbeagle.com/.well-known/lci-mcp.json",
13+
"description": "Sub-millisecond semantic code search and code-intelligence MCP server. Indexes a repository with tree-sitter across 13 languages and answers search, symbol lookup, call-hierarchy, references, file outline, and git-change queries with ~80% less context than grep. Runs locally over stdio (`lci mcp`).",
14+
"capabilities": [
15+
"info",
16+
"search",
17+
"find_files",
18+
"get_context",
19+
"context",
20+
"list_symbols",
21+
"inspect_symbol",
22+
"browse_file",
23+
"index_stats",
24+
"debug_info",
25+
"semantic_annotations",
26+
"side_effects",
27+
"code_insight",
28+
"git_analysis"
29+
],
30+
"representativeQueries": [
31+
"find where the authentication middleware is defined",
32+
"show me all callers of the ServeHTTP function",
33+
"search the codebase for functions that parse JSON",
34+
"what does index_directory call and is it pure",
35+
"list every struct type in the parser package"
36+
]
37+
}
38+
]
39+
}

.well-known/lci-mcp.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "lci",
3+
"displayName": "LCI — Lightning Code Index",
4+
"description": "Sub-millisecond semantic code search and code-intelligence MCP server (stdio). Index a repo once, then search content, look up symbols, trace call hierarchies, find references, outline files, and analyze git change — with ~80% less context than grep.",
5+
"transport": "stdio",
6+
"command": "lci",
7+
"args": ["mcp"],
8+
"homepage": "https://github.com/standardbeagle/lci-cpp",
9+
"install": {
10+
"linux_macos": "curl -fsSL https://raw.githubusercontent.com/standardbeagle/lci-cpp/main/install.sh | sh",
11+
"windows": "irm https://raw.githubusercontent.com/standardbeagle/lci-cpp/main/install.ps1 | iex",
12+
"npm": "npm install -g @standardbeagle/lci"
13+
}
14+
}

docs/ARD-PUBLISHING.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Publishing LCI for Agentic Resource Discovery (ARD)
2+
3+
[ARD](https://agenticresourcediscovery.org/how_to_publish/) lets AI agents and
4+
chatbots discover MCP servers, skills, and tools by crawling a well-known JSON
5+
catalog. This repo ships a ready-to-host catalog for the LCI MCP server.
6+
7+
## Files
8+
9+
| File | Hosted as | Purpose |
10+
|------|-----------|---------|
11+
| [`.well-known/ai-catalog.json`](../.well-known/ai-catalog.json) | `https://<domain>/.well-known/ai-catalog.json` | ARD catalog: lists the LCI MCP server, its 14 tools, and example queries |
12+
| [`.well-known/lci-mcp.json`](../.well-known/lci-mcp.json) | the catalog entry's `url` | stdio MCP config (`command: lci`, `args: [mcp]`) + install one-liners |
13+
14+
The catalog points at LCI's MCP server, which runs locally over stdio (`lci mcp`)
15+
— there is no hosted HTTP endpoint to keep alive, only these two static files.
16+
17+
## Hosting (one of)
18+
19+
ARD requires **HTTPS**, `Content-Type: application/json`, and
20+
`Access-Control-Allow-Origin: *` on the served files.
21+
22+
1. **Domain root** (`standardbeagle.com`) — copy `.well-known/` to the web root.
23+
Set the JSON content-type and the CORS header on that path.
24+
25+
2. **GitHub Pages user site** (`standardbeagle.github.io`) — publish these files
26+
from a `standardbeagle.github.io` repo. GitHub Pages serves `.well-known/`
27+
and already sends `Access-Control-Allow-Origin: *`, so no extra config.
28+
29+
3. **DNS TXT pointer** — if the catalog cannot live at the domain root, add a
30+
TXT record `_catalog._agents.standardbeagle.com` whose value is the full
31+
catalog URL (e.g. a GitHub Pages project path or raw URL).
32+
33+
## When the host domain changes
34+
35+
The identifiers are domain-anchored. If you serve from a domain other than
36+
`standardbeagle.com`, update in `.well-known/ai-catalog.json`:
37+
38+
- `host.identifier``did:web:<domain>`
39+
- each `entries[].identifier``urn:air:<domain>:server:lci`
40+
- `entries[].url` → the hosted location of `lci-mcp.json`
41+
42+
## Verify
43+
44+
```sh
45+
curl -fsSL https://<domain>/.well-known/ai-catalog.json | python3 -m json.tool
46+
curl -fsSI https://<domain>/.well-known/ai-catalog.json | grep -i 'content-type\|access-control'
47+
```

0 commit comments

Comments
 (0)