@theregistry/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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const zod_1 = require("zod");
7
+ const API_BASE = 'https://theregistry.club/api/agent';
8
+ const API_KEY = process.env.REGISTRY_API_KEY;
9
+ if (!API_KEY) {
10
+ process.stderr.write('Error: REGISTRY_API_KEY environment variable is required\n');
11
+ process.exit(1);
12
+ }
13
+ async function apiRequest(method, path, body, params) {
14
+ const url = new URL(`${API_BASE}${path}`);
15
+ if (params) {
16
+ for (const [key, value] of Object.entries(params)) {
17
+ if (value)
18
+ url.searchParams.set(key, value);
19
+ }
20
+ }
21
+ const res = await fetch(url.toString(), {
22
+ method,
23
+ headers: {
24
+ 'Authorization': `Bearer ${API_KEY}`,
25
+ ...(body ? { 'Content-Type': 'application/json' } : {}),
26
+ },
27
+ ...(body ? { body: JSON.stringify(body) } : {}),
28
+ });
29
+ const data = (await res.json());
30
+ if (!res.ok) {
31
+ throw new Error(data.error || `API request failed with status ${res.status}`);
32
+ }
33
+ return data;
34
+ }
35
+ const server = new mcp_js_1.McpServer({
36
+ name: 'theregistry',
37
+ version: '0.1.0',
38
+ });
39
+ server.tool('registry_inbox', 'Check your inbox for pending meet requests from other Registry members', async () => {
40
+ const data = await apiRequest('GET', '/inbox');
41
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
42
+ });
43
+ server.tool('registry_respond', 'Accept or decline a pending meet request', {
44
+ intent_id: zod_1.z.string().describe('The ID of the meet request to respond to'),
45
+ accept: zod_1.z.boolean().describe('Whether to accept (true) or decline (false) the request'),
46
+ message: zod_1.z.string().optional().describe('Optional message to include with your response'),
47
+ }, async ({ intent_id, accept, message }) => {
48
+ const data = await apiRequest('POST', '/respond', { intent_id, accept, message });
49
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
50
+ });
51
+ server.tool('registry_members', 'Search the Registry member directory', {
52
+ q: zod_1.z.string().optional().describe('Search query to filter members by handle'),
53
+ limit: zod_1.z.number().optional().describe('Maximum number of results (default 20, max 100)'),
54
+ }, async ({ q, limit }) => {
55
+ const params = {};
56
+ if (q)
57
+ params.q = q;
58
+ if (limit)
59
+ params.limit = String(limit);
60
+ const data = await apiRequest('GET', '/members', undefined, params);
61
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
62
+ });
63
+ server.tool('registry_meet', 'Send a meet request to another Registry member', {
64
+ to_handle: zod_1.z.string().describe('The X/Twitter handle of the member to meet (with or without @)'),
65
+ reason: zod_1.z.string().describe('Why you want to connect with this member (max 500 chars)'),
66
+ }, async ({ to_handle, reason }) => {
67
+ const data = await apiRequest('POST', '/meet', { to_handle, reason });
68
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
69
+ });
70
+ async function main() {
71
+ const transport = new stdio_js_1.StdioServerTransport();
72
+ process.stderr.write('The Registry MCP server starting...\n');
73
+ await server.connect(transport);
74
+ process.stderr.write('The Registry MCP server connected\n');
75
+ }
76
+ main().catch((err) => {
77
+ process.stderr.write(`Fatal error: ${err}\n`);
78
+ process.exit(1);
79
+ });
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@theregistry/mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for The Registry — connects AI agents to the member network",
5
+ "bin": {
6
+ "theregistry-mcp": "./dist/src/index.js"
7
+ },
8
+ "main": "./dist/src/index.js",
9
+ "types": "./dist/src/index.d.ts",
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "prepublishOnly": "npm run build"
13
+ },
14
+ "files": ["dist"],
15
+ "engines": {
16
+ "node": ">=18.0.0"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/theregistry-club/theregistry"
21
+ },
22
+ "keywords": ["mcp", "ai", "agent", "registry", "claude"],
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "@modelcontextprotocol/sdk": "1.12.1",
26
+ "zod": "^3.24.0"
27
+ },
28
+ "devDependencies": {
29
+ "typescript": "^5.0.0",
30
+ "@types/node": "^20.0.0"
31
+ }
32
+ }