Server data from the Official MCP Registry
MCP client library and bridge for Neemee personal knowledge management system
MCP client library and bridge for Neemee personal knowledge management system
Valid MCP server (7 strong, 4 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
12 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: NEEMEE_API_KEY
Environment variable: NEEMEE_API_BASE_URL
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-pbonneville-neemee-mcp": {
"env": {
"NEEMEE_API_KEY": "your-neemee-api-key-here",
"NEEMEE_API_BASE_URL": "your-neemee-api-base-url-here"
},
"args": [
"-y",
"neemee-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
A TypeScript client library for connecting to Neemee MCP servers using the official Model Context Protocol SDK.
This library provides a convenient interface for interacting with Neemee personal knowledge management systems through the Model Context Protocol (MCP). It supports both HTTP and STDIO transport modes and includes full TypeScript support.
npm install neemee-mcp
import { NeemeeClient } from 'neemee-mcp';
const client = new NeemeeClient({
transport: 'http',
baseUrl: 'https://neemee.app/mcp',
apiKey: 'your-api-key'
});
await client.connect();
// Create a note
const result = await client.tools.createNote({
content: 'My note content',
title: 'My Note'
});
console.log(result);
await client.disconnect();
import { NeemeeClient } from 'neemee-mcp';
const client = new NeemeeClient({
transport: 'stdio'
});
await client.connect();
// Use same API as HTTP mode
const notes = await client.resources.listNotes();
console.log(notes);
await client.disconnect();
Main client class that provides access to tools and resources.
interface NeemeeClientOptions {
transport: 'http' | 'stdio';
baseUrl?: string; // For HTTP mode
apiKey?: string; // For authentication
timeout?: number; // Request timeout in milliseconds
}
connect(): Promise<void> - Connect to the serverdisconnect(): Promise<void> - Disconnect from the serverlistAvailableTools(): Promise<any> - List available MCP toolslistAvailableResources(): Promise<any> - List available MCP resourcesAccess via client.tools:
// Create a note
await client.tools.createNote({
content: 'Note content',
title: 'Optional title',
url: 'Optional source URL',
notebook: 'Optional notebook name',
frontmatter: { /* Optional metadata */ }
});
// Update a note
await client.tools.updateNote({
id: 'note-id',
content: 'Updated content',
title: 'Updated title'
});
// Delete a note
await client.tools.deleteNote('note-id', true);
// Search notes
await client.tools.searchNotes({
query: 'search terms',
notebook: 'notebook-name',
domain: 'example.com',
tags: 'tag1,tag2',
startDate: '2024-01-01',
endDate: '2024-12-31',
limit: 50
});
// Create a notebook
await client.tools.createNotebook('Notebook Name', 'Optional description');
// Update a notebook
await client.tools.updateNotebook('notebook-id', 'New Name', 'New description');
// Delete a notebook
await client.tools.deleteNotebook('notebook-id', true);
// Search notebooks
await client.tools.searchNotebooks('search query', 20);
Access via client.resources:
// List notes with filtering
await client.resources.listNotes({
page: 1,
limit: 20,
search: 'search terms',
domain: 'example.com',
notebook: 'notebook-name',
tags: 'tag1,tag2',
startDate: '2024-01-01',
endDate: '2024-12-31'
});
// Get a specific note
await client.resources.getNote('note-id');
// List notebooks
await client.resources.listNotebooks({
page: 1,
limit: 20,
search: 'search terms'
});
// Get a specific notebook
await client.resources.getNotebook('notebook-id');
// Get usage statistics
await client.resources.getStats();
// Check system health
await client.resources.getHealth();
// Get recent activity
await client.resources.getRecentActivity();
The library provides specific error types for different failure scenarios:
import {
NeemeeClientError,
AuthenticationError,
ConnectionError,
NotFoundError,
ValidationError,
ServerError
} from 'neemee-mcp';
try {
await client.connect();
} catch (error) {
if (error instanceof AuthenticationError) {
console.error('Invalid API key');
} else if (error instanceof ConnectionError) {
console.error('Failed to connect to server');
} else if (error instanceof NeemeeClientError) {
console.error('Client error:', error.message);
}
}
// v1.x (deprecated)
const client = new LegacyNeemeeClient({
useStdio: false,
serverUrl: 'https://api.example.com',
apiKey: 'key'
});
// v2.x (recommended)
const client = new NeemeeClient({
transport: 'http',
baseUrl: 'https://api.example.com',
apiKey: 'key'
});
For temporary compatibility, use the LegacyNeemeeClient:
import { LegacyNeemeeClient } from 'neemee-mcp';
// This provides the old API while you migrate
const client = new LegacyNeemeeClient({
useStdio: false,
serverUrl: 'https://api.example.com',
apiKey: 'key'
});
git clone https://github.com/Paul-Bonneville-Labs/neemee-mcp.git
cd neemee-mcp
npm install
npm run build
# Test client functionality
npm run test:client
# Test legacy compatibility
npm run test:legacy
# Run with mock API server
npm run test:mock-api
npm run build - Compile TypeScript to dist/npm run dev - Run development server with hot reloadnpm run test:client - Test new client APInpm run test:legacy - Test legacy compatibilitynpm run test:integration - Full integration testsimport { NeemeeClient, AuthenticationError, ConnectionError } from 'neemee-mcp';
async function example() {
const client = new NeemeeClient({
transport: 'http',
baseUrl: 'https://neemee.app/mcp',
apiKey: process.env.NEEMEE_API_KEY
});
try {
await client.connect();
// Create a note
const createResult = await client.tools.createNote({
content: '# My First Note\n\nThis is some content.',
title: 'First Note',
frontmatter: {
tags: ['example', 'test'],
priority: 'high'
}
});
console.log('Created note:', createResult);
// Search for notes
const searchResult = await client.tools.searchNotes({
query: 'first',
tags: 'example',
limit: 10
});
console.log('Found notes:', searchResult);
// List available resources
const resources = await client.listAvailableResources();
console.log('Available resources:', resources);
} catch (error) {
if (error instanceof AuthenticationError) {
console.error('Authentication failed - check your API key');
} else if (error instanceof ConnectionError) {
console.error('Connection failed - check server URL and network');
} else {
console.error('Unexpected error:', error);
}
} finally {
await client.disconnect();
}
}
example().catch(console.error);
// Search notes with multiple tags
const taggedNotes = await client.tools.searchNotes({
tags: 'work,important,urgent',
notebook: 'Projects',
limit: 25
});
// List notes with specific tags via resources
const resourceNotes = await client.resources.listNotes({
tags: 'research,ai',
domain: 'arxiv.org',
limit: 50
});
Use this package as a local bridge for STDIO transport:
{
"mcpServers": {
"neemee-local": {
"command": "npx",
"args": ["-y", "neemee-mcp", "--api-key=your-api-key-here"],
"env": {
"NEEMEE_API_BASE_URL": "https://neemee.app/mcp"
}
}
}
}
Authentication: Uses API key authentication. Get your API key from Neemee settings. The API key can be provided via the --api-key flag in the args or as a NEEMEE_API_KEY environment variable.
NEEMEE_API_KEY - Your Neemee API key (required for STDIO mode)NEEMEE_API_BASE_URL - Base URL for Neemee API (defaults to https://neemee.app/mcp)The client supports different permission levels based on your API key:
This library is written in TypeScript and provides full type definitions:
import type {
NeemeeClientOptions,
CreateNoteParams,
UpdateNoteParams,
SearchNotesParams
} from 'neemee-mcp';
const options: NeemeeClientOptions = {
transport: 'http',
baseUrl: 'https://api.example.com',
apiKey: 'your-key'
};
const noteParams: CreateNoteParams = {
content: 'Note content',
title: 'Note title',
frontmatter: {
tags: ['typescript', 'example'],
date: new Date().toISOString()
}
};
MIT
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace · Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm — conversationally
by mcp-marketplace · Finance
Free stock data and market news for any MCP-compatible AI assistant.