mcp-www 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -10
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# mcp-
|
|
1
|
+
# mcp-www
|
|
2
2
|
|
|
3
3
|
**DNS-based MCP service discovery over UDP.**
|
|
4
4
|
|
|
@@ -8,26 +8,54 @@ Agents need to discover MCP servers, but current approaches lean on centralized
|
|
|
8
8
|
|
|
9
9
|
## How It Works
|
|
10
10
|
|
|
11
|
-
**mcp-
|
|
11
|
+
**mcp-www** is itself a standard MCP server. An agent connects to it the same way it connects to any other MCP server — no new client code, no special SDK, no registry signup.
|
|
12
12
|
|
|
13
|
-
Once connected, the agent calls the `browse_domain` tool with a domain name. mcp-
|
|
13
|
+
Once connected, the agent calls the `browse_domain` tool with a domain name. mcp-www performs a standard **UDP DNS TXT lookup** for `_mcp.{domain}`, parses the semicolon-delimited record, and returns structured metadata about the MCP servers published by that domain.
|
|
14
14
|
|
|
15
15
|
```
|
|
16
|
-
Agent → mcp-
|
|
16
|
+
Agent → mcp-www (MCP server) → UDP DNS query for _mcp.example.com TXT
|
|
17
17
|
← "v=mcp1; src=https://mcp.example.com; ..."
|
|
18
18
|
← Structured JSON response
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
No HTTP registry in the loop. The DNS infrastructure **is** the registry.
|
|
22
22
|
|
|
23
|
+
## Install
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g mcp-www
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Or use directly with `npx`:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx mcp-www
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Claude Code / MCP Client Config
|
|
36
|
+
|
|
37
|
+
Add to your MCP client config (e.g., `.mcp.json`):
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"mcpServers": {
|
|
42
|
+
"mcp-www": {
|
|
43
|
+
"type": "stdio",
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": ["mcp-www"]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
23
51
|
## Key Design Points
|
|
24
52
|
|
|
25
53
|
- **Uses UDP DNS (port 53) for lookups** — the lightest possible network primitive. No TCP handshake, no TLS negotiation, no HTTP overhead. A single UDP packet out, a single packet back.
|
|
26
54
|
- **The DNS infrastructure IS the registry** — no additional servers to deploy, no uptime to maintain, no accounts to create. If you can publish a TXT record, you can advertise your MCP server.
|
|
27
|
-
- **mcp-
|
|
55
|
+
- **mcp-www is a standard MCP server** — any MCP-compliant agent can use it with zero new client code. It's just another server in your agent's config.
|
|
28
56
|
- **Supports the `_mcp` TXT record convention** — records follow a semicolon-delimited format:
|
|
29
57
|
```
|
|
30
|
-
v=mcp1; src=https://mcp.example.com;
|
|
58
|
+
v=mcp1; src=https://mcp.example.com; auth=oauth2
|
|
31
59
|
```
|
|
32
60
|
- **Works with split-horizon DNS** — enterprise and private networks can publish internal `_mcp` records visible only inside their network, enabling private service discovery without exposing anything to the public internet.
|
|
33
61
|
|
|
@@ -151,10 +179,10 @@ Feedback, criticism, and alternative approaches are welcome — open an issue or
|
|
|
151
179
|
|
|
152
180
|
## Related
|
|
153
181
|
|
|
154
|
-
- [Model Context Protocol Specification](https://
|
|
155
|
-
- [
|
|
156
|
-
- [MCP
|
|
157
|
-
- [MCP
|
|
182
|
+
- [Model Context Protocol Specification](https://modelcontextprotocol.io/specification)
|
|
183
|
+
- [DNS TXT records for organisation-scoped registry discovery](https://github.com/modelcontextprotocol/modelcontextprotocol/discussions/2334) — Discussion #2334
|
|
184
|
+
- [DNS-native MCP discovery: a zero-infrastructure alternative](https://github.com/modelcontextprotocol/modelcontextprotocol/discussions/2368) — Discussion #2368
|
|
185
|
+
- [SEP-2127: MCP Server Cards — HTTP Server Discovery via .well-known](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127)
|
|
158
186
|
|
|
159
187
|
## License
|
|
160
188
|
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
|
-
* mcp-
|
|
4
|
+
* mcp-www
|
|
5
5
|
*
|
|
6
6
|
* A lightweight MCP server that performs DNS-based discovery of MCP services
|
|
7
7
|
* using UDP lookups. No registry server needed.
|
|
@@ -64,7 +64,7 @@ async function inspectMcpServer(url) {
|
|
|
64
64
|
params: {
|
|
65
65
|
protocolVersion: "2024-11-05",
|
|
66
66
|
capabilities: {},
|
|
67
|
-
clientInfo: { name: "mcp-
|
|
67
|
+
clientInfo: { name: "mcp-www", version: "0.1.0" },
|
|
68
68
|
},
|
|
69
69
|
}),
|
|
70
70
|
});
|
|
@@ -121,7 +121,7 @@ async function initRemoteServer(url) {
|
|
|
121
121
|
params: {
|
|
122
122
|
protocolVersion: "2024-11-05",
|
|
123
123
|
capabilities: {},
|
|
124
|
-
clientInfo: { name: "mcp-
|
|
124
|
+
clientInfo: { name: "mcp-www", version: "0.1.0" },
|
|
125
125
|
},
|
|
126
126
|
}),
|
|
127
127
|
});
|
|
@@ -180,13 +180,13 @@ function formatServerResult(serverData, url) {
|
|
|
180
180
|
}
|
|
181
181
|
// --- Server Setup ---
|
|
182
182
|
const server = new index_js_1.Server({
|
|
183
|
-
name: "mcp-
|
|
183
|
+
name: "mcp-www",
|
|
184
184
|
version: "0.1.0",
|
|
185
185
|
}, {
|
|
186
186
|
capabilities: {
|
|
187
187
|
tools: {},
|
|
188
188
|
},
|
|
189
|
-
instructions: "When a user mentions a domain name, company, or website — or when you need to find tools and services related to a domain — use mcp-
|
|
189
|
+
instructions: "When a user mentions a domain name, company, or website — or when you need to find tools and services related to a domain — use mcp-www first. " +
|
|
190
190
|
"Start with browse_discover to look up the domain and inspect what MCP services it offers in a single step. " +
|
|
191
191
|
"If you already have a server URL, use browse_server to see its tools, resources, and prompts. " +
|
|
192
192
|
"Then use call_remote_tool to execute tools on discovered servers.",
|
|
@@ -509,7 +509,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
|
509
509
|
async function main() {
|
|
510
510
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
511
511
|
await server.connect(transport);
|
|
512
|
-
console.error("mcp-
|
|
512
|
+
console.error("mcp-www server running on stdio");
|
|
513
513
|
}
|
|
514
514
|
main().catch((err) => {
|
|
515
515
|
console.error("Fatal error:", err);
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-www",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Lightweight MCP server for DNS-based agent service discovery over UDP. No registry needed.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"bin": {
|
|
8
|
-
"mcp-
|
|
8
|
+
"mcp-www": "dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
15
|
"build": "tsc",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
16
17
|
"start": "node dist/index.js",
|
|
17
18
|
"dev": "ts-node src/index.ts"
|
|
18
19
|
},
|
|
@@ -26,8 +27,15 @@
|
|
|
26
27
|
],
|
|
27
28
|
"author": "kormco",
|
|
28
29
|
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/kormco/mcp-www.git"
|
|
33
|
+
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18"
|
|
36
|
+
},
|
|
29
37
|
"dependencies": {
|
|
30
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
38
|
+
"@modelcontextprotocol/sdk": "^1.27.0"
|
|
31
39
|
},
|
|
32
40
|
"devDependencies": {
|
|
33
41
|
"typescript": "^5.4.0",
|