@h-ear/mcp-server 0.1.2 → 0.1.4
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 +30 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -5
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,23 @@ MCP server for the [H-ear World](https://h-ear.world) audio classification API.
|
|
|
8
8
|
npx @h-ear/mcp-server --key ncm_sk_your_key
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Authentication
|
|
12
|
+
|
|
13
|
+
Three ways to authenticate, from easiest to most manual:
|
|
14
|
+
|
|
15
|
+
| Method | Setup | Best For |
|
|
16
|
+
|--------|-------|----------|
|
|
17
|
+
| **claude.ai Connector** | Click "Add" in claude.ai Connectors Directory | claude.ai web/mobile (OAuth automatic) |
|
|
18
|
+
| **API Key (stdio)** | Set `HEAR_API_KEY` in config | Claude Desktop, Claude Code |
|
|
19
|
+
| **OAuth 2.1 (Streamable HTTP)** | Connect to `https://api.h-ear.world/mcp` | Claude Code remote, custom MCP clients |
|
|
20
|
+
|
|
21
|
+
Two tools (`healthCheck`, `listClasses`) work without any authentication.
|
|
22
|
+
|
|
23
|
+
### claude.ai (easiest — zero config)
|
|
24
|
+
|
|
25
|
+
Search for "H-ear" in **Settings > Connectors** on claude.ai. OAuth login is automatic.
|
|
26
|
+
|
|
27
|
+
### Claude Desktop (API key)
|
|
12
28
|
|
|
13
29
|
Add to `claude_desktop_config.json`:
|
|
14
30
|
|
|
@@ -18,13 +34,15 @@ Add to `claude_desktop_config.json`:
|
|
|
18
34
|
"h-ear": {
|
|
19
35
|
"command": "npx",
|
|
20
36
|
"args": ["-y", "@h-ear/mcp-server"],
|
|
21
|
-
"env": { "HEAR_API_KEY": "ncm_sk_your_key" }
|
|
37
|
+
"env": { "HEAR_API_KEY": "ncm_sk_your_key", "HEAR_ENV": "prod" }
|
|
22
38
|
}
|
|
23
39
|
}
|
|
24
40
|
}
|
|
25
41
|
```
|
|
26
42
|
|
|
27
|
-
|
|
43
|
+
> **Windows MSIX users:** The config file is at `%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json`, NOT at `%APPDATA%\Claude\`. The "Edit Config" button opens the wrong path.
|
|
44
|
+
|
|
45
|
+
### Claude Code (API key)
|
|
28
46
|
|
|
29
47
|
Add to `.claude/settings.json`:
|
|
30
48
|
|
|
@@ -34,12 +52,20 @@ Add to `.claude/settings.json`:
|
|
|
34
52
|
"h-ear": {
|
|
35
53
|
"command": "npx",
|
|
36
54
|
"args": ["-y", "@h-ear/mcp-server"],
|
|
37
|
-
"env": { "HEAR_API_KEY": "ncm_sk_your_key" }
|
|
55
|
+
"env": { "HEAR_API_KEY": "ncm_sk_your_key", "HEAR_ENV": "prod" }
|
|
38
56
|
}
|
|
39
57
|
}
|
|
40
58
|
}
|
|
41
59
|
```
|
|
42
60
|
|
|
61
|
+
### Claude Code (OAuth — remote)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
claude mcp add --transport http h-ear https://api.h-ear.world/mcp
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
OAuth discovery is automatic via [RFC 9728](https://datatracker.ietf.org/doc/html/rfc9728) Protected Resource Metadata. Run `/mcp` in Claude Code to authenticate via browser.
|
|
68
|
+
|
|
43
69
|
## Tools
|
|
44
70
|
|
|
45
71
|
| Tool | Description | Auth |
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,YAAY,EAAwB,MAAM,aAAa,CAAC;AAEpF,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,wBAAgB,aAAa,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,YAAY,EAAwB,MAAM,aAAa,CAAC;AAEpF,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,wBAAgB,aAAa,IAAI,YAAY,CAoB5C"}
|
package/dist/config.js
CHANGED
|
@@ -12,11 +12,10 @@ function getCliArg(name) {
|
|
|
12
12
|
export function resolveConfig() {
|
|
13
13
|
const apiKey = getCliArg('key') || process.env.HEAR_API_KEY;
|
|
14
14
|
const bearerToken = getCliArg('bearer-token') || process.env.HEAR_BEARER_TOKEN || undefined;
|
|
15
|
-
if (!apiKey && !bearerToken)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
throw new Error('HEAR_ENV is required. Set HEAR_ENV env var or pass --env <env>');
|
|
15
|
+
if (!apiKey && !bearerToken) {
|
|
16
|
+
process.stderr.write('[h-ear-mcp] Warning: No API key provided. Tools requiring auth (classifyAudio, classifyBatch) will fail.\n Set HEAR_API_KEY env var or pass --key <key>\n');
|
|
17
|
+
}
|
|
18
|
+
const envStr = getCliArg('env') || process.env.HEAR_ENV || 'prod';
|
|
20
19
|
const environment = (Object.keys(ENVIRONMENTS).includes(envStr) ? envStr : 'prod');
|
|
21
20
|
const envConfig = ENVIRONMENTS[environment];
|
|
22
21
|
const baseUrl = getCliArg('base-url') || process.env.HEAR_BASE_URL || envConfig.baseUrl;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa;IACzB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC;IAC5F,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa;IACzB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC;IAC5F,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4JAA4J,CAAC,CAAC;IACvL,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC;IAElE,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAoB,CAAC;IACtG,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC,OAAO,CAAC;IACxF,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAElC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,WAAW,SAAS,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC;IAEnF,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4KAA4K,CAAC,CAAC;IACvM,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAChF,CAAC"}
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-ear/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"mcpName": "io.github.badajoz95/h-ear",
|
|
5
5
|
"description": "MCP server for the H-ear World audio classification API — connect Claude, ChatGPT, and other AI agents to 521+ sound classes",
|
|
6
6
|
"type": "module",
|