research mcp server

Local 2025-09-01 00:18:34 0

The server functions as an MCP server to interact with Notion for retrieving and creating survey data, integrating with the Claude Desktop Client for conducting and reviewing surveys.


This is a repository for the research project on the MCP server.

Research Server MCP server

Features

  • Work as an MCP server.
  • Retrieve survey data from Notion.
  • Create survey pages in Notion.

Prerequisites

  • Python 3.12.1 or later
  • uv 0.5.25 or later
  • Claude Desktop Client

How to Use

  1. Clone the repository.
  2. Obtain a Notion token from Notion Integrations.
  3. Create a database page in Notion and retrieve the database ID. The database ID is the last part of the page URL.
  4. Create a .env file as shown below:
    NOTION_TOKEN=[YOUR_NOTION_TOKEN]
    NOTION_ROOT_DATABASE_ID=[YOUR_NOTION_DATABASE_ID]
  5. Add an MCP server definition to claude_desktop.json:
    {
      ...
      "mcpServers": {
        "Research MCP Server": {
          "command": "uv",
          "args": [
            "run",
            "--with", "mcp[cli]",
            "--with", "notion-client",
            "--with", "pydantic",
            "mcp",
            "run",
            "/path/to/research-mcp-server/server.py"
          ]
        }
      }
    }
  6. Restart the Claude Desktop Client to launch the Research MCP Server.
  7. Ask Claude to perform a survey and review the results.
[
  {
    "description": "Get survey summaries",
    "inputSchema": {
      "properties": {},
      "title": "get_survey_summariesArguments",
      "type": "object"
    },
    "name": "get_survey_summaries"
  },
  {
    "description": "Get survey summary",
    "inputSchema": {
      "properties": {
        "page_id": {
          "title": "Page Id",
          "type": "string"
        }
      },
      "required": [
        "page_id"
      ],
      "title": "get_survey_summaryArguments",
      "type": "object"
    },
    "name": "get_survey_summary"
  },
  {
    "description": "Get property definition for survey summary",
    "inputSchema": {
      "properties": {},
      "title": "get_property_definitionArguments",
      "type": "object"
    },
    "name": "get_property_definition"
  },
  {
    "description": "     Update survey summary property     To know definition of properties, use `get_property_definition` tool in advance.     ",
    "inputSchema": {
      "$defs": {
        "SetPageProperty": {
          "properties": {
            "date_value": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Date Value, Only for date."
            },
            "multi_select_values": {
              "anyOf": [
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Multi select property Value. they must be option ids. Only for multi_select."
            },
            "number_value": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Number property value, Only for number."
            },
            "property_name": {
              "title": "Property Name",
              "type": "string"
            },
            "rich_text_value": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Rich text value. It must be a plain text. Only for rich_text."
            },
            "selection_value": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Selection property value. It must be an option id. Only for select."
            },
            "status_value": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status property value. It must be an option id. Only for status."
            },
            "type": {
              "title": "Type",
              "type": "string"
            }
          },
          "required": [
            "property_name",
            "type"
          ],
          "title": "SetPageProperty",
          "type": "object"
        }
      },
      "properties": {
        "page_id": {
          "title": "Page Id",
          "type": "string"
        },
        "updates": {
          "items": {
            "$ref": "#/$defs/SetPageProperty"
          },
          "title": "Updates",
          "type": "array"
        }
      },
      "required": [
        "page_id",
        "updates"
      ],
      "title": "update_survey_summary_propertyArguments",
      "type": "object"
    },
    "name": "update_survey_summary_property"
  },
  {
    "description": "",
    "inputSchema": {
      "properties": {
        "body": {
          "title": "Body",
          "type": "string"
        },
        "page_id": {
          "title": "Page Id",
          "type": "string"
        }
      },
      "required": [
        "page_id",
        "body"
      ],
      "title": "update_survey_summary_blockArguments",
      "type": "object"
    },
    "name": "update_survey_summary_block"
  },
  {
    "description": "",
    "inputSchema": {
      "properties": {
        "body": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Body"
        },
        "title": {
          "title": "Title",
          "type": "string"
        }
      },
      "required": [
        "title"
      ],
      "title": "create_new_survey_summaryArguments",
      "type": "object"
    },
    "name": "create_new_survey_summary"
  }
]