返回市场
源同步ai-mcp

源同步ai-mcp

作者:sitegpt3 星标更新:2025-03-09

项目介绍

技术文档摘要

SourceSync.ai MCP Server

smithery 徽章

这是为 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安装 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. 转到 功能 > MCP服务器
  3. 点击 + 添加新MCP服务器
  4. 输入以下信息:
    • 名称:sourcesyncai-mcp(或您喜欢的名称)
    • 类型:命令
    • 命令:env SOURCESYNCAI_API_KEY=your-api-key npx -y sourcesyncai-mcp

添加后,您可以使用Cursor的AI功能描述您的知识管理需求来使用SourceSync.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": "这是一个用于摄取的示例文档。",
        "metadata": {
          "category": "示例",
          "author": "AI助手"
        }
      }
    },
    "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": "文档"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_sitemap",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "SITEMAP",
      "config": {
        "url": "https://example.com/sitemap.xml",
        "metadata": {
          "source": "站点地图",
          "网站": "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": "网站",
          "域名": "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",
          "工作区": "我的工作区"
        }
      }
    },
    "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",
          "拥有者": "user@example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_dropbox",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "DROPBOX",
      "config": {
        "connectionId": "connection_XXX",
        "metadata": {
          "source": "dropbox",
          "账户": "user@example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_onedrive",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "ONEDRIVE",
      "config": {
        "connectionId": "connection_XXX",
        "metadata": {
          "source": "onedrive",
          "账户": "user@example.com"
        }
      }
    },
    "tenantId": "tenant_XXX"
  }
}
{
  "name": "ingest_box",
  "arguments": {
    "namespaceId": "your_namespace_id",
    "ingestConfig": {
      "source": "BOX",
      "config": {
        "connectionId": "connection_XXX",
        "metadata": {
          "source": "box",
          "拥有者": "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

链接

  • [SourceSync