Skip to main content
Glama

SourceSync.ai MCP 服务器

铁匠徽章

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

特征

  • 管理命名空间以组织知识

  • 从各种来源(文本、URL、网站、外部服务)获取内容

  • 检索、更新和管理知识库中存储的文档

  • 针对您的知识库执行语义和混合搜索

  • 直接从解析的文本 URL 访问文档内容

  • 管理与外部服务的连接

  • 默认配置支持无缝 AI 集成

Related MCP server: MCP Boilerplate

安装

使用 npx 运行

# Install and run with your API key and tenant 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

手动安装

# Clone the repository
git clone https://github.com/yourusername/sourcesyncai-mcp.git
cd sourcesyncai-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Run the server
node dist/index.js

在光标上运行

要在 Cursor 中配置 SourceSync.ai MCP:

  1. 打开游标设置

  2. 前往Features > MCP Servers

  3. 点击+ Add New MCP Server

  4. 输入以下内容:

    • 名称: sourcesyncai-mcp (或您喜欢的名称)

    • 类型: command

    • 命令: env SOURCESYNCAI_API_KEY=your-api-key npx -y sourcesyncai-mcp

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

在风帆冲浪中奔跑

将其添加到您的./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 类型定义

构建和测试

# Build the project
npm run build

# Run tests
npm test

执照

麻省理工学院

链接

文档内容检索工作流程:

  1. 首先,使用getDocumentsincludeConfig.parsedTextFileUrl: true来获取文档及其内容 URL

  2. 从文档响应中提取 URL

  3. 使用fetchUrlContent检索实际内容:

{
  "name": "fetchUrlContent",
  "arguments": {
    "url": "https://example.com"
  }
}

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pbteja1998/sourcesyncai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server