PulseMCP Server
# PulseMCP Server
A Model Context Protocol (MCP) server that provides tools for discovering and exploring MCP servers and integrations through the PulseMCP API.
## Features
- List available MCP servers with filtering and pagination
- Search for specific MCP servers by name or functionality
- Filter servers by integration types
- List all available integrations
- Full TypeScript support
## Installation
### Installing in MCP Clients
Add this to your MCP client configuration and adapt based on your Client's preferences. For example:
```json
{
"mcpServers": {
"pulsemcp": {
"command": "npx",
"args": ["-y", "pulsemcp-server"]
}
}
}
```
1. Clone the repository:
```bash
git clone <repository-url>
cd pulsemcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
## Usage
### Running the Server
The server can be run directly after building:
```bash
./build/index.js
```
Or through npm:
```bash
npm start
```
### Development
To watch for changes during development:
```bash
npm run watch
```
To inspect the server's MCP implementation:
```bash
npm run inspector
```
## Available Tools
### list_servers
Lists MCP servers with optional filtering and pagination.
Parameters:
- `query` (optional): Search term to filter servers
- `integrations` (optional): Array of integration slugs to filter by
- `count_per_page` (optional): Number of results per page (maximum: 5000)
- `offset` (optional): Number of results to skip for pagination
Example:
```json
{
"query": "toolhouse",
"integrations": ["github"],
"count_per_page": 10,
"offset": 0
}
```
### list_integrations
Lists all available integrations. This tool takes no parameters.
## Response Format
Both tools return JSON responses with the following structure:
### list_servers Response
```json
{
"servers": [
{
"name": "Server Name",
"url": "https://example.com",
"external_url": "https://external-link.com",
"short_description": "Server description",
"source_code_url": "https://github.com/example/repo",
"github_stars": 123,
"package_registry": "npm",
"package_name": "package-name",
"package_download_count": 1000,
"integrations": [
{
"name": "Integration Name",
"slug": "integration-slug",
"url": "https://integration-url.com"
}
]
}
],
"total_count": 1,
"next": null
}
```
### list_integrations Response
```json
{
"integrations": [
{
"name": "Integration Name",
"slug": "integration-slug",
"url": "https://integration-url.com"
}
]
}
```
## Error Handling
The server includes robust error handling for:
- Invalid parameters
- API connection issues
- Rate limiting
- Authentication errors
Errors are returned in a standardized format with appropriate error codes and messages.
## Development
### Project Structure
```
pulsemcp-server/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript
├── package.json # Project configuration
└── tsconfig.json # TypeScript configuration
```
### Dependencies
- @modelcontextprotocol/sdk: ^0.6.0
- axios: ^1.7.9
- TypeScript: ^5.3.3
## License
Read LICENSE.MD
## Contributing
Open a PR - be nice and you will be rewarded!
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: list_integrations targets integrations, while list_servers targets MCP servers. There is no overlap in functionality or ambiguity between them, making it easy for an agent to select the correct tool based on the desired resource.
Both tools follow a consistent verb_noun pattern with 'list_' as the prefix, using snake_case throughout. This predictability enhances readability and reduces cognitive load for agents when scanning the tool set.
With only 2 tools, the server feels under-scoped for a PulseMCP Server, which might imply broader functionality. While the tools are clear, the count is too low to cover a comprehensive domain, potentially limiting agent capabilities without additional context.
The tool set is severely incomplete for a server likely intended to manage integrations and servers. There are no CRUD operations (e.g., create, update, delete) or detailed actions (e.g., get specific integration/server), leaving significant gaps that could cause agent failures in handling lifecycle tasks.