Skip to content

Commit 4e2b9e2

Browse files
committed
Improve README and release notes; fix smithery scanning
1 parent d86146a commit 4e2b9e2

File tree

4 files changed

+33
-41
lines changed

4 files changed

+33
-41
lines changed

README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
<img src="https://github.com/PV-Bhat/vibe-check-mcp-server/blob/main/Attachments/vibelogov2.png" alt="Logo" width="300"/>
44

5-
## The Most Widely-Deployed Feedback Layer in the MCP Ecosystem
5+
## Widely Adopted Across the MCP Ecosystem
66

7-
> Used in 1,000+ real workflows.
8-
> Featured across 10+ orchestration platforms.
9-
> 6.5K+ developers already trust it to prevent agentic cascade errors.
7+
> 10k+ downloads on PulseMCP
8+
> 1k+ monthly tool calls on Smithery
9+
> Available on 12+ orchestration platforms
10+
> Verified security score 4.3 on MseeP
11+
> GitHub ★102 • 15 forks • 1 open issue
1012
1113

1214
[![Version](https://img.shields.io/badge/version-2.1-blue)](https://github.com/PV-Bhat/vibe-check-mcp-server)
@@ -37,6 +39,7 @@ misalignment, overengineering and wasted cycles.
3739
- **vibe_learn** – Optional logging tool that builds a history of mistakes and fixes for later review.
3840
- **History continuity** – Previous vibe_check responses are fed back in by default for a sense of memory.
3941
- **Multi-LLM flexibility** – Works with Gemini, OpenAI or OpenRouter via simple overrides.
42+
- **Test coverage** – Vitest suite verifies core logic and guards against regressions.
4043

4144
## What's New in v2.1
4245

@@ -45,6 +48,7 @@ misalignment, overengineering and wasted cycles.
4548
- Supports Gemini, OpenAI and OpenRouter with easy overrides
4649
- vibe_learn is now optional and can be disabled entirely
4750
- Project restructured for stability and online deployment
51+
- Added Vitest CI with coverage reports
4852

4953

5054

docs/changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@
66
- Multi-provider support for Gemini, OpenAI and OpenRouter
77
- Optional learning log can be disabled
88
- Repository cleanup and CI via GitHub Actions
9+
- Vitest test suite with coverage
10+
- Fixed Smithery tool scanning via lazy API key validation

smithery.yaml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ startCommand:
55
configSchema:
66
# JSON Schema defining the configuration options for the MCP.
77
type: object
8-
required:
9-
- geminiApiKey
8+
required: []
109
properties:
1110
geminiApiKey:
1211
type: string
@@ -27,7 +26,13 @@ startCommand:
2726
(config) => ({
2827
command: 'node',
2928
args: ['build/index.js'],
30-
env: { GEMINI_API_KEY: config.geminiApiKey }
29+
env: {
30+
GEMINI_API_KEY: config.geminiApiKey,
31+
OPENAI_API_KEY: config.openaiApiKey,
32+
OPENROUTER_API_KEY: config.openrouterApiKey,
33+
DEFAULT_LLM_PROVIDER: config.defaultProvider,
34+
DEFAULT_MODEL: config.defaultModel
35+
}
3136
})
3237
exampleConfig:
3338
geminiApiKey: EXAMPLE_GEMINI_API_KEY_123

src/index.ts

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,18 @@ async function main() {
156156
);
157157
}
158158

159+
// Determine provider for lazy auth validation
160+
const provider = (args as any)?.modelOverride?.provider || process.env.DEFAULT_LLM_PROVIDER || 'gemini';
161+
if (provider === 'gemini' && !process.env.GEMINI_API_KEY) {
162+
throw new McpError(ErrorCode.InvalidParams, 'Missing GEMINI_API_KEY');
163+
}
164+
if (provider === 'openai' && !process.env.OPENAI_API_KEY) {
165+
throw new McpError(ErrorCode.InvalidParams, 'Missing OPENAI_API_KEY');
166+
}
167+
if (provider === 'openrouter' && !process.env.OPENROUTER_API_KEY) {
168+
throw new McpError(ErrorCode.InvalidParams, 'Missing OPENROUTER_API_KEY');
169+
}
170+
159171
// Fix type casting error - convert args to the correct interface
160172
const input: VibeCheckInput = {
161173
goal: args.goal,
@@ -260,46 +272,15 @@ async function main() {
260272
return output;
261273
}
262274

263-
let buffer = '';
264-
process.stdin.on('data', async (data) => {
265-
buffer += data.toString();
266-
try {
267-
const request = JSON.parse(buffer);
268-
console.error('Received request:', request);
269-
270-
if (request.method === 'tools/call' && request.params.name === 'vibe_check') {
271-
const result = await vibeCheckTool(request.params.arguments);
272-
const response = {
273-
jsonrpc: '2.0',
274-
id: request.id,
275-
result: {
276-
content: [
277-
{
278-
type: 'text',
279-
text: formatVibeCheckOutput(result),
280-
},
281-
],
282-
},
283-
};
284-
process.stdout.write(JSON.stringify(response));
285-
}
286-
buffer = ''; // Clear buffer after successful parse
287-
} catch (e) {
288-
// Incomplete JSON, wait for more data
289-
}
290-
});
291-
292275
// Set up error handler
293276
server.onerror = (error) => {
294277
console.error("[Vibe Check Error]", error);
295278
};
296279

297280
try {
298-
// Connect to transport
299281
console.error('Connecting to transport...');
300-
// const transport = new StdioServerTransport();
301-
// await server.connect(transport);
302-
282+
const transport = new StdioServerTransport();
283+
await server.connect(transport);
303284
console.error('Vibe Check MCP server running');
304285
} catch (error) {
305286
console.error("Error connecting to transport:", error);
@@ -311,4 +292,4 @@ async function main() {
311292
main().catch((error) => {
312293
console.error("Server startup error:", error);
313294
process.exit(1);
314-
});
295+
});

0 commit comments

Comments
 (0)