dk-domain-agent-mcp 0.1.0
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 +16 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +71 -0
- package/dist/server.js.map +1 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# dk-domain-agent-mcp
|
|
2
|
+
|
|
3
|
+
MCP stdio server for checking `.dk` domain availability through public Punktum WHOIS.
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"mcpServers": {
|
|
8
|
+
"dk-domain": {
|
|
9
|
+
"command": "npx",
|
|
10
|
+
"args": ["-y", "dk-domain-agent-mcp@0.1.0"]
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Results are WHOIS-inferred, not authoritative registry availability.
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { type AvailabilityResult } from "dk-domain-agent-core";
|
|
4
|
+
export type CheckAvailability = (domain: string, options?: {
|
|
5
|
+
bypassCache?: boolean;
|
|
6
|
+
}) => Promise<AvailabilityResult>;
|
|
7
|
+
export declare function handleCheckDkDomainAvailability(input: {
|
|
8
|
+
domain: string;
|
|
9
|
+
bypassCache?: boolean;
|
|
10
|
+
}, checker?: CheckAvailability): Promise<{
|
|
11
|
+
structuredContent: AvailabilityResult;
|
|
12
|
+
content: {
|
|
13
|
+
type: "text";
|
|
14
|
+
text: string;
|
|
15
|
+
}[];
|
|
16
|
+
}>;
|
|
17
|
+
export declare function createServer(options?: {
|
|
18
|
+
checker?: CheckAvailability;
|
|
19
|
+
}): McpServer;
|
|
20
|
+
export declare function main(): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1F,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAyBjC,wBAAsB,+BAA+B,CACnD,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EAChD,OAAO,GAAE,iBAA6C;;;;;;GAavD;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAAO,GAAG,SAAS,CAyBrF;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1C"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { checkDkDomainAvailability } from "dk-domain-agent-core";
|
|
6
|
+
import { pathToFileURL } from "node:url";
|
|
7
|
+
const AvailabilityOutputSchema = z.object({
|
|
8
|
+
domain: z.string(),
|
|
9
|
+
unicodeDomain: z.string(),
|
|
10
|
+
asciiDomain: z.string(),
|
|
11
|
+
available: z.boolean().nullable(),
|
|
12
|
+
status: z.enum([
|
|
13
|
+
"probably_available",
|
|
14
|
+
"registered",
|
|
15
|
+
"offered_to_waiting_list",
|
|
16
|
+
"invalid",
|
|
17
|
+
"rate_limited",
|
|
18
|
+
"unknown"
|
|
19
|
+
]),
|
|
20
|
+
confidence: z.enum(["whois_inferred", "public_registry_lookup", "unknown"]),
|
|
21
|
+
source: z.literal("punktum_whois"),
|
|
22
|
+
registrationRequiredForConfirmation: z.literal(true),
|
|
23
|
+
checkedAt: z.string(),
|
|
24
|
+
cache: z.object({
|
|
25
|
+
hit: z.boolean(),
|
|
26
|
+
ttlSeconds: z.number().nullable()
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
export async function handleCheckDkDomainAvailability(input, checker = checkDkDomainAvailability) {
|
|
30
|
+
const result = await checker(input.domain, { bypassCache: input.bypassCache });
|
|
31
|
+
return {
|
|
32
|
+
structuredContent: result,
|
|
33
|
+
content: [
|
|
34
|
+
{
|
|
35
|
+
type: "text",
|
|
36
|
+
text: JSON.stringify(result)
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function createServer(options = {}) {
|
|
42
|
+
const server = new McpServer({
|
|
43
|
+
name: "dk-domain-agent",
|
|
44
|
+
version: "0.1.0"
|
|
45
|
+
});
|
|
46
|
+
server.registerTool("check_dk_domain_availability", {
|
|
47
|
+
title: "Check .dk domain availability",
|
|
48
|
+
description: "Checks whether a .dk domain is probably available using public Punktum WHOIS. Results are inferred, not authoritative registry availability.",
|
|
49
|
+
inputSchema: {
|
|
50
|
+
domain: z
|
|
51
|
+
.string()
|
|
52
|
+
.min(1)
|
|
53
|
+
.describe("A .dk domain or second-level name, e.g. 'mitdomæne' or 'mitdomæne.dk'."),
|
|
54
|
+
bypassCache: z.boolean().optional().default(false)
|
|
55
|
+
},
|
|
56
|
+
outputSchema: AvailabilityOutputSchema.shape
|
|
57
|
+
}, input => handleCheckDkDomainAvailability(input, options.checker));
|
|
58
|
+
return server;
|
|
59
|
+
}
|
|
60
|
+
export async function main() {
|
|
61
|
+
const server = createServer();
|
|
62
|
+
const transport = new StdioServerTransport();
|
|
63
|
+
await server.connect(transport);
|
|
64
|
+
}
|
|
65
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
66
|
+
main().catch(error => {
|
|
67
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
68
|
+
process.exit(2);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dk-domain-agent-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP stdio server for .dk WHOIS-inferred availability checks.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"keywords": [
|
|
12
|
+
"mcp",
|
|
13
|
+
"model-context-protocol",
|
|
14
|
+
"dk",
|
|
15
|
+
"domain",
|
|
16
|
+
"whois"
|
|
17
|
+
],
|
|
18
|
+
"main": "dist/server.js",
|
|
19
|
+
"types": "dist/server.d.ts",
|
|
20
|
+
"bin": {
|
|
21
|
+
"dk-domain-mcp": "dist/server.js"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
25
|
+
"build": "npm run clean && tsc -p tsconfig.json",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"dk-domain-agent-core": "0.1.0",
|
|
31
|
+
"@modelcontextprotocol/sdk": "^1.17.0",
|
|
32
|
+
"zod": "^3.25.0"
|
|
33
|
+
}
|
|
34
|
+
}
|