SourceSync.ai MCP Server

SourceSync.ai MCP Server

允许人工智能模型与 SourceSync.ai 的知识管理平台交互,以组织、摄取、检索和搜索知识库中的内容。

数字笔记管理
内容获取
访问服务器

README

SourceSync.ai MCP 服务器

smithery badge

一个用于 SourceSync.ai API 的模型上下文协议 (MCP) 服务器实现。此服务器允许 AI 模型通过标准化接口与 SourceSync.ai 的知识管理平台进行交互。

特性

  • 管理用于组织知识的命名空间
  • 从各种来源(文本、URL、网站、外部服务)摄取内容
  • 检索、更新和管理存储在知识库中的文档
  • 对知识库执行语义和混合搜索
  • 直接从解析的文本 URL 访问文档内容
  • 管理与外部服务的连接
  • 默认配置支持,实现无缝 AI 集成

安装

使用 npx 运行

# 使用您的 API 密钥和租户 ID 安装并运行
env SOURCESYNC_API_KEY=your_api_key npx -y sourcesyncai-mcp

通过 Smithery 安装

要通过 Smithery 为 Claude Desktop 自动安装 sourcesyncai-mcp,请执行以下操作:

npx -y @smithery/cli install @pbteja1998/sourcesyncai-mcp --client claude

手动安装

# 克隆存储库
git clone https://github.com/yourusername/sourcesyncai-mcp.git
cd sourcesyncai-mcp

# 安装依赖项
npm install

# 构建项目
npm run build

# 运行服务器
node dist/index.js

在 Cursor 上运行

要在 Cursor 中配置 SourceSync.ai MCP,请执行以下操作:

  1. 打开 Cursor 设置
  2. 转到 Features > MCP Servers
  3. 单击 + Add New MCP Server
  4. 输入以下内容:
    • Name: sourcesyncai-mcp (或您喜欢的名称)
    • Type: command
    • Command: env SOURCESYNCAI_API_KEY=your-api-key npx -y sourcesyncai-mcp

添加后,您可以通过描述您的知识管理需求,将 SourceSync.ai 工具与 Cursor 的 AI 功能一起使用。

在 Windsurf 上运行

将此添加到您的 ./codeium/windsurf/model_config.json

{
  "mcpServers": {
    "sourcesyncai-mcp": {
      "command": "npx",
      "args": ["-y", "soucesyncai-mcp"],
      "env": {
        "SOURCESYNC_API_KEY": "your_api_key",
        "SOURCESYNC_NAMESPACE_ID": "your_namespace_id",
        "SOURCESYNC_TENANT_ID": "your_tenant_id"
      }
    }
  }
}

在 Claude Desktop 上运行

要将此 MCP 服务器与 Claude Desktop 一起使用,请执行以下操作:

  1. 找到 Claude Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 编辑配置文件以添加 SourceSync.ai MCP 服务器:

{
  "mcpServers": {
    "sourcesyncai-mcp": {
      "command": "npx",
      "args": ["-y", "sourcesyncai-mcp"],
      "env": {
        "SOURCESYNC_API_KEY": "your_api_key",
        "SOURCESYNC_NAMESPACE_ID": "your_namespace_id",
        "SOURCESYNC_TENANT_ID": "your_tenant_id"
      }
    }
  }
}
  1. 保存配置文件并重启 Claude Desktop

配置

环境变量

必需

  • SOURCESYNC_API_KEY: 您的 SourceSync.ai API 密钥(必需)

可选

  • SOURCESYNC_NAMESPACE_ID: 用于操作的默认命名空间 ID
  • SOURCESYNC_TENANT_ID: 您的租户 ID(可选)

配置示例

具有默认值的基本配置:

export SOURCESYNC_API_KEY=your_api_key
export SOURCESYNC_TENANT_ID=your_tenant_id
export SOURCESYNC_NAMESPACE_ID=your_namespace_id

可用工具

身份验证

  • validate_api_key: 验证 SourceSync.ai API 密钥
{
  "name": "validate_api_key",
  "arguments": {}
}

命名空间

  • create_namespace: 创建一个新的命名空间
  • list_namespaces: 列出所有命名空间
  • get_namespace: 获取特定命名空间的详细信息
  • update_namespace: 更新命名空间
  • delete_namespace: 删除命名空间
{
  "name": "create_namespace",
  "arguments": {
    "name": "my-namespace",
    "fileStorageConfig": {
      "provider": "S3_COMPATIBLE",
      "config": {
        "endpoint": "s3.amazonaws.com",
        "accessKey": "your_access_key",
        "secretKey": "your_secret_key",
        "bucket": "your_bucket",
        "region": "us-east-1"
      }
    },
    "vectorStorageConfig": {
      "provider": "PINECONE",
      "config": {
        "apiKey": "your_pinecone_api_key",
        "environment": "your_environment",
        "index": "your_index"
      }
    },
    "embeddingModelConfig": {
      "provider": "OPENAI",
      "config": {
        "apiKey": "your_openai_api_key",
        "model": "text-embedding-3-small"
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "list_namespaces",
  "arguments": {
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "get_namespace",
  "arguments": {
    "namespaceId": "namespace_XXX",
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "update_namespace",
  "arguments": {
    "namespaceId": "namespace_XXX",
    "tenantId": "tenant_XXX",
    "name": "updated-namespace-name"
  }
}
{
  "name": "delete_namespace",
  "arguments": {
    "namespaceId": "namespace_XXX",
    "tenantId": "tenant_XXX"
  }
}

数据摄取

  • ingest_text: 摄取文本内容
  • ingest_urls: 摄取来自 URL 的内容
  • ingest_sitemap: 摄取来自站点地图的内容
  • ingest_website: 摄取来自网站的内容
  • ingest_notion: 摄取来自 Notion 的内容
  • ingest_google_drive: 摄取来自 Google Drive 的内容
  • ingest_dropbox: 摄取来自 Dropbox 的内容
  • ingest_onedrive: 摄取来自 OneDrive 的内容
  • ingest_box: 摄取来自 Box 的内容
  • get_ingest_job_run_status: 获取摄取作业运行的状态
{
  "name": "ingest_text",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "TEXT",
      "config": {
        "name": "example-document",
        "text": "This is an example document for ingestion.",
        "metadata": {
          "category": "example",
          "author": "AI Assistant"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_urls",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "URLS",
      "config": {
        "urls": ["https://example.com/page1", "https://example.com/page2"],
        "metadata": {
          "source": "web",
          "category": "documentation"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_sitemap",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "SITEMAP",
      "config": {
        "url": "https://example.com/sitemap.xml",
        "metadata": {
          "source": "sitemap",
          "website": "example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_website",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "WEBSITE",
      "config": {
        "url": "https://example.com",
        "maxDepth": 3,
        "maxPages": 100,
        "metadata": {
          "source": "website",
          "domain": "example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_notion",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "NOTION",
      "config": {
        "connectionId": "your_notion_connection_id",
        "metadata": {
          "source": "notion",
          "workspace": "My Workspace"
        }
      }
    },
    "tenantId": "your_tenant_id"
  }
}
{
  "name": "ingest_google_drive",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "GOOGLE_DRIVE",
      "config": {
        "connectionId": "connection_XXX",
        "metadata": {
          "source": "google_drive",
          "owner": "user@example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_dropbox",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "DROPBOX",
      "config": {
        "connectionId": "connection_XXX",
        "metadata": {
          "source": "dropbox",
          "account": "user@example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_onedrive",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "ONEDRIVE",
      "config": {
        "connectionId": "connection_XXX",
        "metadata": {
          "source": "onedrive",
          "account": "user@example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_box",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "BOX",
      "config": {
        "connectionId": "connection_XXX",
        "metadata": {
          "source": "box",
          "owner": "user@example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "get_ingest_job_run_status",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestJobRunId": "ingest_job_run_XXX",
    "tenantId": "tenant_XXX"
  }
}

文档

  • getDocuments: 检索具有可选过滤器的文档
  • updateDocuments: 更新文档元数据
  • deleteDocuments: 删除文档
  • resyncDocuments: 重新同步文档
  • fetchUrlContent: 从文档 URL 获取文本内容
{
  "name": "getDocuments",
  "arguments": {
    "namespaceId": "namespace_XXX",
    "tenantId": "tenant_XXX",
    "filterConfig": {
      "documentTypes": ["PDF"]
    },
    "includeConfig": {
      "parsedTextFileUrl": true
    }
  }
}
{
  "name": "updateDocuments",
  "arguments": {
    "namespaceId": "namespace_XXX",
    "tenantId": "tenant_XXX",
    "documentIds": ["doc_XXX", "doc_YYY"],
    "filterConfig": {
      "documentIds": ["doc_XXX", "doc_YYY"]
    },
    "data": {
      "metadata": {
        "status": "reviewed",
        "category": "technical"
      }
    }
  }
}
{
  "name": "deleteDocuments",
  "arguments": {
    "namespaceId": "namespace_XXX",
    "tenantId": "tenant_XXX",
    "documentIds": ["doc_XXX", "doc_YYY"],
    "filterConfig": {
      "documentIds": ["doc_XXX", "doc_YYY"]
    }
  }
}
{
  "name": "resyncDocuments",
  "arguments": {
    "namespaceId": "namespace_XXX",
    "tenantId": "tenant_XXX",
    "documentIds": ["doc_XXX", "doc_YYY"],
    "filterConfig": {
      "documentIds": ["doc_XXX", "doc_YYY"]
    }
  }
}
{
  "name": "fetchUrlContent",
  "arguments": {
    "url": "https://api.sourcesync.ai/v1/documents/doc_XXX/content?format=text",
    "apiKey": "your_api_key",
    "tenantId": "tenant_XXX"
  }
}

搜索

  • semantic_search: 执行语义搜索
  • hybrid_search: 执行混合搜索(语义 + 关键字)
{
  "name": "semantic_search",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "query": "example document",
    "topK": 5,
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "hybrid_search",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "query": "example document",
    "topK": 5,
    "tenantId": "tenant_XXX",
    "hybridConfig": {
      "semanticWeight": 0.7,
      "keywordWeight": 0.3
    }
  }
}

连接

  • create_connection: 创建与外部服务的新连接
  • list_connections: 列出所有连接
  • get_connection: 获取特定连接的详细信息
  • update_connection: 更新连接
  • revoke_connection: 撤销连接
{
  "name": "create_connection",
  "arguments": {
    "tenantId": "tenant_XXX",
    "namespaceId": "namespace_XXX",
    "name": "My Connection",
    "connector": "GOOGLE_DRIVE",
    "clientRedirectUrl": "https://your-app.com/callback"
  }
}
{
  "name": "list_connections",
  "arguments": {
    "tenantId": "tenant_XXX",
    "namespaceId": "namespace_XXX"
  }
}
{
  "name": "get_connection",
  "arguments": {
    "tenantId": "tenant_XXX",
    "namespaceId": "namespace_XXX",
    "connectionId": "connection_XXX"
  }
}
{
  "name": "update_connection",
  "arguments": {
    "tenantId": "tenant_XXX",
    "namespaceId": "namespace_XXX",
    "connectionId": "connection_XXX",
    "name": "Updated Connection Name",
    "clientRedirectUrl": "https://your-app.com/updated-callback"
  }
}
{
  "name": "revoke_connection",
  "arguments": {
    "tenantId": "tenant_XXX",
    "namespaceId": "namespace_XXX",
    "connectionId": "connection_XXX"
  }
}

示例提示

以下是一些在配置 MCP 服务器后可以与 Claude 或 Cursor 一起使用的示例提示:

  • "在我的 SourceSync 知识库中搜索有关机器学习的信息。"
  • "将这篇文章摄取到我的 SourceSync 知识库中:[URL]"
  • "在 SourceSync 中为我的项目文档创建一个新的命名空间。"
  • "列出我的 SourceSync 命名空间中的所有文档。"
  • "从我的 SourceSync 命名空间中获取文档 [document_id] 的文本内容。"

故障排除

连接问题

如果您在连接 SourceSync.ai MCP 服务器时遇到问题:

  1. 验证路径:确保配置中的所有路径都是绝对路径,而不是相对路径。

  2. 检查权限:确保服务器文件具有执行权限 (chmod +x dist/index.js)。

  3. 启用开发者模式:在 Claude Desktop 中,启用开发者模式并检查 MCP 日志文件。

  4. 测试服务器:直接从命令行运行服务器:

    node /path/to/sourcesyncai-mcp/dist/index.js
    
  5. 重启 AI 客户端:进行更改后,完全重启 Claude Desktop 或 Cursor。

  6. 检查环境变量:确保所有必需的环境变量都已正确设置。

调试日志

要进行详细日志记录,请添加 DEBUG 环境变量:


开发

项目结构

  • src/index.ts: 主要入口点和服务器设置
  • src/schemas.ts: 所有工具的模式定义
  • src/sourcesync.ts: 用于与 SourceSync.ai API 交互的客户端
  • src/sourcesync.types.ts: TypeScript 类型定义

构建和测试

# 构建项目
npm run build

# 运行测试
npm test

许可证

MIT

链接

文档内容检索工作流程:

  1. 首先,使用 getDocumentsincludeConfig.parsedTextFileUrl: true 获取带有内容 URL 的文档
  2. 从文档响应中提取 URL
  3. 使用 fetchUrlContent 检索实际内容:
{
  "name": "fetchUrlContent",
  "arguments": {
    "url": "https://example.com"
  }
}

推荐服务器

mult-fetch-mcp-server

mult-fetch-mcp-server

一个多功能的、符合 MCP 规范的网页内容抓取工具,支持多种模式(浏览器/Node)、格式(HTML/JSON/Markdown/文本)和智能代理检测,并提供双语界面(英语/中文)。

精选
本地
Knowledge Graph Memory Server

Knowledge Graph Memory Server

为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。

精选
本地
Hyperbrowser

Hyperbrowser

欢迎来到 Hyperbrowser,人工智能的互联网。Hyperbrowser 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:

精选
本地
Exa MCP Server

Exa MCP Server

一个模型上下文协议服务器,它使像 Claude 这样的人工智能助手能够以安全和受控的方式,使用 Exa AI 搜索 API 执行实时网络搜索。

精选
mcp-perplexity

mcp-perplexity

Perplexity API 的 MCP 服务器。

精选
MCP Web Research Server

MCP Web Research Server

一个模型上下文协议服务器,使 Claude 能够通过集成 Google 搜索、提取网页内容和捕获屏幕截图来进行网络研究。

精选
PubMedSearch MCP Server

PubMedSearch MCP Server

一个模型内容协议(Model Content Protocol)服务器,提供从 PubMed 数据库搜索和检索学术论文的工具。

精选
YouTube Translate MCP

YouTube Translate MCP

一个模型上下文协议服务器,可以通过文字稿、翻译、摘要和各种语言的字幕生成来访问 YouTube 视频内容。

精选
mcp-codex-keeper

mcp-codex-keeper

作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。

精选
Perplexity Deep Research MCP

Perplexity Deep Research MCP

一个服务器,它允许 AI 助手使用 Perplexity 的 sonar-deep-research 模型进行网络搜索,并提供引用支持。

精选